使用pandas.cut对所有值进行分区

时间:2018-03-09 21:55:06

标签: python pandas

我的数据框如下所示:

tensor_name = conv1.op.name
tf.summary.histogram(tensor_name + '/activation', conv1)

最后一个值远高于其他值。我试图使用pd.cut:

将所有值分成5个bin

index value 1 21.046091 2 52.400000 3 14.082153 4 1.859942 5 1.859942 6 2.331143 7 9.060000 8 0.789265 9 12967.7

但它最终只会返回第1组和第5组。

pd.cut(df['value'], 5, labels = [1,2,3,4,5])

更高的价值显然是抛弃它,但有没有办法确保数据框中的所有五个箱都能表示而不会消除外围值?

1 个答案:

答案 0 :(得分:2)

您可以使用qcut

pd.qcut(df['value'],5,labels=[1,2,3,4,5])

输出:

index
1    4
2    5
3    4
4    1
5    1
6    2
7    3
8    1
9    5
Name: value, dtype: category
Categories (5, int64): [1 < 2 < 3 < 4 < 5]

print(df.assign(group = pd.qcut(df['value'],5,labels=[1,2,3,4,5])))

              value group
index                    
1         21.046091     4
2         52.400000     5
3         14.082153     4
4          1.859942     1
5          1.859942     1
6          2.331143     2
7          9.060000     3
8          0.789265     1
9      12967.700000     5