【问题标题】:How to boxplot data after different column values in pandas如何在熊猫中的不同列值之后对数据进行箱线图绘制
【发布时间】:2015-10-26 00:54:54
【问题描述】:

我有一个这样的数据框:

    Country     Year      Column1    Column2
1   Guatemala   1999        5           1
4   Mexico      2000        1           3
5   Mexico      2000        2           2
6   Mexico      2000        2           1
8   Guatemala   2000        3           2
11  Guatemala   2003        4           3
12  Guatemala   2003        6           4
13  Guatemala   2003        5           5

我想要为Country 中的每个组制作一个箱线图,显示与Years 中唯一值的数量相对应的多个框。这些框应代表Column2 中的值。

我将数据分组并得到这样的箱线图:

df1=df.groupby('Origin').boxplot(column='Column2', subplots=True)

这为我提供了每个国家/地区的箱线图,但其中只有一个图,代表该组的所有值,而不是按年份分隔。如何为year 中的每个唯一值获取一个框,表示我的代码中 Column2 中的值?

【问题讨论】:

  • 你见过seaborn's boxplot吗?看起来它会做你想做的事。
  • 是的,看起来像!我不知道这个模块,谢谢!

标签: python pandas boxplot


【解决方案1】:

我会使用seaborn 包,特别是将FacetGridboxplot 结合使用。 对于您的情况,代码可能如下所示:

import seaborn as sns
g = sns.FacetGrid(df, col="Country", sharex=False)
g.map(sns.boxplot, 'Year', 'Column2')

编辑:这是我从上面的数据中得到的:

【讨论】:

  • 真正整洁的模块!但是,当我运行上面提供的代码时,我会在我的Countrycolumn(这是我想要的)中获得每个独特国家/地区的箱线图,但它们只有一盒一个 Year...当我没有FacetGrid我在一个地块中得到所有年份的所有盒子,但没有按原点划分(逻辑上)。
  • 似乎没有设置轴限制。试试上面编辑中的代码。
  • 太棒了,现在可以了。有没有办法在 x 轴上按从低到高的顺序显示 Year 值?我还没有在手册中找到它。但是谢谢你,很好的答案,很酷的新模块!
  • 编辑 - 使用 sharex=False 使轴正常工作。这也消除了对ax.axis('tight') 的需要。请参阅上面的编辑代码。
  • 现在它对我也很有效! x 轴上的值不是按顺序排列的,因为它们混合在我原来的 df 中。你能推荐一个很好的seaborn教程吗?看起来真的很值得学习!
猜你喜欢
  • 2017-12-16
  • 2018-10-20
  • 1970-01-01
  • 2013-10-28
  • 2014-03-21
  • 2018-10-15
  • 2020-12-05
  • 1970-01-01
  • 2020-11-29
相关资源
最近更新 更多