25个例子学会Pandas Groupby 操作!("掌握Pandas Groupby操作:25个实用案例解析!")
原创
一、Pandas Groupby 简介
在数据分析中,分组操作是一项非常常见的任务。Pandas 是 Python 中用于数据分析的一个强盛库,其中的 Groupby 功能可以帮助我们高效地进行数据分组、聚合、转换等操作。本文将通过 25 个实用案例,帮助大家掌握 Pandas Groupby 的使用。
二、基本 Groupby 操作
案例 1:按单一列分组
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob'],
'Age': [25, 30, 35, 40, 45],
'Salary': [5000, 6000, 7000, 8000, 9000]
}
df = pd.DataFrame(data)
grouped = df.groupby('Name')
print(grouped.sum())
案例 2:按多个列分组
grouped = df.groupby(['Name', 'Age'])
print(grouped.sum())
三、分组后的聚合操作
案例 3:计算分组后的总和
print(grouped.sum())
案例 4:计算分组后的平均值
print(grouped.mean())
案例 5:计算分组后的最大值
print(grouped.max())
案例 6:计算分组后的最小值
print(grouped.min())
案例 7:计算分组后的标准差
print(grouped.std())
案例 8:计算分组后的方差
print(grouped.var())
案例 9:计算分组后的计数
print(grouped.count())
四、分组后的转换操作
案例 10:计算每个组的总和,然后乘以 2
grouped_transformed = grouped.transform('sum') * 2
print(grouped_transformed)
案例 11:计算每个组的平均值,然后乘以 3
grouped_transformed = grouped.transform('mean') * 3
print(grouped_transformed)
案例 12:计算每个组的最大值,然后减去 1000
grouped_transformed = grouped.transform('max') - 1000
print(grouped_transformed)
五、分组后的合并操作
案例 13:合并分组后的总和和睦均值
grouped_sum = grouped.sum()
grouped_mean = grouped.mean()
merged = pd.concat([grouped_sum, grouped_mean], axis=1)
print(merged)
案例 14:合并分组后的最大值和最小值
grouped_max = grouped.max()
grouped_min = grouped.min()
merged = pd.concat([grouped_max, grouped_min], axis=1)
print(merged)
六、分组后的筛选操作
案例 15:筛选分组后平均工资大于 6000 的组
filtered = df.groupby('Name').filter(lambda x: x['Salary'].mean() > 6000)
print(filtered)
案例 16:筛选分组后工资总和大于 15000 的组
filtered = df.groupby('Name').filter(lambda x: x['Salary'].sum() > 15000)
print(filtered)
七、分组后的排序操作
案例 17:按工资总和对分组于是进行降序排序
grouped_sum = df.groupby('Name')['Salary'].sum()
sorted_grouped = grouped_sum.sort_values(ascending=False)
print(sorted_grouped)
案例 18:按工资平均值对分组于是进行升序排序
grouped_mean = df.groupby('Name')['Salary'].mean()
sorted_grouped = grouped_mean.sort_values(ascending=True)
print(sorted_grouped)
八、分组后的应用操作
案例 19:对每个组应用自定义函数计算工资总和的平方
def custom_func(group):
return group['Salary'].sum() ** 2
grouped_applied = df.groupby('Name')['Salary'].apply(custom_func)
print(grouped_applied)
案例 20:对每个组应用自定义函数计算工资总和与平均值的差
def custom_func(group):
return group['Salary'].sum() - group['Salary'].mean()
grouped_applied = df.groupby('Name')['Salary'].apply(custom_func)
print(grouped_applied)
九、纷乱 Groupby 操作
案例 21:对每个组按年龄分组,然后计算工资总和
grouped_complex = df.groupby(['Name', 'Age'])['Salary'].sum().reset_index()
print(grouped_complex)
案例 22:对每个组按年龄分组,然后计算工资平均值
grouped_complex = df.groupby(['Name', 'Age'])['Salary'].mean().reset_index()
print(grouped_complex)
案例 23:对每个组按年龄分组,然后计算工资总和,并筛选出总和大于 10000 的组
grouped_complex = df.groupby(['Name', 'Age'])['Salary'].sum().reset_index()
filtered = grouped_complex[grouped_complex['Salary'] > 10000]
print(filtered)
案例 24:对每个组按年龄分组,然后计算工资总和,并按总和进行降序排序
grouped_complex = df.groupby(['Name', 'Age'])['Salary'].sum().reset_index()
sorted_grouped = grouped_complex.sort_values(by='Salary', ascending=False)
print(sorted_grouped)
案例 25:对每个组按年龄分组,然后计算工资总和,并按总和进行降序排序,最后合并于是
grouped_complex = df.groupby(['Name', 'Age'])['Salary'].sum().reset_index()
sorted_grouped = grouped_complex.sort_values(by='Salary', ascending=False)
merged = pd.merge(df, sorted_grouped, on=['Name', 'Age'])
print(merged)
十、总结
Pandas Groupby 操作是数据分析中非常实用的工具,可以让我们迅速有效地对数据进行分组、聚合、转换等操作。通过以上 25 个案例,我们可以看到 Groupby 的强盛功能和多样性。掌握这些案例,可以帮助我们在实际工作中更加高效地处理数据。