如何在Python中动态创建bin?

时间:2017-11-02 21:05:35

标签: python pandas numpy matplotlib

我有以下np数组:

[['ID1', 922.63, 'Product 1'],
['ID1', 1001, 'Product 2'],
['ID1', 800, 'Product 1'],
['ID1', 922.63, 'Product 1'],
['ID1', 1001, 'Product 2'],
['ID2', 800, 'Product 1'],
['ID2', 922.63, 'Product 1'],
['ID2', 1001, 'Product 2'],
['ID3', 800, 'Product 1'],
['ID3', 700.63, 'Product 1'],
['ID3', 1200, 'Product 2'],
['ID3', 850, 'Product 1']]

'第二栏'($ amount)是我关心的。我想构建产品1和产品2的直方图,但我希望这些容器的大小为100.我使用的实际数据集有75K行,值范围从$ 1到$ 200000。我想为值自动创建这些“桶”,然后构建直方图。

我认为使用pandas或numpy很容易找到这方面的信息,但我要么是newb而且无法理解其他'类似'的解决方案,或者我只是找不到我正在寻找的东西。似乎应该是直截了当。

1 个答案:

答案 0 :(得分:3)

您可以将数据转换为pandas.DataFrame

来获取直方图
a = [['ID1', 922.63, 'Product 1'],
['ID1', 1001, 'Product 2'],
['ID1', 800, 'Product 1'],
['ID1', 922.63, 'Product 1'],
['ID1', 1001, 'Product 2'],
['ID2', 800, 'Product 1'],
['ID2', 922.63, 'Product 1'],
['ID2', 1001, 'Product 2'],
['ID3', 800, 'Product 1'],
['ID3', 700.63, 'Product 1'],
['ID3', 1200, 'Product 2'],
['ID3', 850, 'Product 1']]
q=pd.DataFrame(a,columns=['id','price','product'])
q.hist(column='price',bins=100)

enter image description here

您可以使用bins参数指定所需的分档数:

 q.hist(column='price', bins=100)

enter image description here

如果您想按产品对其进行分组,请使用by参数:

 q.hist(column='price', bins=100,by='product')

enter image description here