making a stacked barchart in pandas
13,818
I've put data shown in stackpandas.dat
. Given those data:
from pandas import *
import matplotlib.pyplot as plt
df = read_table("stackpandas.dat"," +",engine='python')
df = df.convert_objects(convert_numeric=True)
sub_df1 = df.groupby(['RECL_LCC'])['COUNT'].sum()
sub_df2 = df.groupby(['RECL_PI'])['COUNT'].sum()
sub_df = concat([sub_df1,sub_df2],keys=["RECL_LCC","RECL_PI"]).unstack()
sub_df.plot(kind='bar',stacked=True,rot=1)
plt.show()
... gives:
... which I think is what is sought.
Author by
user308827
Updated on June 04, 2022Comments
-
user308827 almost 2 years
I would like to create a stacked bar plot from the following dataframe:
VALUE COUNT RECL_LCC RECL_PI 0 1 15686114 3 1 1 2 27537963 1 1 2 3 23448904 1 2 3 4 1213184 1 3 4 5 14185448 3 2 5 6 13064600 3 3 6 7 27043180 2 2 7 8 11732405 2 1 8 9 14773871 2 3
There would be 2 bars in the plot. One for
RECL_LCC
and other forRECL_PI
. There would be 3 sections in each bar corresponding to the unique values inRECL_LCC
andRECL_PI
i.e 1,2,3 and would sum up theCOUNT
for each section. So far, I have something like this:df = df.convert_objects(convert_numeric=True) sub_df = df.groupby(['RECL_LCC','RECL_PI'])['COUNT'].sum().unstack() sub_df.plot(kind='bar',stacked=True)
However, I get this plot:
Any idea on how to fix it? I am doing something wrong with the
groupby
, but not sure of the solution