我编写了以下代码来绘制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
我是熊猫模块的新手..
答案 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>