简体   繁体   English

如何使用pandas.cut对数据进行分组?

[英]how to use pandas.cut to group my data?

raw_data='''
82   68   86   94   89   63   77   76   84    89
75   78   81   82   76   99   80   84   89    88
60   83   72   83   85   56   86   68   75   100
90   84   75   86   74   77   95   63   80    76
100   43  76   81   79   74   96   52   69    86'''

How to use pandas.cut to group my data and output it as pandas.DataFrame in the following format? 如何使用pandas.cut将我的数据分组并以以下格式将其输出为pandas.DataFrame?

  interval numbers
1   (0,60]       4
2  (60,70]       5
3  (70,80]      16
4  (80,90]      19
5 (90,100]       6

You can cut and then call describe : 您可以cut然后调用describe

>>> nums = pd.Series(raw_data.split(), dtype=int)
>>> ncut = pd.cut(nums, [0, 60, 70, 80, 90, 100])
>>> d = ncut.describe()
>>> d
           counts  freqs
levels                  
(0, 60]         4   0.08
(60, 70]        5   0.10
(70, 80]       16   0.32
(80, 90]       19   0.38
(90, 100]       6   0.12

[5 rows x 2 columns]

Or if you're very particular: 或者,如果您很特别:

>>> d = d.reset_index().drop("freqs", axis=1)
>>> d = d.rename(columns={"levels": "interval", "counts": "numbers"})
>>> d
    interval  numbers
0    (0, 60]        4
1   (60, 70]        5
2   (70, 80]       16
3   (80, 90]       19
4  (90, 100]        6

[5 rows x 2 columns]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM