【问题标题】:Binning Pandas value_counts分箱 Pandas value_counts
【发布时间】:2021-03-15 01:22:03
【问题描述】:

我有一个由 df.column.value_counts().sort_index() 制作的 Pandas 系列。

| N Months | Count |
|------|------|
|    0 |   15 |
|    1 |    9 |
|    2 |   78 |
|    3 |  151 |
|    4 |  412 |
|    5 |  181 |
|    6 |  543 |
|    7 |  175 |
|    8 |  409 |
|    9 |  594 |
|   10 |  137 |
|   11 |  202 |
|   12 |  170 |
|   13 |  446 |
|   14 |   29 |
|   15 |   39 |
|   16 |   44 |
|   17 |  253 |
|   18 |   17 |
|   19 |   34 |
|   20 |   18 |
|   21 |   37 |
|   22 |  147 |
|   23 |   12 |
|   24 |   31 |
|   25 |   15 |
|   26 |  117 |
|   27 |    8 |
|   28 |   38 |
|   29 |   23 |
|   30 |  198 |
|   31 |   29 |
|   32 |  122 |
|   33 |   50 |
|   34 |   60 |
|   35 |  357 |
|   36 |  329 |
|   37 |  457 |
|   38 |  609 |
|   39 | 4744 |
|   40 | 1120 |
|   41 |  591 |
|   42 |  328 |
|   43 |  148 |
|   44 |   46 |
|   45 |   10 |
|   46 |    1 |
|   47 |    1 |
|   48 |    7 |
|   50 |    2 |

我想要的输出是

| bin   | Total  |
|-------|--------|
| 0-13  |   3522 |
| 14-26 |    793 |
| 27-50 |   9278 |

我尝试了 df.column.value_counts(bins=3).sort_index() 但得到了

|               bin               | Total |
|---------------------------------|-------|
| (-0.051000000000000004, 16.667] |  3634 |
| (16.667, 33.333]                |  1149 |
| (33.333, 50.0]                  |  8810 |

我可以得到正确的结果

a = df.column.value_counts().sort_index()[:14].sum()
b = df.column.value_counts().sort_index()[14:27].sum()
c = df.column.value_counts().sort_index()[28:].sum()

print(a, b, c)

Output: 3522 793 9270

但我想知道是否有可以做我想做的 pandas 方法。非常欢迎任何建议。 :-)

【问题讨论】:

    标签: python pandas counting bin


    【解决方案1】:

    你可以使用pd.cut:

    pd.cut(df['N Months'], [0,13, 26, 50], include_lowest=True).value_counts()
    

    更新您应该能够将自定义 bin 传递给 value_counts

    df['N Months'].value_counts(bins = [0,13, 26, 50])
    

    输出:

    N Months
    (-0.001, 13.0]    3522
    (13.0, 26.0]       793
    (26.0, 50.0]      9278
    Name: Count, dtype: int64
    

    【讨论】:

    • 通过列表是一个很好的答案!
    猜你喜欢
    • 2022-12-02
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多