教程地址:joyful-pandas/第3章 分组——datawhalechina
……这两天太忙,知识点等有空后再回来整理
Pandas分组
五、问题与练习
问题
【问题一】 什么是fillna的前向/后向填充,如何实现?
答:fillna 的method方法可以控制参数的填充方式
backfill / bfill: 前向填充
pad / ffill: 后向填充
实现方式如下:
df_nan.Math=df_nan.Math.fillna(method='pad')
【问题二】 下面的代码实现了什么功能?请仿照设计一个它的groupby版本。
s = pd.Series ([0, 1, 1, 0, 1, 1, 1, 0])
s1 = s.cumsum()
result = s.mul(s1).diff().where(lambda x: x < 0).ffill().add(s1,fill_value =0)
答:
s1:将s序列求累加和
s.mul(s1): s 与s1累乘
diff() :求一阶差分
where(lambda x: x < 0) :判断值是否小于0
fill():向下填充
add(s1,fill_value =0) :缺失值补0后与s1求和
【问题三】 如何计算组内0.25分位数与0.75分位数?要求显示在同一张表上。
答:
gp.apply(lambda x:pd.DataFrame({
'q25':x.quantile(0.25),
'q75':x.quantile(0.75)}))
【问题四】 既然索引已经能够选出某些符合条件的子集,那么filter函数的设计有什么意义?
答:filter函数是用来筛选组的(结果是组的全体)
【问题五】 整合、变换、过滤三者在输入输出和功能上有何异同?
答:
整合:分组计算统计量,输入的是每组数据,输