我有一些数据,我想看看它的分布。但是我不知道为什么当我使用此代码时,直方图并没有真正显示数据中正在发生的事情,而是显示了非常普通的图片。我想要一个更精细的直方图。
data['feature'].plot(kind='hist')
这是这段代码给我的:
直方图:
如何使其更细化?
答案 0 :(得分:1)
data['feature'].plot(kind='hist', bins=100)
这会将直方图分为100个bin。如果您需要更高的粒度,您自然可以使用更高的数字。
您的数据似乎非常偏左。您可以使用pd.qcut
作为bins
参数来强制使用100个具有相同成员数的bin:
_, bins = pd.qcut(data['feature'], 100, retbins=True)
data['feature'].plot(kind='hist', bins=bins)
答案 1 :(得分:-1)
bins
参数将采用一系列bin边缘,并支持不等间距的bin。构造一个序列,使您可以更精细地了解大多数数据所在的位置
data['feature'].plot(kind='hist', bins=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,
1.0,...
9.1,9.2,9.3,9.4,9.5,9.6,9.7,9.8,9.9,10,
20, 30)
或
data.plot.hist(by='feature', bins=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,
1.0,...
9.1,9.2,9.3,9.4,9.5,9.6,9.7,9.8,9.9,
10, 20, 30)
您可以使用numpy.linspace和numpy.concatenate制造bins参数:
bins = np.concatenate((np.linspace(0,10,num=101), [20,30]))