我有pandas
个数据框,代表包含3列的文档-年,名称,类型。
我正在尝试创建一个条形图,该条形图将显示我的文档多年来的时间演变,并且还将按类型将它们分开。
因此,当我有3年(2015、2016、2017)和2种类型(好,坏)时,我的图表将有6条(每年2条),并且条的高度将是其中的许多文档该类型的年份。
我正试图这样做:
data1['Name'] = 1
sns.barplot(x="Year", y="Name", hue="Type", data=data1)
因为我认为barplot将对Names
列的值求和,但它不能那样工作。
对不起,如果是愚蠢的问题,我正在寻找答案,但找不到任何答案。
答案 0 :(得分:0)
假设您要计算Year
和Type
组合的每个不同记录
sns.countplot(data=data1, x="Year", hue="Type")
假设您要计算Year
,Type
和Name
组合的每个不同记录
filtered_data = data1.drop_duplicates(subset=["Year", "Type", "Name"])
sns.countplot(data=filtered_data, x="Year", hue="Type")
答案 1 :(得分:0)
g = sns.catplot(x="Year", hue="Type", col="Name", data=data1, kind="count")
对于您的任务, catplot()将起作用。
使用
catplot()
组合一个countplot()
和一个FacetGrid
。 这允许 在其他类别变量中进行分组。使用catplot()
是 比直接使用FacetGrid
更安全,因为它可以确保同步 各个方面的可变顺序:
Names
的数量day
(根据您的情况,按年份)sex
上色(在您的情况下,按 Type
上色)为什么需要
catplot()
带有构面并且数据 需要进行相应的修改:
sns.catplot(x="day", hue="sex", col="time", data=data1, kind="count")
这是使用分类数据进行绘图以更好地可视化的正确方法。
"Names"
设为1,因为您只需为每个观察值分配1。 (我敢打赌那里是文件的名称。)因此,您想为"Good" vs "Bad"
和每个year
分开。 生成以下内容: