2014-10-31 6 views
3

Я хотел бы создать столбчатый сюжет из следующего 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 

Там будет 2 бара на графике. Один для RECL_LCC и другой для RECL_PI. В каждом баре будет 3 секции, соответствующие уникальным значениям в RECL_LCC и RECL_PI i.e 1,2,3, и суммируют COUNT для каждого раздела. До сих пор, у меня есть что-то вроде этого:

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) 

Однако я получаю этот сюжет: enter image description here

Любая идея о том, как это исправить? Я делаю что-то неправильно с groupby, но не уверен в решении

ответ

5

Я поместил данные, показанные в stackpandas.dat. Учитывая эти данные:

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() 

... дает: enter image description here

... который я думаю, это то, что ищется.

+0

спасибо! это работает – user308827