如何从'groupby'和'mean'函数绘制直方图

时间:2019-02-16 17:54:53

标签: python pandas matplotlib

我有一个这样的数据框:

Imgur
国家名称不同。
我想计算中等高度列的平均值,并按 Country 列进行分组;那么我想在xticks上绘制一个带有所有国家名称的直方图。

为此,我使用以下方法计算了平均值:height = df.groupby(["Country"]).mean()["Medium Height"] 我试图用以下方式绘制直方图:

plt.hist(height, density=1, facecolor="black", alpha=0.6)
plt.xticks(countries, df["Paese"])

但是情节看起来像这样:
Imgur

这是我使用的代码:

height = df.groupby(["Country"]).mean()["AMedium Height"]
countries = np.arange(152) # The number of countries
plt.hist(height, density=1, facecolor="black", alpha=0.6)
plt.xticks(countries, df["Country"])
plt.show()

-编辑-
这是我使用的数据框的一部分:

       Country  Year  Height
0  Afghanistan  1870   168.4
1  Afghanistan  1880   165.7
2  Afghanistan  1930   166.8
3      Albania  1880   170.1
4      Albania  1890   169.8

1 个答案:

答案 0 :(得分:0)

您似乎想绘制平均身高与国家/地区的条形图。

你可以做到

means = df.groupby(["Country"]).mean()['Height']
print(means)

结果

Country
Afghanistan    166.966667
Albania        169.950000
Name: Height, dtype: float64

然后像这样绘制它

ax = means.plot(kind = 'bar')
ax.set_ylabel('Mean Height')

结果

enter image description here

如果您希望所有条形使用相同的颜色

ax = means.plot(kind = 'bar', colors = 'grey')
ax.set_ylabel('Mean Height')

这将导致

enter image description here