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

Leave a Reply

Discover more from Bệ Phóng Việt

Subscribe now to keep reading and get access to the full archive.

Continue reading