需求:对于Pandas的dataframe的某一列数据,我们想要获取该列的数值从大到小依次的累积占比,即获取总量占比为50%时对应的是哪个数值。
函数:pandas.DataFrame.cumsum
作用:返回DataFrame或Series轴上的累计和
参数:DataFrame.cumsum(axis=None, skipna=True)
- axis,可选参数有{0 or ‘index’, 1 or ‘columns’} 指定是横向的row还是纵向的column,0 代表是 ‘index’, 1 代表是‘columns’。
- skipna,bool,默认是True,排除NA / null值。如果整个行/列为NA,则结果为NA。
代码示例如下:
df = df.sort_values(by=['value'], ascending=False) # 按照字段value的降序进行排序
df['flow_cumsum'] = df['value'].cumsum() # 计算flow的累计数值
df['flow_cumper'] = df_flow['flow_cumsum'] / df_flow['value'].sum() * 100 # 计算flow的累计比例
这样就可以绘图得到累积占比90%时所对应的flow的数值了,可以进行阈值筛选。
参考资料:https://pandas.pydata.org/pandasdocs/stable/reference/api/pandas.DataFrame.cumsum.html
网友评论