pandas matplotlib .plot(kind='hist') 与 .plot(kind='bar') 问题
pandas matplotlib .plot(kind='hist') vs .plot(kind='bar') issue
我有一个名为 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()
那是因为"hist"图不仅仅是绘制数据,而是实际上是先估计原始数据的经验分布,然后再绘制结果。也就是说,"hist" 将对数据进行分箱,计算每个分箱的实例并绘制它,因此不需要我们自己进行 value_counts()
。
因此,相当于:
firstperiod.megaball.value_counts().sort_index().plot(kind='bar')
应该只是:
firstperiod.megaball.plot(kind='hist')
我有一个名为 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()
那是因为"hist"图不仅仅是绘制数据,而是实际上是先估计原始数据的经验分布,然后再绘制结果。也就是说,"hist" 将对数据进行分箱,计算每个分箱的实例并绘制它,因此不需要我们自己进行 value_counts()
。
因此,相当于:
firstperiod.megaball.value_counts().sort_index().plot(kind='bar')
应该只是:
firstperiod.megaball.plot(kind='hist')