Trong bài viết này, chúng ta sẽ tập trung vào hai chức năng phổ biến của Pandas là Groupby và Aggregation. Groupby là một trong những hàm được sử dụng phổ biến nhất trong Pandas để phân nhóm các bản ghi dữ liệu theo một hoặc nhiều cột và thực hiện các phép tính thống kê trên các nhóm đó. Aggregation cho phép chúng ta thực hiện các tính toán thống kê trên các nhóm dữ liệu. Chúng ta sẽ tìm hiểu cách sử dụng Groupby và Aggregation để phân tích và xử lý dữ liệu một cách hiệu quả.
Sử dụng Pandas để đọc dữ liệu
Pandas hỗ trợ đọc nhiều định dạng file khác nhau như CSV, Excel, JSON, SQL, HTML, và nhiều loại dữ liệu khác.
Để đọc một file CSV, bạn chỉ cần chạy lệnh sau:
import pandas as pd
dataframe = pd.read_csv('filename.csv')
Có thể bất cứ file nào có đuôi CSV đều có thể được đọc bằng cách sử dụng hàm read_csv trong Pandas. Ngoài ra, pandas còn hỗ trợ đọc file Excel bằng cách sử dụng hàm read_excel.
Nội dung của file csv mẫu như sau:
country,price
Vietnam,20
Vietnam,25
Japan,30
Japan,35
Japan,40
USA,50
USA,55
Groupby trong Pandas
Groupby là một trong những hàm được sử dụng phổ biến nhất trong Pandas để phân nhóm các bản ghi dữ liệu theo một hoặc nhiều cột và thực hiện các phép tính thống kê trên các nhóm đó.
Ví dụ, để tính trung bình giá nhà của các quốc gia khác nhau, bạn có thể sử dụng hàm groupby:
import pandas as pd
dataframe = pd.read_csv('filename.csv')
grouped_data = dataframe.groupby('country')['price'].mean()
Trong đó ‘country’ là tên cột dữ liệu chứa thông tin về quốc gia, ‘price’ là tên cột giá.
Kết quả là:
country
Japan 35.0
USA 52.5
Vietnam 22.5
Name: price, dtype: float64
Tăng tốc Groupby bằng cách sử dụng Aggregation
Trong Pandas, Aggregation cho phép chúng ta thực hiện các tính toán thống kê trên các nhóm dữ liệu. Các hàm Aggregation phổ biến trong Pandas bao gồm sum, mean, count, std, min, và max.
Ví dụ, để tính toán giá trị trung bình, giá trị lớn nhất và nhỏ nhất cho các quốc gia khác nhau, bạn có thể sử dụng hàm agg:
import pandas as pd
dataframe = pd.read_csv('filename.csv')
grouped_data = dataframe.groupby('country')['price'].agg(['mean', 'max', 'min'])
Kết quả là:
mean max min
country
Japan 35.0 40 30
USA 52.5 55 50
Vietnam 22.5 25 20
Tạo DataFrame mới bằng cách sử dụng Groupby
Kết quả của một hàm groupby có thể trả về DataFrame hoặc Series. Bạn cũng có thể sử dụng phương thức reset_index () của đối tượng groupby để tạo một DataFrame mới.
Ví dụ, để tính số lượng sản phẩm được bán ra cho từng ngày, bạn có thể sử dụng hàm groupby và reset_index() như sau:
import pandas as pd
dataframe = pd.read_csv('filename.csv')
grouped_data = dataframe.groupby('date')['sales'].sum().reset_index()
Trong đó ‘date’ là tên của cột dữ liệu chứa ngày bán hàng, ‘sales’ là tên của cột dữ liệu chứa số lượng bán. File csv mẫu như sau:
date,sales
2022-01-01,100
2022-01-01,200
2022-01-02,150
2022-01-02,50
2022-01-03,300
2022-01-03,400
Kết quả là:
date sales
0 2022-01-01 300
1 2022-01-02 200
2 2022-01-03 700
Groupby với nhiều cột
Chúng ta có thể sử dụng nhiều cột trong hàm Groupby để phân nhóm dữ liệu. Sau đó, chúng ta có thể thực hiện các phép tính thống kê trên từng nhóm.
Ví dụ, để tính trung bình giá nhà của các quốc gia khác nhau theo khu vực và năm, bạn có thể sử dụng hàm groupby như sau:
import pandas as pd
dataframe = pd.read_csv('filename.csv')
grouped_data = dataframe.groupby(['region', 'year'])['price'].mean()
Dữ liệu mẫu:
region,year,price
North,2019,100
North,2020,150
North,2021,200
South,2019,120
South,2020,180
South,2021,240
East,2019,90
East,2020,135
East,2021,180
West,2019,110
West,2020,165
West,2021,220
Kết quả là:
region year
East 2019 90
2020 135
2021 180
North 2019 100
2020 150
2021 200
South 2019 120
2020 180
2021 240
West 2019 110
2020 165
2021 220
Name: price, dtype: int64
Aggregation với nhiều hàm tính toán
Khi chúng ta muốn thực hiện nhiều hàm Aggregation trên một nhóm dữ liệu, chúng ta có thể sử dụng phương thức agg và truyền vào một danh sách các hàm Aggregation.
Ví dụ, để tính số lượng sản phẩm được bán ra, giá trung bình và giá trị lớn nhất cho từng ngày, bạn có thể sử dụng hàm groupby và agg như sau:
import pandas as pd
dataframe = pd.read_csv('filename.csv')
grouped_data = dataframe.groupby('date')['sales', 'price'].agg(['sum', 'mean', 'max'])
Trong đó ‘date’ là tên của cột dữ liệu chứa ngày bán hàng, ‘sales’ là tên cột dữ liệu chứa số lượng bán, ‘price’ là tên cột dữ liệu chứa giá bán.
Chúng ta có thể sử dụng phương thức reset_index để tạo một DataFrame mới từ kết quả groupby:
new_dataframe = grouped_data.reset_index()
Tổng kết
Trong bài viết này, chúng ta đã tìm hiểu về cách sử dụng Pandas để phân nhóm và tính toán trên các nhóm dữ liệu. Chúng ta đã tìm hiểu về hàm groupby để phân nhóm các bản ghi dữ liệu và Aggregation để thực hiện các phép tính thống kê trên các nhóm đó. Chúng ta cũng đã tìm hiểu cách tạo DataFrame mới bằng cách sử dụng Groupby và reset_index. Hy vọng những kiến thức này sẽ giúp ích cho bạn trong công việc của mình.
Học bài tiếp theo: Kết hợp dữ liệu trong Python Pandas: Sự kết hợp hoàn hảo để làm việc với nhiều bảng dữ liệu!
Bài trước: Các bước thực hiện thao tác dữ liệu với Pandas trong Python
Quay về trang chủ của khoá học: Python Pandas – Thao tác và phân tích dữ liệu
