在大熊猫中获取25个分位数

布鲁诺·梅洛

假设我有以下DataFrame:

df = pd.DataFrame({'id': [2, 4, 10, 12, 13, 14, 19, 20, 21, 22, 24, 25, 27, 29, 30, 31, 42, 50, 54],
              'value': [37410.0, 18400.0, 200000.0, 392000.0, 108000.0, 423000.0, 80000.0, 307950.0,
 50807.0, 201740.0, 182700.0, 131300.0, 282005.0, 428800.0, 56000.0, 412400.0, 1091595.0, 1237200.0,
 927500.0]})

我执行以下操作:

df.sort_values(by='id').set_index('id').cumsum()

        value
id           
2     37410.0
4     55810.0
10   255810.0
12   647810.0
13   755810.0
14  1178810.0
19  1258810.0
20  1566760.0
21  1617567.0
22  1819307.0
24  2002007.0
25  2133307.0
27  2415312.0
29  2844112.0
30  2900112.0
31  3312512.0
42  4404107.0
50  5641307.0
54  6568807.0

我想知道id的第一个元素大于累积总和的25%。在此示例中,总金额的25%为1,642,201.75。超过该值的第一个元素将是22。我知道可以使用for来完成,但是我认为效率很低。

丹妮·梅塞乔

您可以这样做:

percentile_25 = df['value'].sum() * 0.25
res = df[df['value'].cumsum() > percentile_25].head(1)
print(res)

输出量

   id     value
9  22  201740.0

或使用searchsortedO(log N)中进行搜索

percentile_25 = df['value'].sum() * 0.25
i = df['value'].cumsum().searchsorted(percentile_25)
res = df.iloc[i]
print(res)

输出量

id           22.0
value    201740.0
Name: 9, dtype: float64

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在大熊猫的列上滚动分位数

来自分类Dev

大熊猫系列的分位数功能的反函数是什么?

来自分类Dev

如何获取大熊猫中连续值的比例?

来自分类Dev

大熊猫中2个指标列的逻辑或

来自分类Dev

大熊猫中2个指标列的逻辑或

来自分类Dev

如何转置列并获取大熊猫中相同值的数量和百分比?

来自分类Dev

大熊猫:按行计算百分位数并优雅地处理非唯一值?

来自分类Dev

透视大熊猫中的数据

来自分类Dev

与Matplotlib不同的大熊猫中的散点图

来自分类Dev

规范大熊猫中的长数据

来自分类Dev

大熊猫中的布尔子集

来自分类Dev

大熊猫中类似SQL的语句?

来自分类Dev

大熊猫DataFrame中的条件操作

来自分类Dev

处理大熊猫中的日期

来自分类Dev

映射大熊猫中的分类数据?

来自分类Dev

合并大熊猫中的列?

来自分类Dev

大熊猫中列的条件求和

来自分类Dev

如何量化大熊猫中的数据?

来自分类Dev

规范大熊猫中的长数据

来自分类Dev

大熊猫中逻辑与的评估

来自分类Dev

大熊猫密谋

来自分类Dev

大熊猫申请

来自分类Dev

大熊猫的选择

来自分类Dev

与大熊猫聚集

来自分类Dev

大熊猫与重复

来自分类Dev

仅当大熊猫中的任何一行为真时,如何获取行?

来自分类Dev

大熊猫从数组中获取嵌套的字符串值

来自分类Dev

无法将大熊猫表格数据从json获取到csv以及从dataframe中返回

来自分类Dev

为什么在大熊猫中获取指数的倒数这么慢?