我正在使用包含以下数据的CSV文件,我已将其转换为数据集。我到目前为止的代码:
List<ListBoxArticle> check = new List<ListBoxArticle>();
private void SelectArt_Checked(object sender, RoutedEventArgs e)
{
check.AddRange(LesArticles.Where(x => x.IsChecked));
}
我想要做的是将其转换为列图,每个数据集以年份(2015年,2010年,2005年和2000年)分隔,但在这些年份组中,他们有3列两性,男性和女性。如果数据集中只有两组数据,那么我很熟悉创建列图(例如,如果这只有性别和男性)。
这是我试图使用的代码:
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]}
运行代码时出现错误“Year”,这是可以理解的。我把色调留作“国家”,但一旦我弄清楚如何做到这一点就会改变。
问题:当我的每个数据集包含三个数据点时,如何创建列图? 我检查过Python API,但是找不到类似的问题。
答案 0 :(得分:2)
对于3列DataFrame
,我认为需要melt
:
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)