python中所有国家/地区每月的Barplot

时间:2021-06-02 20:21:15

标签: python pandas dataframe matplotlib

我有显示来自不同国家/地区的温度和日期的数据。

Date  Temperature    Units  Year Month Statistics Country CODE
                                                             
Jan 1991        -26.2  Celsius  1991   Jan    Average  Canada  CAN
Feb 1991        -21.0  Celsius  1991   Feb    Average  Canada  CAN
Mar 1991        -18.2  Celsius  1991   Mar    Average  Canada  CAN
Apr 1991         -8.6  Celsius  1991   Apr    Average  Canada  CAN
May 1991          0.8  Celsius  1991   May    Average  Canada  CAN

我只想为 1991 年的每个月制作一个条形图。我想创建一个循环,所以最后,我得到 12 个图,每个图都有五个不同的条形图(国家/地区),显示 1991 年每个国家/地区的温度.

我是这样做的:

tempcountries.groupby(['Country','Month']).plot.bar(y='Temperature',legend=True)
plt.title("Monthly AVerage Temperature")
plt.xlabel('Time')
plt.ylabel('Average Temperature °C')
plt.show()

但我每个国家和每个月都会得到一个地块,而不是每个国家每个月都会得到一个地块。 你能帮我吗?

2 个答案:

答案 0 :(得分:0)

tempcountries.groupby(['Month']).plot.bar(x='Country', y='Temperature',legend=True)

如果你想将这些放在一个图中,seaborn 包提供了一个很好的界面,用于根据 Pandas DataFrame 中的分类变量创建图形网格。

import seaborn as sns
g = sns.FacetGrid(tempcountries, col="Month")
g.map_dataframe(sns.barplot, y="Temperature", x="Country")

答案 1 :(得分:0)

Seaborn 软件包可以为您轻松做到这一点。

import seaborn as sns

# Plot all countries for each month
sns.catplot(x = 'Country', y = 'Temperature', col = 'Month', kind = 'bar',
            data = tempcountries[tempcountries['Year'] == 1991]
            )
相关问题