Python 在每个数据集中创建包含3组数据的图形

Python 在每个数据集中创建包含3组数据的图形,python,pandas,Python,Pandas,我正在使用一个CSV文件,该文件包含以下数据,我已将其转换为数据集。到目前为止,我掌握的代码是: import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv('MH_12.csv') df = df.set_index("Country") df2 = df.loc["Colombia", "2005"] print(df2

我正在使用一个CSV文件,该文件包含以下数据,我已将其转换为数据集。到目前为止,我掌握的代码是:

import pandas as pd
import matplotlib.pyplot as plt

        import seaborn as sns
    df = pd.read_csv('MH_12.csv')
    df = df.set_index("Country")

    df2 = df.loc["Colombia", "2005"]
    print(df2.values)

        Dataset2015 = {"Both sex":[ 7.1],
                   "Male" :[10.9],
                   "Female" :[ 3.1]}
    Dataset2010 = {"Both sex":[ 7.0],
                   "Male" :[11.1],
                   "Female" :[ 2.8]}
    Dataset2005 = {"Both sex":[ 7.3],
                   "Male" :[11.7],
                   "Female" :[ 2.6]}
    Dataset2000 = {"Both sex":[ 6.7],
                   "Male" :[10.9],
                   "Female" :[ 2.3]}
我想做的是将其转换为柱状图,每个数据集按年份(2015年、2010年、2005年和2000年)分开,但在这些年份组中,它们有3列,分别为性别、男性和女性。如果数据集中只有两组数据(例如,如果只有性别和男性),我熟悉创建列图

这是我尝试使用的代码:

df3 = pd.DataFrame(Dataset2015)
df3['year'] = '2015'
df4 = pd.DataFrame(Dataset2010)
df4['year'] = '2010'
df5 = pd.DataFrame(Dataset2005)
df5['year'] = '2005'
df6 = pd.DataFrame(Dataset2000)
df6['year'] = '2000'
df7 = pd.concat([df3,df4,df5,df6])
sns.factorplot(errcolor=".2", edgecolor=".2", data = df, hue='country', x='year', y='Mental Health Issues per 100,000 Population', kind='bar', ci=None, aspect=3, size=7);
plt.title('Mental Health Issues in Colombia')
plt.xticks(rotation=45);
plt.show()
我在运行代码时得到一个错误“Year”,这是可以理解的。我将色调保留为“国家”,但一旦我找到正确的方法,色调就会改变

问题:当我的每个数据集包含三个数据点时,如何创建柱状图? 我已经检查了Python API,没有找到类似的问题。

我认为需要3列
DataFrame

df8 = df7.melt('year', var_name='sex', value_name='a')
print (df8)
    year       sex     a
0   2015  Both sex   7.1
1   2010  Both sex   7.0
2   2005  Both sex   7.3
3   2000  Both sex   6.7
4   2015    Female   3.1
5   2010    Female   2.8
6   2005    Female   2.6
7   2000    Female   2.3
8   2015      Male  10.9
9   2010      Male  11.1
10  2005      Male  11.7
11  2000      Male  10.9

sns.factorplot(errcolor=".2", 
               edgecolor=".2", 
               data = df8, 
               hue='sex', 
               x='year', 
               y='a', 
               kind='bar', 
               ci=None, 
               aspect=3, 
               size=7)

嗨,耶兹雷尔,这正是我需要的。它工作得很好。再次感谢你!看起来这是一个非常简单的过程@詹姆斯武-不客气!是的,
melt
在这里工作很好。