导读:
本文主要介绍利用
自定义函数
实现pandas数据聚合,约550字,正常阅读需要3~5分钟。
之前的例子(
传送门
:
python数据分析实战:pandas之分组聚合
;
python数据分析实战:pandas之层级聚合
)我们已经简单介绍了数据聚合的求和操作,此外常见的聚合还包括count,min,max,mean等。很多时候这些程序内部已经实现优化的操作并不能满足我们的实际需求,我们可以自行定制聚合函数,并应用在分组对象上。
问题描述:
利用逐小时降水资料,计算各站点的日降水总量。实际的观测站点可能会存在缺测,直接进行sum()求和操作,程序会滤去缺测值返回剩余有效值的和。如果存在的缺测过多,则返回的总降水偏差过大。现在需要设定一个阈值(如,0.1),当缺测比例超过这个阈值后,日总降水返回缺测,否则返回剩余有效值的和。
解决思路:
针对每一个分组,我们需要先统计其数据总长度和缺测数据总长度,再进行一个判断,若缺测值比例超过阈值则返回缺测,否则执行sum()操作。令x为df. PRE_1h的一个分组
统计数据长度
Records = x.count()
统计缺测长度
NA_rec = x.isnull().sum().
x.isnull()返回一个等长的逻辑序列,缺测记为True。再对结果进行sum()操作可以求得True的个数。
自定义聚合函数
具体过程:
定义聚合函数,打开文件
2.分组,自定义聚合:
最后,想要代码更加精简,可以用匿名函数代替sumpcp