【问题标题】:Binning pandas data by top N percent将 pandas 数据分箱前 N%
【发布时间】:2018-03-27 23:10:43
【问题描述】:

我有一个熊猫系列(作为更大数据框的一部分),如下所示:

0        7416
1       10630
2        7086
3        2091
4        3995
5        1304
6         519
7        1262
8        3676
9        2371
10       5346
11        912
12       3653
13       1093
14       2986
15       2951
16      11859

我想根据以下分位数对行进行分组:

Top 0-5%
Top 6-10%
Top 11-25%
Top 26-50%
Top 51-75%
Top 76-100%

首先我开始对数据使用pd.rank(),然后我计划使用pd.cut() 将数据切割成箱,但这似乎不接受前N%,而是接受明确的箱边缘。在 pandas 中是否有一种简单的方法可以做到这一点,或者我是否需要创建一个 lambda/apply 函数来计算每个排名项目应该放在哪个 bin 中。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这是你的想法吗?

    pd.qcut(data, [0.05, 0.1, 0.25, 0.5, 0.75, 1])
    

    【讨论】:

    • 不完全。当我将此应用于我的数据集时,它显示前 0-5% 的百分位数中有 419 个帖子,而实际上在我的 1674 个样本的数据集中,前 5% 中应该只有 84 个样本
    • 如果颠倒数组中的顺序会怎样?
    • [0.25, 0.5, 0.75, 0.9, 0.95, 1] 就是我的意思
    【解决方案2】:

    稍作修改的版本:

    pd.qcut(数据, [0, 0.05, 0.1, 0.25, 0.5, 0.75, 1])

    否则,如果数据集低于 0.05 (5%),它会给我 NaN。

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 1970-01-01
      • 2020-07-03
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      相关资源
      最近更新 更多