Încerc să creez un grafic de bare stivuite care să reproducă imaginea, toate datele mele sunt separate de acea foaie de calcul Excel.
Nu pot să-mi dau seama cum să fac un cadru de date pentru el ca în imagine și nici nu pot să-mi dau seama cum să fac graficul de bare stivuite. Toate exemplele pe care le localizez funcționează în moduri diferite față de ceea ce încerc să creez eu.
Dataframe-ul meu este un csv cu toate valorile restrânse la următoarele cu un dataframe pandas.
Site Name Abuse/NFF
0 NORTH ACTON ABUSE
1 WASHINGTON -
2 WASHINGTON NFF
3 BELFAST -
4 CROYDON -
Am reușit să număr datele cu totaluri și să obțin numărători individuale pentru fiecare site, doar că nu reușesc să le combin într-un mod care să permită realizarea unui grafic.
Aș aprecia foarte mult niște îndrumări puternice.
Cod finalizat, multe mulțumiri pentru asistență completarea.
test5 = faultdf.groupby(['Site Name', 'Abuse/NFF'])['Site Name'].count().unstack('Abuse/NFF').fillna(0)
test5.plot(kind='bar', stacked=True)
- Asta produce acest lucru i.imgur.com/hocPgWg.jpg ceea ce nu este chiar corect, am nevoie ca partea stivuită să fie numărul coloanei de abuz / nff pentru fiecare site. Nu primesc erori, doar că mă chinui să încep. Mulțumesc pentru răspuns. – > .
- Am actualizat răspunsul meu pentru a include partea [‘Abuse/NFF’] după funcția groupby. Adăugarea acestui lucru înseamnă că coloana Abuzuri va fi singura valoare care este agregată (numărată în acest exemplu). – > .
- Nu funcționează din păcate, este practic același grafic acum, dar fără a fi stivuit, fără erori, fără legendă, fără verde practic. Numără mai degrabă totalurile decât totalurile valorilor din coloanele per magazin, dacă are sens. – > .
- O altă încercare. Dacă doriți să vedeți golurile, schimbați începutul ultimei linii în… df2.plot( – > .
- Noroc pentru încă o încercare, dar tot nu am avut nicio bucurie. Va pune codul pe întrebarea mea de mai sus , obținând o eroare. KeyError: „[‘ABUSE’ ‘NFF’ ‘NFF’ ‘-‘] not in index” Am făcut ajustări la cod astfel încât să se potrivească cu dataframe-ul meu, dar se pare că nu reușesc să-l fac să funcționeze, de asemenea, vreau – în rezultate, trebuie să schimb – pentru a însemna defectuos, dar nu am reușit să fac asta. – > .
Asta ar trebui să vă ajute
df.groupby(['NFF', 'ABUSE']).size().unstack().plot(kind='bar', stacked=True)
Poate că puteți folosi funcția crosstab din pandas
test5 = pd.crosstab(index=faultdf['Site Name'], columns=faultdf[''Abuse/NFF''])
test5.plot(kind='bar', stacked=True)
Dacă doriți să modificați dimensiunea graficului utilizarea arg figsize
df.groupby(['NFF', 'ABUSE']).size().unstack()
.plot(kind='bar', stacked=True, figsize=(15, 5))
KeyError
legat de index atunci când încercați răspunsul acceptat, utilizați codul completat aici în întrebare. – > Por KobeJohn.