2016-11-05 2 views
1

다른 대출 상태의 레벨에서 집 소유권을보고 있는데 스택 막대 차트를 백분율로 표시하고 싶습니다.groupby를 사용하여 가로 막 대형 가로 막 대형 차트 만들기

이 코드를 사용하여 주파수 누적 막대 차트를 만들 수있었습니다 : 1

하지만 그래프를 변환하는 방법을 알아낼 수 없습니다 : 나에게이 사진을 제공

df_trunc1=df[['loan_status','home_ownership','id']] 
sub_df1=df_trunc1.groupby(['loan_status','home_ownership'])['id'].count() 
sub_df1.unstack().plot(kind='bar',stacked=True,rot=1,figsize=(8,8),title="Home ownership across Loan Types") 

을 비율로. 그래서 예를 들어, I 등, 자신의 저당을,이 비율 기본 그룹 내에서 좀하고 싶습니다

다음

내 GROUPBY 테이블이 컨텍스트 2입니다 :

감사합니다!

+0

텍스트가 아닌 그림으로 질문에 GROUPBY 데이터를 추가; 응답이 더 쉽고 가능성이 높습니다. – cco

답변

1

난 당신이 비율을 직접 변환 할 필요가 믿는 :

d = {('Default', 'MORTGAGE'): 498, ('Default', 'OWN'): 110, ('Default', 'RENT'): 611, ('Fully Paid', 'MORTGAGE'): 3100, ('Fully Paid', 'NONE'): 1, ('Fully Paid', 'OTHER'): 5, ('Fully Paid', 'OWN'): 558, ('Fully Paid', 'RENT'): 2568, ('Late (16-30 days)', 'MORTGAGE'): 1101, ('Late (16-30 days)', 'OWN'): 260, ('Late (16-30 days)', 'RENT'): 996, ('Late (31-120 days)', 'MORTGAGE'): 994, ('Late (31-120 days)', 'OWN'): 243, ('Late (31-120 days)', 'RENT'): 1081} 

sub_df1 = pd.DataFrame(d.values(), columns=['count'], index=pd.MultiIndex.from_tuples(d.keys())) 
sub_df2 = sub_df1.unstack() 
sub_df2.columns = sub_df2.columns.droplevel() # Drop `count` label. 
sub_df2 = sub_df2.div(sub_df2.sum()) 
sub_df2.T.plot(kind='bar', stacked=True, rot=1, figsize=(8, 8), 
       title="Home ownership across Loan Types") 

enter image description here

sub_df3 = sub_df1.unstack().T 
sub_df3.index = sub_df3.index.droplevel() # Drop `count` label. 
sub_df3 = sub_df3.div(sub_df3.sum()) 
sub_df3.T.plot(kind='bar', stacked=True, rot=1, figsize=(8, 8), 
       title="Home ownership across Loan Types") 

enter image description here

+0

y 축이 0에서 4로 바뀌는 것을 제외하고는 같은 높이에서 이전과 같은 상대 높이의 막대를 계속 제공합니다. 왜 그런 일이 발생했는지에 대한 생각이 있습니까? – yogz123

+0

몇 가지 샘플 데이터를 게시 할 수 있습니까? 'sub_df1.to_dict ('list')' – Alexander

+0

'list'를 사용하는 동안 오류가 발생하여 대신 'dict'을 사용했습니다. 도움이되지 않는다면 알려주십시오. 0, (기본값 : 'RENT') : 611, ('완전 지불', 'MORTGAGE') : { : 3100, ('완전 지불', '없음') : 1, ('완전 지불', '기타') : 5, ('완전 지불', '소유자') : 558, ('완전 지불 ','RENT ') : 2568, ('Late (16-30 일) ','MORTGAGE ') : 1101, ('지연 (16-30 일) ','OWN ') : 260, (' 996, ('후기 (31-120 일)', 'MORTGAGE') : 994, ('늦은 (31-120 일)', 'OWN') : 243, ('Late (31-120 days)', 'RENT') : 1081} – yogz123