我正在使用一些关于杀菌剂使用的数据,其中包括年份,杀菌剂,使用量以及熊猫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的新手,我仍然熟悉它.
你可以做:
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
对于一个干净的解决方案,妥善打印legend
和xticks
,你可以
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
,只需将相应设置keyword
为True
:
plot_df.plot(subplots=True)
要得到: