簡體   English   中英

分箱 Pandas value_counts

[英]Binning Pandas value_counts

我有一個由 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 |

我想要的 output 是

| 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 方法可以做我想做的事。 非常歡迎任何建議。 :-)

您可以使用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])

Output:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM