当前位置:   PYTHON > 正文

groupby多个值,并绘制结果

python,group-by,matplotlib,data-analysis,pandas,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我正在使用一些关于杀菌剂使用的数据,其中包括年份,杀菌剂,使用量以及熊猫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)

要得到:

在此输入图像描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/PYTHON/detail/2989
推荐阅读
相关标签
  

闽ICP备14008679号