J'utilise des données sur l'utilisation des fongicides qui ont l'année, le fongicide, la quantité utilisée, ainsi que des colonnes non pertinentes dans un DataFrame panda. Cela ressemble un peu à:
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,
...
Ce que j'en veux, c'est une seule parcelle de fongicide total utilisé au fil du temps, avec une ligne tracée pour chaque fongicide individuel (dans une couleur différente). J'ai utilisé .groupby pour obtenir la quantité totale de chaque fongicide utilisé chaque année:
Apple_fplot = df.groupby(['Year','Fungicide'])['Value'].sum()
Cela me donne les valeurs que je veux tracer, quelque chose comme:
Year, Fungicide, Value
...
2009, A, 128635
B, 104765
2011, A, 154829
B, 129865
Maintenant, je dois le tracer pour que chaque fongicide (A, B, ...) soit une ligne distincte sur une seule parcelle de Valeur dans le temps
Existe-t-il un moyen de le faire sans tout séparer? Pardonnez mon ignorance, je suis nouveau à python et je me familiarise toujours avec.
Pour une solution propre qui imprime correctement legend
et xticks
, vous pouvez
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()
Pour subplots
, définissez simplement les keyword
respectifs sur True
:
plot_df.plot(subplots=True)
obtenir:
Tu peux faire:
import matplotlib
matplotlib.style.use('ggplot')
import matplotlib.pyplot as plt
plt.figure()
df.groupby(['Year','Fungicide']).sum().unstack().plot()
Données
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
quelque chose comme:
df_grouped = df.groupby('Fungicide')
for key, group in df_grouped:
group.groupby('Year')['Value'].sum().plot(ax=ax,label=key)
En utilisant for loop sur un objet groupby, vous parcourrez chaque groupe, en attribuant la clé (par exemple, `` A '' ou `` B '', les valeurs de la colonne par laquelle il a été groupé) et le groupe de données à chaque fois.
Voir ici pour un exemple
http://pandas.pydata.org/pandas-docs/stable/groupby.html#iterating-through-groups