数据准备
import pandas as pd
df = pd.read_excel(r"C:\Users\Desktop\Excel工作表.xlsx")
print(df)
"""
产品 分类 价格 销量
0 桃子 水果 12 2134
1 李子 水果 23 3123
2 香蕉 水果 12 534
3 饺子 生鲜 11 565
4 馒头 生鲜 9 6788
5 包子 生鲜 7 453
6 猪肉 肉类 20 211
7 牛肉 肉类 30 458
"""
方法介绍
# 1、单列聚合求平均、求和,返回DataFrame
df1 = df.groupby('分类', as_index=False)['价格'].mean()
print(df1)
df2 = df.groupby('分类', as_index=False)['价格'].sum()
print(df2)
# 2、多列聚合求平均,返回DataFrame
df2 = df.groupby('分类', as_index=False)[['价格', '销量']].mean()
print(df2)
# 3、多列多个聚合
df2 = df.groupby('分类')[['价格']].agg(['mean', 'max'])
print(df2)
# 4、对聚合结果重命名,返回为DataFrame
df2 = df.groupby('分类', as_index=False)[['价格']].agg(平均价格=('价格', 'mean'), 最高价格=('价格', 'max'))
print(df2)
# 5、多列分组,返回为DataFrame
df2 = df.groupby(['产品', '分类'], as_index=False).agg(平均价格=('价格', 'mean'))
print(df2)
# 6、多列分组并根据平均价格降序排序,返回为DataFrame
df2 = df.groupby(['产品', '分类'], as_index=False).agg(平均价格=('价格', 'mean')).sort_values(by='平均价格', ascending=False)
print(df2)
# 7、最大的top N
df2 = df.groupby('分类')['销量'].nlargest(2)
print(df2)
# 8、最小的top N
df2 = df.groupby('分类')['销量'].nsmallest(3)
print(df2)
# 9、唯一值
df2 = df.groupby('分类', as_index=False).agg(unique_values=('产品', 'unique'))
print(df2)
# 10、唯一值的数量
df2 = df.groupby('分类', as_index=False).agg(num_unique_values=('产品', 'nunique'))
print(df2)
# 11、分组的个数
df2 = df.groupby('分类').ngroups
print(df2)
# 12、获得某个特定分组
df2 = df.groupby(['分类', '产品']).get_group(('水果', '李子'))
print(df2)
# 13、rank函数。对每个组中的行进行排序。
df['dense_rank'] = df.groupby('分类')['价格'].rank(ascending=False, method='dense')
print(df)
# 14、将分组展开后求和
df['price'] = df.groupby('分类')['价格'].expanding().sum().values
print(df)
标签:False,df,分类,df2,groupby,print,pandas
From: https://www.cnblogs.com/rong-z/p/17606241.html