I am trying to create a stacked bar graph with pandas that replicates the picture, all my data is separate from that excel spreadsheet.
I can't figure out how to make a dataframe for it like pictured, nor can I figure out how to make the stacked bar chart. All examples I locate work in different ways to what I'm trying to create.
My dataframe is a csv of all values narrowed down to the following with a pandas dataframe.
Site Name Abuse/NFF
0 NORTH ACTON ABUSE
1 WASHINGTON -
2 WASHINGTON NFF
3 BELFAST -
4 CROYDON -
I have managed to count the data with totals and get individual counts for each site, I just cant seem to combine it in a way to graph.
Would really appreciate some strong guidance.
Completed code, many thanks for the assistance completing.
test5 = faultdf.groupby(['Site Name', 'Abuse/NFF'])['Site Name'].count().unstack('Abuse/NFF').fillna(0)
test5.plot(kind='bar', stacked=True)
Are you getting errors, or just not sure where to start?
%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)
That should help
df.groupby(['NFF', 'ABUSE']).size().unstack().plot(kind='bar', stacked=True)
Maybe you can use pandas crosstab function
test5 = pd.crosstab(index=faultdf['Site Name'], columns=faultdf['Abuse/NFF'])
test5.plot(kind='bar', stacked=True)
If you want to change the size of plot the use arg figsize
df.groupby(['NFF', 'ABUSE']).size().unstack()
.plot(kind='bar', stacked=True, figsize=(15, 5))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With