本文用到的表格内容如下:
先来看一下数据情形
import pandas as pd
life_df = pd.read_excel(r'C:\Users\admin\Desktop\生活用品表.xlsx')
print(life_df)
result:
分类 编号 名称
0 水果 0 苹果
1 水果 1 橙子
2 生活用品 2 牙刷
3 生活用品 3 冰箱
4 生活用品 4 电视机
5 食物 0 苹果
6 食物 1 橙子
7 家电 3 冰箱
8 家电 4 电视机
9 大件 3 冰箱
10 大件 4 电视机
11 大件 5 茶几
12 生活用品 7 暖手宝宝
13 小说 8 红楼梦
1.使用多种方式进行汇总
前面2篇提到的按列分组和按Series分组都是直接在DataFrameGroupBy对象上调用的,这样分组以后所有列都做的同一种汇总运算,且一次只能使用一种汇总方式。若要使用多种汇总方式,还是要使用aggregate方法实现
1.1 一次使用多种汇总方式
life_df = pd.read_excel(r'C:\Users\admin\Desktop\生活用品表.xlsx')
print(life_df.groupby("分类").aggregate(['sum', 'count']))
result:
编号 名称
sum count sum count
分类
大件 12 3 冰箱电视机茶几 3
家电 7 2 冰箱电视机 2
小说 8 1 红楼梦 1
水果 1 2 苹果橙子 2
生活用品 16 4 牙刷冰箱电视机暖手宝宝 4
食物 1 2 苹果橙子 2
1.2 针对不同的列做不同的汇总运算
life_df = pd.read_excel(r'C:\Users\admin\Desktop\生活用品表.xlsx')
print(life_df.groupby("分类").aggregate({"分类": "count", "名称": "sum"}))
result:
分类 名称
分类
大件 3 冰箱电视机茶几
家电 2 冰箱电视机
小说 1 红楼梦
水果 2 苹果橙子
生活用品 4 牙刷冰箱电视机暖手宝宝
食物 2 苹果橙子
2.对分组后的结果进行重置
通过前面的运行结果可知,DataFrameGroupBy对象经过汇总计算以后的形式并不是标准的DataFrame形式。为了能对分组结果作进一步处理,我们需要把非标准的DataFrame形式转换为标准的DataFrame形式,所使用到的方法就是重置索引。关于重置索引,具体可以参考索引重置一文,这里仅举一个例子
life_df = pd.read_excel(r'C:\Users\admin\Desktop\生活用品表.xlsx')
print(life_df.groupby("分类").aggregate(['sum', 'count']).reset_index())
result:
分类 编号 名称
sum count sum count
0 大件 12 3 冰箱电视机茶几 3
1 家电 7 2 冰箱电视机 2
2 小说 8 1 红楼梦 1
3 水果 1 2 苹果橙子 2
4 生活用品 16 4 牙刷冰箱电视机暖手宝宝 4
5 食物 1 2 苹果橙子 2