python - groupby 多个值,并绘制结果

标签 python pandas matplotlib group-by data-analysis

我正在使用一些有关杀菌剂使用情况的数据,其中包含年份、杀菌剂、使用量,以及 Pandas 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、...)在随时间变化的值(value)的单个图上单独成一条线 p>

有没有一种方法可以在不将它们全部分离的情况下做到这一点?原谅我的无知,我是 python 的新手,并且还在熟悉它。

最佳答案

对于正确打印 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()

enter image description here 对于 subplots,只需将相应的 keyword 设置为 True:

plot_df.plot(subplots=True)

得到:

enter image description here

关于python - groupby 多个值,并绘制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34225839/

相关文章:

python - 使用 pandas 正则表达式验证数据帧 header

python - pandas - 箱线图中位数颜色设置问题

python - Matplotlib 缩放与 wxPython ScrolledWindow 结合使用

Python文件解析,无法在新行中捕获字符串

Python - Gtk.TreeView 和 Gtk.ListStore 获取选定的索引

python - pandas 从数据帧中删除每个字段具有非空值的行(Python 3.4/IPython)

python - 带箭头的 matplotlib 3d 线图无法接受 kwargs

python - 导入pyplot时出现ImportError libqhull.so.5

python - mypy `TypedDict` 的工厂函数

python - Pandas groupby 自定义组