Tương tự như mệnh đề SQL GROUP BY hàm pandas import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 8 dùng để gom dữ liệu giống nhau thành các nhóm và thực hiện các hàm tổng hợp trên dữ liệu đã nhóm. Nhóm theo hoạt động liên quan đến việc chia tách dữ liệu, áp dụng một số chức năng và cuối cùng là tổng hợp kết quả
Trong pandas, bạn có thể sử dụng import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 9 với sự kết hợp của Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 0, Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 1, Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 2, tổng hợp() và nhiều phương thức khác. Trong bài viết này, tôi sẽ trình bày cách nhóm theo một cột hoặc nhiều cột bằng cách sử dụng tập hợp với các ví dụ
1. Pandas groupby() Cú pháp
Dưới đây là cú pháp của hàm import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 9, hàm này nhận một số tham số được giải thích bên dưới và trả về đối tượng Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 4 chứa thông tin về các nhóm
# Syntax of DataFrame.groupby() DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=<no_default>, observed=False, dropna=True)- Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 5 – Danh sách tên cột để nhóm theo
- Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 6 – Mặc định là 0. Phải mất 0 hoặc 'chỉ mục', 1 hoặc 'cột'
- Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 7 – Được sử dụng với MultiIndex
- Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 8 – đầu ra được nhóm theo kiểu sql
- Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 9 – Mặc định là True. Chỉ định có sắp xếp theo nhóm hay không
- import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 30 – thêm khóa nhóm hay không
- import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 31 – không dùng nữa trong các phiên bản mới
- import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 32 – Điều này chỉ áp dụng nếu bất kỳ nhóm nào là Phân loại
- import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 33 – Mặc định là Sai. Sử dụng True để bỏ Không/Nan trên các phím sory
Để giải thích một số ví dụ về cách thực hiện nhóm theo, trước tiên, hãy tạo một DataFrame đơn giản với sự kết hợp của các cột chuỗi và số
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df)Sản lượng dưới sản lượng
Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.02. Pandas groupby() Ví dụ
Như tôi đã nói ở trên, hàm import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 9 trả về đối tượng Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 4 sau khi thu thập dữ liệu giống hệt nhau thành các nhóm từ DataFrame của gấu trúc. Đối tượng này chứa một số phương thức ( Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 0, import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 37 e. t. c) có thể được sử dụng để tổng hợp các hàng được nhóm
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 3Sản lượng dưới sản lượng
Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 43. Pandas groupby() trên hai hoặc nhiều cột
Hầu hết thời gian chúng tôi cần thực hiện nhóm trên nhiều cột của DataFrame, bạn có thể thực hiện việc này bằng cách chuyển danh sách các nhãn cột mà bạn muốn thực hiện nhóm theo trên
Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 5Sản lượng dưới sản lượng
Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 64. Thêm chỉ mục vào dữ liệu được nhóm
Theo mặc định, kết quả import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 9 không bao gồm Chỉ mục hàng, bạn có thể thêm chỉ mục bằng DataFrame. phương thức reset_index()
Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 8Sản lượng dưới sản lượng
Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 95. Bỏ NA /None/Nan (trên phím nhóm) khỏi Kết quả
Bạn cũng có thể chọn có bao gồm NA/None/Nan trong khóa nhóm hay không bằng cách đặt tham số import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 33. Theo mặc định, giá trị của import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 33 được đặt thành Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 41. vì vậy để không bao gồm các giá trị Không/Nan trên các khóa nhóm được đặt tham số Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 42
Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 46. Sắp xếp kết quả groupby() theo Khóa nhóm
Theo mặc định, hàm groupby() sắp xếp kết quả theo khóa nhóm do đó sẽ mất thêm thời gian, nếu bạn gặp vấn đề về hiệu suất và không muốn sắp xếp nhóm theo kết quả, bạn có thể tắt chức năng này bằng cách sử dụng thông số Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 43
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 0Nếu bạn muốn sắp xếp thứ tự khóa giảm dần, hãy sử dụng bên dưới
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 1Trong trường hợp bạn muốn sắp xếp theo một khóa khác, bạn có thể thực hiện bằng cách sử dụng DataFrame. áp dụng() chức năng
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 27. Áp dụng nhiều tập hợp hơn
Bạn cũng có thể tính toán nhiều tập hợp cùng một lúc trong pandas bằng cách chuyển danh sách các hàm agg tới Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 44
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 3Sản lượng dưới sản lượng
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 4Ví dụ trên tính toán Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 45 và Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 46 trên cột Courses Fee Duration Discount 0 Spark 22000 30days 1000.0 1 PySpark 25000 50days 2300.0 2 Hadoop 23000 55days 1000.0 3 Python 24000 40days 1200.0 4 Pandas 26000 60days 2500.0 5 Hadoop 25000 35days NaN 6 Spark 25000 30days 1400.0 7 Python 22000 50days 1600.0 8 NA 1500 40days 0.0 47. Hãy mở rộng điều này để tính toán các tập hợp khác nhau trên các cột khác nhau
Lưu ý rằng việc áp dụng một số tập hợp cho một cột duy nhất trong pandas DataFrame sẽ dẫn đến MultiIndex
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 5Sản lượng dưới sản lượng. Lưu ý rằng điều này tạo ra MultiIndex. Làm việc với các cột có nhiều chỉ mục không dễ dàng vì vậy tôi khuyên bạn nên làm phẳng bằng cách đổi tên các cột
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 68. Ví dụ hoàn chỉnh về groupby() trong DataFrame
import pandas as pd technologies = ({ 'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"], 'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500], 'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'], 'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0] }) df = pd.DataFrame(technologies) print(df) 7Sự kết luận
Trong bài viết này, tôi đã đề cập đến cú pháp groupby() của Pandas và một số ví dụ về cách thu thập dữ liệu giống hệt nhau thành các nhóm. Tôi hy vọng bạn đã học cách chạy nhóm theo một số cột, sắp xếp dữ liệu được nhóm, bỏ qua giá trị null và nhiều ví dụ khác