代码之家  ›  专栏  ›  技术社区  ›  Axle Max

Binning值\u计数

  •  0
  • Axle Max  · 技术社区  · 4 年前

    我有一个熊猫系列由df.column.value\u计数()。排序索引()。

    | 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\u计数(bin=3).sort\u 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
    

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

    1 回复  |  直到 4 年前
        1
  •  2
  •   Quang Hoang    4 年前

    pd.cut :

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

    更新 您应该能够将自定义垃圾箱传递给 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