web-dev-qa-db-fra.com

Pandas - Tracer un graphique à barres empilées

J'essaie de créer un graphique à barres empilées qui reproduit l'image. Toutes mes données sont séparées de cette feuille de calcul Excel.

enter image description here

Je n'arrive pas à comprendre comment créer un cadre de données comme pour l'illustrer, ni à créer un graphique à barres empilées. Tous les exemples que je localise fonctionnent différemment de ce que j'essaie de créer.

Mon dataframe est un csv de toutes les valeurs ramenées au suivant avec un dataframe pandas.

      Site Name    Abuse/NFF
0    NORTH ACTON       ABUSE
1    WASHINGTON         -
2    WASHINGTON        NFF
3    BELFAST            -
4    CROYDON            - 

J'ai réussi à compter les données avec les totaux et à obtenir des comptes individuels pour chaque site. Je n'arrive tout simplement pas à les combiner de manière graphique.

J'apprécierais vraiment de solides conseils.

Code terminé, merci beaucoup pour l’aide fournie.

test5 = faultdf.groupby(['Site Name', 'Abuse/NFF'])['Site Name'].count().unstack('Abuse/NFF').fillna(0)

test5.plot(kind='bar', stacked=True)
31
Kuzen

Avez-vous des erreurs ou vous ne savez pas par où commencer?

%pylab inline
import pandas as pd
import matplotlib.pyplot as plt

df2 = df.groupby(['Name', 'Abuse/NFF'])['Name'].count().unstack('Abuse/NFF').fillna(0)
df2[['abuse','nff']].plot(kind='bar', stacked=True)

 stacked bar plot

65
chucklukowski

Cela devrait aider

df.groupby(['NFF', 'ABUSE']).size().unstack().plot(kind='bar', stacked=True)
8
Domino

Peut-être que vous pouvez utiliser fonction d'analyse croisée des pandas

test5 = pd.crosstab(index=faultdf['Site Name'], columns=faultdf[''Abuse/NFF''])

test5.plot(kind='bar', stacked=True)