![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=1739541903-CxqDnMuUG7LSaYqC4qMDALa5230Laj99-0-2a7b92155e1577098b7f8624883a8103)
运行上述代码,创建的数据集如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_78.jpg?sign=1739541903-hPM0LKg7BEaIEsn9A7nJcskbMyjMWYzF-0-59f8ac3e24aff7ea84cfabf4a3bb4cc0)
可以使用level参数指定在某列上进行数据统计。例如,统计每个学生在两个学期的平均成绩,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_79.jpg?sign=1739541903-kvrt6tWvuhQ9Hx7rqlVZqY82v7MrzZVU-0-1330b56f644644d68c69294ae85ab69a)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_80.jpg?sign=1739541903-XVp9gLecU33vSkotZCzyBMWm6hdd12Le-0-c9a5920cb187597940efe29a8da09b88)
level参数不仅可以使用列名称,还可以使用列索引号。例如,统计每个学生每门课的平均成绩,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_81.jpg?sign=1739541903-FqvRYhOvwlYBlzA7o0IB9MBdwS4y9Ics-0-37fe8598028b94913e3e64e797bdfa06)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_82.jpg?sign=1739541903-lGLNcg67WPPGjFv0QcTFnengHKdm96UJ-0-b1452bea97bb147c71100b712b608513)
3.6.2 groupby()函数:分组聚合
下面重新创建一个关于3名学生学习成绩的数据集,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_83.jpg?sign=1739541903-mRtsQCC4yVlhFaVouVEevEW8lncKP9wd-0-d4cdeb4f4802f4d4a38fb5518f3409eb)
运行上述代码,创建的数据集如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_84.jpg?sign=1739541903-Ixf5wJEON9ambA5ezVPY5KuN1g8Py3jf-0-79bf7aabfe08558d4ec5e7cced20a617)
此外,groupby()函数可以实现对多个字段的分组统计。例如,统计每个学期学生每门课的平均成绩,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_85.jpg?sign=1739541903-s5bBtWKX51RpsQeVWebtpAUDCLtK2usT-0-bb0ec19c8bdae075d92ddb784a708b45)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_86.jpg?sign=1739541903-sYtwQsDV80OHZ1fpFkd5rJe5Fk2akmOc-0-d2bb89057fbef34e4d5be85c9922907f)
3.6.3 agg()函数:自定义聚合
在Python中,计算描述性统计指标通常使用describe()函数,如个数、平均数、标准差、最小值和最大值等,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_87.jpg?sign=1739541903-aJAvhQEPIICJdMvSx6chtxyQ9mSFkUnO-0-abf0f941bea9934d5ad03bd1dce76836)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_88.jpg?sign=1739541903-heRJ0XftUpJncrJCePk5wGPlDtjdpbe7-0-1a478cd1120b7bce36a6621012ee7861)
如果想要使用自定义的聚合函数,则只需将其传入aggregate()函数或agg()函数。例如,这里定义的是sum、mean、max、min,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_89.jpg?sign=1739541903-my13VUr5EIzJDCXxkCOOkcKKWCIlJ3HN-0-99bcda5c95fa9734a2a82ca8099b8570)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_90.jpg?sign=1739541903-N3k2lydiekrXUkoBTrUBN17y3GuSJM6M-0-c36a9d32f2cf6ae723afa743baae48d8)