1. Tổng hợp dữ liệu
Những hiểu biết sâu sắc có ý nghĩa sẽ không bao giờ được quan sát nếu không tổng hợp dữ liệu thích hợp, phải không? Trên thực tế, đó là lý do tại sao chúng ta sử dụng bảng tổng hợp rất nhiều trong excel. Vì vậy, chúng ta có thể nói rằng đây là một bước quan trọng trong phân tích dữ liệu và thường liên quan đến việc áp dụng các hàm tổng hợp như tổng, trung bình, đếm, v.v. cho các nhóm dữ liệu
1.1 Nhóm dữ liệu
groupby
với một cột duy nhất: Phương pháp này cho phép bạn nhóm dữ liệu dựa trên một hoặc nhiều cột. Bạn có thể coi nó như một phiên bản mạnh mẽ củaGROUP BY
câu lệnh SQL.
Trước tiên, bạn cần chuyển tên cột mà bạn muốn nhóm dữ liệu, Sau đó, bạn có thể sử dụng dữ liệu được nhóm và chọn cột mà bạn muốn so sánh dữ liệu được nhóm này, sau đó chọn hàm tổng hợp (nghĩa là, tổng, tối đa, tối thiểu, v.v.).
Khi bạn áp dụng hàm tổng hợp cho dữ liệu được nhóm mà không chỉ định cột, hàm đó sẽ được áp dụng cho tất cả các cột số trong DataFrame.
Ví dụ: Giả sử bạn có dữ liệu bán hàng và bạn muốn nhóm dữ liệu đó theo cột “Danh mục” và tính tổng doanh số trong mỗi danh mục.
import pandas as pd
# Sample DataFrame
data = {'Category': ['Electronics', 'Clothing', 'Electronics', 'Clothing'],
'Sales': [1000, 500, 800, 500]}
df = pd.DataFrame(data)
# Grouping by 'Category'
grouped_data = df.groupby('Category')
# Choosing sales column to compare with grouped data and using sum function
# This gives the total sales for each category.
total_sales = grouped_data['Sales'].sum()
print(total_sales)
--------------------------------------------------------------------------
output:
Category
Clothing 1000
Electronics 1800
Name: Sales, dtype: int64
groupby
với nhiều cột: Bạn thậm chí có thể nhóm nhiều cột bằng cách chuyển danh sách các cột bạn muốn nhóm theo.
Ví dụ: Giả sử bạn có một tập dữ liệu chứa thông tin học sinh bao gồm điểm của họ ở các môn học khác nhau và bạn muốn nhóm dữ liệu theo cả hai cột “Lớp” và “Giới tính”, sau đó tính toán các số liệu thống kê như điểm trung bình, điểm tối thiểu và điểm tối đa cho môn Toán. điểm môn học.
import pandas as pd
# Sample DataFrame
data = {'Class': ['A', 'B', 'A', 'B', 'A', 'B'],
'Gender': ['Male', 'Male', 'Female', 'Female', 'Male', 'Female'],
'Math_Score': [85, 92, 78, 89, 90, 86],
'English_Score': [88, 94, 80, 92, 92, 88]}
df = pd.DataFrame(data)
# Grouping by 'Class' and 'Gender' and calculating statistics
grouped_data = df.groupby(['Class', 'Gender'])
# Calculate the mean for Math_score
agg_results = grouped_data['Math_Score'].mean()
print(agg_results)
--------------------------------------------------------------------
output:
Math_Score
Class Gender
A Female 86.000000
Male 87.500000
B Female 87.000000
Male 92.000000
- Áp dụng hàm tổng hợp cho dữ liệu được nhóm mà không chỉ định cột:
Trong những trường hợp như vậy, hàm này sẽ được áp dụng cho tất cả các cột số trong DataFrame được nhóm.
import pandas as pd
# Sample DataFrame
data = {'Class': ['A', 'B', 'A', 'B', 'A', 'B'],
'Gender': ['Male', 'Male', 'Female', 'Female', 'Male', 'Female'],
'Math_Score': [85, 92, 78, 89, 90, 86],
'English_Score': [88, 94, 80, 92, 92, 88]}
df = pd.DataFrame(data)
# Grouping by 'Class' and 'Gender'
grouped_data = df.groupby(['Class', 'Gender'])
# Applying the mean aggregation function to all numeric columns
aggregated_data = grouped_data.mean()
print(aggregated_data)
----------------------------------------------------------------------
output:
Math_Score English_Score
Class Gender
A Female 82.000000 84.000000
Male 87.500000 90.000000
B Female 87.500000 90.000000
Male 92.000000 94.000000
1.2 Hàm tổng hợp
Các hàm tổng hợp rất cần thiết để tóm tắt dữ liệu trong các nhóm. Và các Hàm tổng hợp phổ biến là sum(), max(), min(), Mean(), middle(), count(), agg () — điều này cho phép bạn áp dụng các funcitons tổng hợp tùy chỉnh.
Ví dụ: Giả sử bạn muốn áp dụng nhiều hàm tổng hợp (trung bình, tối thiểu và tối đa) cùng một lúc cho Điểm Toán. Bạn cũng muốn kiểm tra nhiều hàm tổng hợp này cho hai chủ đề (đặc biệt là một số cột).
import pandas as pd
# Sample DataFrame
data = {'Class': ['A', 'B', 'A', 'B', 'A', 'B'],
'Gender': ['Male', 'Male', 'Female', 'Female', 'Male', 'Female'],
'Math_Score': [85, 92, 78, 89, 90, 86],
'English_Score': [88, 94, 80, 92, 92, 88],
'Physics_Score': [78, 90, 85, 92, 88, 84]}
df = pd.DataFrame(data)
# Grouping by 'Class' and 'Gender' and calculating statistics
grouped_data = df.groupby(['Class', 'Gender'])
# Calculate the mean, min, and max scores for Math_score
agg_results = grouped_data.Math_Score.agg(['mean', 'min', 'max'])
print(agg_results)
# Applying aggregation functions to 'Math_Score' and 'Physics_Score'
aggregated_data = grouped_data.agg({
'Math_Score': ['mean', 'min', 'max'],
'Physics_Score': ['mean', 'min', 'max']
})
print(aggregated_data)
----------------------------------------------------------------------
output:
mean min max
Class Gender
A Female 78.0 78 78
Male 87.5 85 90
B Female 87.5 86 89
Male 92.0 92 92
-----------------------------------------------------------------------
Math_Score Physics_Score
mean min max mean min max
Class Gender
A Female 82.000000 78 86 81.500000 78 85
Male 87.500000 85 90 83.000000 78 88
B Female 87.500000 86 89 88.000000 85 92
Male 92.000000 92 92 91.000000 88 92
1.3 Bảng tổng hợp và bảng chéo
Nếu bạn đã làm việc với Excel, bạn hẳn đã biết chúng hiệu quả như thế nào. Chúng cung cấp một cách có cấu trúc để sắp xếp và phân tích dữ liệu từ các góc độ khác nhau.
- chúng ta có thể sử dụng
pd.pivot_table
để tạo bảng tổng hợp. - Bảng chéo (crosstabs) là một phương pháp khác để tổng hợp dữ liệu, đặc biệt khi xử lý các biến phân loại bằng cách sử dụng
pd.crosstab
import pandas as pd
# Sample DataFrame with sales data
data = {'Category': ['Electronics', 'Clothing', 'Electronics', 'Clothing'],
'Region': ['North', 'South', 'North', 'South'],
'Sales': [1000, 500, 800, 750],
'Profit': [150, 50, 120, 100]}
df = pd.DataFrame(data)
# Pivot Table: Sum of Sales by Category and Region
pivot_table = pd.pivot_table(df, index='Category', columns='Region', values='Sales', aggfunc='sum')
# Cross-Tabulation: Count of Category by Region
cross_tab = pd.crosstab(df['Category'], df['Region'])
print("Pivot Table:")
print(pivot_table)
print("\nCross-Tabulation:")
print(cross_tab)
----------------------------------------------------------------------
Pivot Table:
Region North South
Category
Clothing NaN 1250
Electronics 1800 NaN
Cross-Tabulation:
Region North South
Category
Clothing 0 2
Electronics 2 0
- Lô KDE (Ước tính mật độ hạt nhân):
df['Value'].plot(kind='kde')
- Sơ đồ mật độ:
df['Value'].plot(kind='density')
- Âm mưu Boxen:
df.plot(y='Value', kind='boxen')
3. Xử lý dữ liệu chuỗi thời gian
Dữ liệu chuỗi thời gian bao gồm các điểm dữ liệu được thu thập hoặc ghi lại ở những khoảng thời gian cụ thể.
3.1 Làm việc với dữ liệu DateTime
Dữ liệu DateTime rất cần thiết cho việc phân tích chuỗi thời gian, với gấu trúc, chúng ta không phải lo lắng về việc phân tích đó nữa vì nó cung cấp sự hỗ trợ mạnh mẽ để làm việc với ngày và giờ.
pd.to_datetime
: Phương pháp này cho phép bạn chuyển đổi chuỗi ngày giờ của mình thành chuỗi ngày giờ gấu trúc mà qua đó bạn có thể thực hiện nhiều phân tích liền mạch hơn. Bạn có thể nhận được năm, tháng, ngày và giờ.
import pandas as pd
# Sample DataFrame with a DateTime column
data = {'DateTime': ['2023-01-01 08:30:00', '2023-02-01 14:45:00', '2023-03-01 20:15:00']}
df = pd.DataFrame(data)
# Convert the 'DateTime' column to DateTime
df['DateTime'] = pd.to_datetime(df['DateTime'])
# Extract year, month, day, and hour
df['Year'] = df['DateTime'].dt.year
df['Month'] = df['DateTime'].dt.month
df['Day'] = df['DateTime'].dt.day
df['Hour'] = df['DateTime'].dt.hour
print(df)
Ource: https://python.plainenglish.io/pandas-demystified-a-comprehensive-handbo...