- vừa được xem lúc

Tổng hợp dữ liệu trong DataFrame

0 0 19

Người đăng: Hạ Sơn

Theo Viblo Asia

Mở đầu

Khi làm việc với dữ liệu trong DataFrame, một trong những nhiệm vụ quan trọng là tổng hợp và tóm tắt dữ liệu . Trong Python, thư viện pandas cung cấp các phương thức như mean(), median(), min(), max(), std() để tính toán các con số tổng kết dễ dàng từ DataFrame. Từ đó, giúp bạn phân tích và tận dụng dữ liệu một cách hiệu quả, đưa ra những quyết định thông minh và linh hoạt. Trong bài viết này, chúng ta sẽ tìm hiểu về cách tổng hợp dữ liệu trong DataFrame bằng cách sử dụng thư viện pandas.

Pivot Tables

Trong pandas, pivot tables là một công cụ mạnh mẽ để tổng hợp dữ liệu. Chúng cho phép chúng ta xem tổng quan về dữ liệu và tính toán các giá trị thống kê cho các nhóm khác nhau trong DataFrame. Phương thức pivot_table() trong pandas là một cách tiện lợi để thực hiện tính toán nhóm.

Trong phương thứcpivot_table() có một số tham số quan trọng cần lưu ý:

  1. values: Tham số này xác định cột trong DataFrame mà bạn muốn tính toán hoặc tổng hợp.

  2. index: Tham số này xác định cột hoặc cột được sử dụng làm chỉ mục (index) cho bảng pivot. Dữ liệu sẽ được nhóm theo giá trị trong cột này.

  3. columns: Tham số này xác định cột được sử dụng để tạo các cột mới trong bảng pivot. Dữ liệu sẽ được phân loại thành các cột dựa trên giá trị trong cột này.

  4. aggfunc: Tham số này xác định hàm tính toán được áp dụng cho các giá trị trong bảng pivot. Có thể sử dụng các hàm tính toán như sum, mean, count, min, max, v.v.

  5. fill_value: Tham số này xác định giá trị sẽ được sử dụng để thay thế các giá trị thiếu trong bảng pivot. Giá trị thiếu được xác định dựa trên các quan sát không có dữ liệu tương ứng.

  6. margins: Tham số này là một cú pháp rút gọn để tính tổng hàng và cột của nội dung bảng pivot. Khi được đặt thành True, nó sẽ thêm hàng "All" (tổng cộng) và cột "All" vào bảng pivot.

Ví dụ:
Chúng ta có một DataFrame chứa thông tin về bán hàng của một công ty với các cột như 'Product', 'Sales_Date', 'Revenue', và 'Region'. Để tính tổng doanh thu theo từng khu vực, chúng ta có thể sử dụng pivot_table() như sau:

import pandas as pd # Tạo DataFrame
df = pd.DataFrame({ 'Product': ['A', 'B', 'A', 'B', 'A', 'B'], 'Sales_Date': ['01/01/2023', '02/01/2023', '01/01/2023', '02/01/2023', '01/01/2023', '02/01/2023'], 'Revenue': [1000, 2000, 1500, 2500, 1200, 1800], 'Region': ['North', 'South', 'North', 'South', 'North', 'South']
}) # Tính tổng doanh thu theo khu vực và thay thế giá trị thiếu bằng 0
pivot_table = df.pivot_table(values='Revenue', index='Region', aggfunc='sum', fill_value=0) # Tính tổng doanh thu theo khu vực và tính cả tổng hàng và cộttổng
pivot_table_with_margins = df.pivot_table(values='Revenue', index='Region', aggfunc='sum', margins=True) print(pivot_table)
print(pivot_table_with_margins)

Kết quả:

 Revenue
Region North 3700
South 4300
 Revenue
Region North 3700
South 4300
All 8000 

GroupBy

Ngoài pivot tables, pandas cung cấp phương thức groupby() để tổng hợp dữ liệu. Phương thức này cho phép chúng ta nhóm 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 này.

Cùng với groupby(), phương thức .agg() cho phép bạn áp dụng các hàm tuỳ chỉnh riêng cho một DataFrame, cũng như áp dụng các hàm cho nhiều cột của DataFrame cùng một lúc, giúp việc tổng hợp dữ liệu trở nên hiệu quả.

Ví dụ:
Chúng ta sẽ sử dụng cùng DataFrame từ ví dụ trước để tính tổng doanh thu theo khu vực bằng phương thứcgroupby() và tính tổng tích lũy (cumulative sum) và giá trị lớn nhất tích lũy (cumulative max) của doanh thu hàng tuần:

import pandas as pd # Tạo DataFrame
df = pd.DataFrame({ 'Product': ['A', 'B', 'A', 'B', 'A', 'B'], 'Sales_Date': ['01/01/2023', '02/01/2023', '01/01/2023', '02/01/2023', '01/01/2023', '02/01/2023'], 'Revenue': [1000, 2000, 1500, 2500, 1200, 1800], 'Region': ['North', 'South', 'North', 'South', 'North', 'South']
}) # Tính tổng doanh thu theo khu vực
grouped_data = df.groupby('Region')['Revenue'].sum() # Tính tổng tích lũy và giá trị lớn nhất tích lũy của doanh thu hàng tuần
cumulative_sum_max = df.groupby('Product')['Revenue'].agg(['cumsum', 'cummax']) print(grouped_data)
print(cumulative_sum_max)

Kết quả:

Region
North 3700
South 4300
Name: Revenue, dtype: int64
 cumsum cummax
0 1000 1000
1 2000 2000
2 2500 1500
3 4500 2500
4 3700 1500
5 6300 2500

Đếm và Xóa các phần tử trùng lặp (duplicate)

Đếm và loại bỏ các phần tử trùng lặp là một kỹ năng quan trọng để đảm bảo có số lượng chính xác, vì thường chúng ta không muốn đếm cùng một điều nhiều lần. Trong ví dụ này, chúng ta sẽ tạo ra các DataFrame mới bằng cách sử dụng các giá trị duy nhất từ bảng bán hàng.

Để thực hiện điều này, chúng ta có thể sử dụng phương thức unique() để lấy danh sách các giá trị duy nhất từ một cột trong DataFrame. Sau đó, chúng ta có thể sử dụng danh sách này để tạo DataFrame mới chỉ chứa các giá trị duy nhất.

Dưới đây là ví dụ về việc tạo các DataFrame mới bằng cách sử dụng các giá trị duy nhất từ cột 'Product' trong bảng bán hàng:

import pandas as pd # Tạo DataFrame
df = pd.DataFrame({ 'Product': ['A', 'B', 'A', 'B', 'A', 'B'], 'Sales_Date': ['01/01/2023', '02/01/2023', '01/01/2023', '02/01/2023', '01/01/2023', '02/01/2023'], 'Revenue': [1000, 2000, 1500, 2500, 1200, 1800], 'Region': ['North', 'South', 'North', 'South', 'North', 'South']
}) # Đếm số lượng giá trị duy nhất trong cột 'Sản phẩm'
unique_products = df['Product'].nunique() # Tạo DataFrame mới chỉ chứa các hàng không trùng lặp dựa trên cột 'Ngày bán'
unique_sales = df.drop_duplicates(subset='Sales_Date') print(unique_products)
print(unique_sales) 

Kết quả:

2 Product Sales_Date Revenue Region
0 A 01/01/2023 1000 North
1 B 02/01/2023 2000 South

Lời kết

Trong bài viết này, chúng ta đã tìm hiểu về cách tổng hợp dữ liệu trong DataFrame bằng cách sử dụng pivot tables, groupby() và các phương pháp khác trong thư viện pandas. Nhờ vào những công cụ này, chúng ta có thể dễ dàng thực hiện các phép tính nhóm, tính toán tùy chỉnh và xử lý dữ liệu trùng lặp để có cái nhìn tổng quan và chính xác về dữ liệu của mình, từ đó đưa ra những quyết định thông minh và đúng đắn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 3)

Tiếp tục phần 2 của series Pandas DataFrame nào. Let's go!!. Ở phần trước, các bạn đã biết được cách lấy dữ liệu một row hoặc column trong Pandas DataFame rồi phải không nào. 6 Hoc.

0 0 63

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 2)

Nào, chúng ta cùng đến với phần 2 của series Pandas DataFrame. Truy xuất Labels và Data. Bạn đã biết cách khởi tạo 1 DataFrame của mình, và giờ bạn có thể truy xuất thông tin từ đó. Với Pandas, bạn có thể thực hiện các thao tác sau:.

0 0 95

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 1)

Pandas DataFrame là một cấu trúc chứa dữ liệu hai chiều và các nhãn tương ứng của nó. DataFrames được sử dụng rộng rãi trong data science, machine learning, scientific computing và nhiều lĩnh vực sử dụng nhiều dữ liệu khác.

0 0 28

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 7)

Làm việc với Time Series trong Pandas. Pandas thật sự vượt trội trong việc xử lý với Time Series.

0 0 35

- vừa được xem lúc

Polars - thư viện xử lý dữ liệu DataFrame nhanh hơn cả Pandas!!!!

Hello mọi người, hẳn là mọi người vẫn hay dùng Pandas để xử lý dữ liệu dạng DataFrame đúng không nhỉ? Hôm nay mình sẽ giới thiệu một thư viện mới Polars - một thư viện xử lý dữ liệu dạng bảng biểu đượ

0 0 16

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 3)

Tiếp tục phần 2 của series Pandas DataFrame nào. Let's go!!. Ở phần trước, các bạn đã biết được cách lấy dữ liệu một row hoặc column trong Pandas DataFame rồi phải không nào. 6 Hoc.

0 0 63