当前位置:  开发笔记 > 编程语言 > 正文

groupby多个值,并绘制结果

如何解决《groupby多个值,并绘制结果》经验,为你挑选了2个好方法。

我正在使用一些关于杀菌剂使用的数据,其中包括年份,杀菌剂,使用量以及熊猫DataFrame中的一些不相关的列.看起来有点像:

Year, State,      Fungicide, Value
2011, California, A,         12879
2011, California, B,         29572
2011, Florida,    A,         8645
2011, Florida,    B,         19573
2009, California, A,         8764
2009, California, B,         98643,
...

我想要的是随着时间的推移使用的总杀菌剂的单个图,每个单独的杀真菌剂(以不同的颜色)绘制线.我用.groupby来获取每年使用的每种杀菌剂的总量:

apple_fplot = df.groupby(['Year','Fungicide'])['Value'].sum()

这给了我想要绘制的值,例如:

Year, Fungicide, Value
...
2009, A,        128635
      B,        104765
2011, A,        154829
      B,        129865

现在我需要绘制它让每个杀真菌剂(A,B,...)是一个图一个单独的行价值随时间

有没有办法这样做而不将它全部分开?原谅我的无知,我是python的新手,我仍然熟悉它.



1> Colonel Beau..:

你可以做:

import matplotlib
matplotlib.style.use('ggplot')
import matplotlib.pyplot as plt

plt.figure()
df.groupby(['Year','Fungicide']).sum().unstack().plot()

在此输入图像描述

数据

   Year        State Fungicide  Value
0  2011   California         A  12879
1  2011   California         B  29572
2  2011      Florida         A   8645
3  2011      Florida         B  19573
4  2009   California         A   8764
5  2009   California         B  98643



2> Stefan..:

对于一个干净的解决方案,妥善打印legendxticks,你可以

apple_fplot = df.groupby(['Year','Fungicide'])['Value'].sum()
plot_df = apple_fplot.unstack('Fungicide').loc[:, 'Value']
plot_df.index = pd.PeriodIndex(plot_df.index.tolist(), freq='A')
plot_df.plot()

在此输入图像描述 对于subplots,只需将相应设置keywordTrue:

plot_df.plot(subplots=True)

要得到:

在此输入图像描述

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有