用seaborn绘制-多年来我的实体数量的时间演变

时间:2018-10-25 07:45:28

标签: python pandas seaborn

我有pandas个数据框,代表包含3列的文档-年,名称,类型。

我正在尝试创建一个条形图,该条形图将显示我的文档多年来的时间演变,并且还将按类型将它们分开。

因此,当我有3年(2015、2016、2017)和2种类型(好,坏)时,我的图表将有6条(每年2条),并且条的高度将是其中的许多文档该类型的年份。

我正试图这样做:

data1['Name'] = 1
sns.barplot(x="Year", y="Name", hue="Type", data=data1)  

因为我认为barplot将对Names列的值求和,但它不能那样工作。

对不起,如果是愚蠢的问题,我正在寻找答案,但找不到任何答案。

2 个答案:

答案 0 :(得分:0)

假设您要计算YearType组合的每个不同记录

sns.countplot(data=data1, x="Year", hue="Type")

假设您要计算YearTypeName组合的每个不同记录

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更安全,因为它可以确保同步   各个方面的可变顺序:

  • 在这里,我将int放入列中来显示 Names 的数量
  • 通过 day (根据您的情况,按年份)
  • 并按 sex 上色(在您的情况下,按 Type 上色)
  

为什么需要 catplot() 带有构面并且数据   需要进行相应的修改:

sns.catplot(x="day", hue="sex", col="time", data=data1, kind="count")
  

这是使用分类数据进行绘图以更好地可视化的正确方法。

  • 您不需要将列 "Names" 设为1,因为您只需为每个观察值分配1。 (我敢打赌那里是文件的名称。)因此,您想为"Good" vs "Bad"和每个year分开。

生成以下内容:

Example showing the power of facets:

Generated using the titanic dataset modified with your code

seaborn.countplot