Pandas问题三

tech2022-12-26  125

Pandas问题三

【问题一】什么是fillna的前向/后向填充,如何实现?【问题二】 下面的代码实现了什么功能?请仿照设计一个它的groupby版本【问题三】 如何计算组内0.25分位数与0.75分位数?要求显示在同一张表上。【问题四】 既然索引已经能够选出某些符合条件的子集,那么filter函数的设计有什么意义?【问题五】 整合、变换、过滤三者在输入输出和功能上有何异同?【问题六】 在带参数的多函数聚合时,有办法能够绕过wrap技巧实现同样功能吗?

【问题一】什么是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)