pandas matplotlib .plot(kind =' hist')vs .plot(kind =' bar')问题

时间:2015-06-04 04:13:09

标签: python pandas matplotlib histogram bar-chart

我有一个名为firstperiod的pandas数据帧和一个名为megaball的列。 megaball中的值范围是1到25,这行代码:

print firstperiod.megaball.value_counts().sort_index()

给了我这个,这就是我想看到的(每个可能值的出现次数)

1     12
2      4
3      9
4      4
5      3
6      6
7      5
8      8
9      7
10    10
11     6
12     5
13     3
14     5
15     6
16     8
17    15
18     7
19     8
20     5
21     8
22     7
23     1
24    11
25     9


firstperiod.megaball.value_counts().sort_index().plot(kind='bar')
plt.show()

^这显示条形图很好,x轴值最多25,y轴值最多15。

但出于某种原因,当我想要一个直方图而不是一个条形图(而只改变kind=的参数值时,这给了我一些完全错误的东西,并且与之前的条形图值非常不同。为什么是那?以及如何修复直方图?

firstperiod.megaball.value_counts().sort_index().plot(kind='hist')
plt.show()

1 个答案:

答案 0 :(得分:3)

那是因为" hist"情节不仅仅是绘制数据,而是实际上首先估计原始数据的经验分布,然后绘制结果。也就是说," hist"将要收集数据,计算每个bin的实例并绘制该数据,因此不需要自己执行value_counts()

因此,相当于:

firstperiod.megaball.value_counts().sort_index().plot(kind='bar')

应该是:

firstperiod.megaball.plot(kind='hist')