今天学习的是第四章--分组,我觉得是非常重要和有用的pandas知识。这章主要围绕着groubpy函数,介绍了在其之上的agg、transform、apply等函数的应用。
教材中总结了分组的三大操作:聚合、变换和过滤。
1. 聚合:
groupby对象已定义了一些聚合函数,如max等。但仍有不方便之处,所以引入了agg函数。agg函数的优势在于:
(1)agg函数可同时使用多个函数。
(2)可对特定的列使用特定的聚合函数。
(3) 使用自定义函数。
(4) 聚合结果重命名。
变换和过滤
变换函数的返回值为同长度的序列。当用自定义变换时需要使用 transform 方法,被调用的自定义函数, 其传入值为数据源的序列 ,与 agg 的传入类型是一致的,其最后的返回结果是行列索引与数据源一致的 DataFrame 。
跨列分组
这种应用场景只能使用apply函数了。
练习
1. 先过滤出所属 Country 数超过2个的汽车,即若该汽车的 Country 在总体数据集中出现次数不超过2则剔除,再按 Country 分组计算价格均值、价格变异系数、该 Country 的汽车数量,其中变异系数的计算方法是标准差除以均值,并在结果中把变异系数重命名为 CoV 。
2. 按照表中位置的前三分之一、中间三分之一和后三分之一分组,统计 Price 的均值。
这道题可以仿照‘分组依据的本质’那一段的方法来做。
3. 对类型 Type 分组,对 Price 和 HP 分别计算最大值和最小值,结果会产生多级索引,请用下划线把多级列索引合并为单层索引。
计算最大值和最小值使用agg函数就好了;多级索引合并为单层索引用到了第三章的知识。
4 对类型 Type 分组,对 HP 进行组内的 min-max 归一化。
分组再组内归一化,返回的应该为同长度的序列,此时应该使用transform函数。
5. 对类型 Type 分组,计算 Disp. 与 HP 的相关系数。
跨列计算肯定要考虑使用apply函数了。