![Python+Office:轻松实现Python办公自动化](https://wfqqreader-1252317822.image.myqcloud.com/cover/834/40107834/b_40107834.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.6 数据的聚合
数据聚合通过转换数据将每一个数组生成一个单一的数值。本节将会介绍按指定列聚合数据、分组聚合、自定义聚合等,使用的数据文件为“2020年两个学期学生考试成绩.xls”。
3.6.1 level参数:指定列聚合数据
在介绍数据聚合之前,还是创建一个关于4名学生学习成绩的数据集,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_77.jpg?sign=1739235557-r2q5QJc9F7BL2SnSleqMDylU1YrZ1HjK-0-b142a44171f8dff38463cf232d7d1f9a)
运行上述代码,创建的数据集如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_78.jpg?sign=1739235557-HfBWM27GslVJdu0t4XIhjV8rd2rjnaaB-0-ac4e7cc433a0b57bb79960af56f5ab0b)
可以使用level参数指定在某列上进行数据统计。例如,统计每个学生在两个学期的平均成绩,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_79.jpg?sign=1739235557-0nlNGbrfGP8a3xCG7MPQPCQqk8Isckzj-0-911d0f6fb17efc3697bc8ea0218f3acd)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_80.jpg?sign=1739235557-pJlXNfU5ur1y38C6JfEuWR0MQEYlaHLg-0-0c33edc9caeb982a451c437dd1ef3ca0)
level参数不仅可以使用列名称,还可以使用列索引号。例如,统计每个学生每门课的平均成绩,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_81.jpg?sign=1739235557-BolldgnF0nlPpWO7anR6TFajIDMAJyGh-0-d03060e8ba23cd09d2e3250b143434c9)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_82.jpg?sign=1739235557-ziBMK8yxigkZyTov1VpwUTVBISz8wxks-0-2dd5513867ac23d778dfcc42a82046a5)
3.6.2 groupby()函数:分组聚合
下面重新创建一个关于3名学生学习成绩的数据集,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_83.jpg?sign=1739235557-uJgHmD6vU1q4sZG9z0h1QG4OhSRvOSlA-0-9e89af5e56f0838f53f9165eab3323d5)
运行上述代码,创建的数据集如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_84.jpg?sign=1739235557-RHZlM95RY9pz7gotMMWDkIlkqSPc6urO-0-c4aa463fde2291bb400bfebbd56fea5f)
此外,groupby()函数可以实现对多个字段的分组统计。例如,统计每个学期学生每门课的平均成绩,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_85.jpg?sign=1739235557-qFNypWl4teOfLRibscBm12ndqpZO65MI-0-7c8df65e7770e7d8c2d694183582d120)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_86.jpg?sign=1739235557-J1d7MKCEhpbmjI53Vyhw7clMs9AtqeLM-0-801c0fc26177c104c544d01f54f3140e)
3.6.3 agg()函数:自定义聚合
在Python中,计算描述性统计指标通常使用describe()函数,如个数、平均数、标准差、最小值和最大值等,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_87.jpg?sign=1739235557-4x1uTu4evNH6hghX6dszHR4ebr9ukZis-0-4b0aa39bf5b2bed6b1cc632de33ac6fa)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_88.jpg?sign=1739235557-M8jACNs87K8CawfziBOdFJpkG3aXwxyF-0-345b5e874c9074a013dcaf163d2b879e)
如果想要使用自定义的聚合函数,则只需将其传入aggregate()函数或agg()函数。例如,这里定义的是sum、mean、max、min,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_89.jpg?sign=1739235557-Q05rhyOO6o1EVE13J80pApsa47YmikTf-0-84521f38ff67c1b106fb95bd6fc6457b)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_90.jpg?sign=1739235557-GXYlXLO10UoeCTWsO1fFIvDzXAQFiItF-0-11e394ec8087dcca6d4715ed28f697bc)