五、练习

Ex1:汽车数据集

现有一份汽车数据集,其中 Brand, Disp., HP 分别代表汽车品牌、发动机蓄量、发动机输出。

In [45]: df = pd.read_csv('data/car.csv')
In [46]: df.head(3)
Out[46]: 
             Brand  Price Country  Reliability  Mileage   Type  Weight  Disp.   HP
0   Eagle Summit 4   8895     USA          4.0       33  Small    2560     97  113
1  Ford Escort   4   7402     USA          2.0       33  Small    2345    114   90
2   Ford Festiva 4   6319   Korea          4.0       37  Small    1845     81   63
  1. 先过滤出所属 Country 数超过2个的汽车,即若该汽车的 Country 在总体数据集中出现次数不超过2则剔除,再按 Country 分组计算价格均值、价格变异系数、该 Country 的汽车数量,其中变异系数的计算方法是标准差除以均值,并在结果中把变异系数重命名为 CoV
  2. 按照表中位置的前三分之一、中间三分之一和后三分之一分组,统计 Price 的均值。
  3. 对类型 Type 分组,对 PriceHP 分别计算最大值和最小值,结果会产生多级索引,请用下划线把多级列索引合并为单层索引。
  4. 对类型 Type 分组,对 HP 进行组内的 min-max 归一化。
  5. 对类型 Type 分组,计算 Disp.HP 的相关系数。

Ex2:实现transform函数

  • groupby 对象的构造方法是 my_groupby(df, group_cols)
  • 支持单列分组与多列分组
  • 支持带有标量广播的 my_groupby(df)[col].transform(my_func) 功能
  • pandastransform 不能跨列计算,请支持此功能,即仍返回 Seriescol 参数为多列
  • 无需考虑性能与异常处理,只需实现上述功能,在给出测试样例的同时与 pandas 中的 transform 对比结果是否一致