使用条件箱范围绘制直方图

时间:2018-05-02 04:35:40

标签: python pandas histogram

我编写了以下代码来绘制csv文件列中给定值集的直方图:

将pandas导入为pd 将matplotlib.pyplot导入为plt import numpy

class createHistogram():

def __init__(self,csv_file):
    self.csv_file = csv_file

def load_csv(self):
    bin_edge = range(0,100,10)
    tp_data = pd.read_csv(self.csv_file)
    dataframe = pd.DataFrame(tp_data)['tp']
    dataframe.hist(bins=bin_edge)
    plt.show()
    return tp_data

这里我得到直方图,如果值小于10,20 ......等等,但我希望它应该是

bin_value< = 10

10< bin_value< = 20

20

我是熊猫模块的新手..

1 个答案:

答案 0 :(得分:0)

您可以使用Pandas native cut,它以间隔的形式定义bin。

ser = pd.Series(np.random.randint(1, 100, 50))
bins = range(0, 101, 10)

pd.cut使用Categorical方法将数据分类到容器中。

In [4]: pd.cut(ser, bins).cat.categories
Out[4]: 
IntervalIndex([(0, 10], (10, 20], (20, 30], (30, 40], (40, 50], (50, 60], (60, 70], (70, 80], (80, 90], (90, 100]]
              closed='right',
              dtype='interval[int64]')

如果你想进一步绘制它们,它会是这样的:

In [5]: pd.cut(ser, bins).value_counts().plot(kind='bar')
Out[5]: <matplotlib.axes._subplots.AxesSubplot at 0x10e673b70>

Bar plot