对新列中的数据进行分类

时间:2015-05-31 19:13:41

标签: python pandas

我有以下df:

Column 1
1
2435
3345
104
505
6005
10000
80000
100000
4000000
4440
520
...

这种结构不是最好的直方图,这是主要目的。箱子也没有真正解决问题,至少从我迄今为止测试的那个方面来说。这就是为什么我喜欢在新专栏中创建自己的箱子的原因:

我基本上想要将第1列中某个范围内的每个值分配给第2列中的一个桶,以便它看起来像这样:

Column 1    Column2
1           < 10000
2435        < 10000
3345        < 10000  
104         < 10000
505         < 10000
6005        < 10000
10000       < 50000
80000       < 150000
100000      < 150000
4000000     < 250000
4440        < 10000
520         < 10000
...

一旦我到达那里,创建一个情节会容易得多。

谢谢!

2 个答案:

答案 0 :(得分:2)

有一个与此cut相当的pandas,有一个描述此here的部分。 cut返回每个值的开放关闭时间间隔:

In [29]:    
df['bin'] = pd.cut(df['Column 1'], bins = [0,10000, 50000, 150000, 25000000])
df

Out[29]:

    Column 1                 bin
0          1          (0, 10000]
1       2435          (0, 10000]
2       3345          (0, 10000]
3        104          (0, 10000]
4        505          (0, 10000]
5       6005          (0, 10000]
6      10000          (0, 10000]
7      80000     (50000, 150000]
8     100000     (50000, 150000]
9    4000000  (150000, 25000000]
10      4440          (0, 10000]
11       520          (0, 10000]

列的dtype是Category,可用于过滤,计数,绘图等。

答案 1 :(得分:1)

numpy.histogram接受一个bins参数,该参数可以是一个整数数组,并返回这些二进制数内的计数数组。所以,如果你运行

import numpy as np

counts, _ = np.histogram(df[`Column 1`].values, [10000, 50000, 150000, 250000])

你将拥有你想要的垃圾箱。从这里,你可以做任何你想做的事情,包括绘制每个箱子里的计数数量:

plot(counts)