Pandas问题三

【问题一】什么是fillna的前向/后向填充,如何实现?

  • df.fillna(method=‘ffll’) 前向填充值
  • method = ffill、pad 前向填充(搬运)值
  • method = bfill、backfill 后向填充(搬运)值

【问题二】 下面的代码实现了什么功能?请仿照设计一个它的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)
 
s  0 1 1 0 1 1 1 0
s1 0 1 2 2 3 4 5 5
mul 0 1 2 0 3 4 5 0
diff NaN 1 1 -2 3 1 1 -5
where NaN NaN NaN -2 NaN NaN NaN -5
ffill NaN NaN NaN -2 -2 -2 -2 -5
fill_value 0 0 0 -2 -2 -2 -2 -5
add 0 1 2 0 1 2 3 0

df.groupby('School').apply(lambda x:x['Math'].mul(x['Math'].cumsum()).diff().where(lambda m: m < 0).ffill().add(x['Math'].cumsum(),fill_value=0))

【问题三】 如何计算组内0.25分位数与0.75分位数?要求显示在同一张表上。

 df.groupby('School').apply(lambda x: pd.DataFrame({
   'q25': x.quantile(0.25),
   'q75': x.quantile(0.75)
 }))

【问题四】 既然索引已经能够选出某些符合条件的子集,那么filter函数的设计有什么意义?

  • filter函数是用来筛选组的,结果是组的全体

【问题五】 整合、变换、过滤三者在输入输出和功能上有何异同?

  • 整合(Aggregation)分组计算统计量:输入的是每组数据,输出是每组的统计量,在列维度上是标量
  • 变换(Transformation):即分组对每个单元的数据进行操作(如元素标准化):输入的是每组数据,输出是每组数据经过某种规则变换后的数据,不改变数据的维度
  • 过滤(Filtration):即按照某些规则筛选出一些组:输入的是每组数据,输出的是满足要求的组的所有数据

【问题六】 在带参数的多函数聚合时,有办法能够绕过wrap技巧实现同样功能吗?

def f_test(s,low=50,high=52):   
 	return s.between(low,high).max()
grouped_single['Math'].agg([f_test,'mean']).head()
  • 这里需要理解的是,agg除了传入字符形式的np函数外,其他传入对象也应当是一个函数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值