Python: Создание гистограммы из фрейма данных панд сводной таблицы - PullRequest
0 голосов
/ 17 мая 2018

Я новичок в python, и мне было интересно, как создать барплот из этих данных, которые я создал с помощью функции сводной таблицы.

#Create a pivot table for handicaps count calculation for no-show people based on their gender 
pv = pd.pivot_table(df_main, values=['hipertension','diabetes','alcoholism'], 
                     columns='status',index='gender',aggfunc=np.sum)
#Reshape the pivot table for easier calculation 

data_pv = pv.unstack().unstack('status').reset_index().rename(columns={'level_0':'category','No-Show':'no_show', 'Show-Up':'show_up'})

data_pv['no_show_prop'] = (data_pv['no_show']/
                          (data_pv['no_show']+data_pv['show_up']))*100
data_pv

И в результате:

status  category    gender  no_show show_up no_show_prop
0   alcoholism      F        308       915     25.183974
1   alcoholism      M        369      1768     17.267197
2   diabetes        F        1017     4589     18.141277
3   diabetes        M        413      1924     17.672229
4   hipertension    F        2657    12682     17.321859
5   hipertension    M        1115     5347     17.254720

Я хочу создать гистограмму с категорией в качестве оси X и no_show_prop в качестве оси Y с двумя разными цветами, столбцы указывают на женский и мужской для каждой категории.Я также пытался использовать групповую игру, но это не получилось так, как я хотел.

Вместо столбца, как на этом рисунке ниже, я хочу создать гистограмму с категорией в качестве оси X и no_show_prop в качестве оси Y с двумя разными цветами, которые указывают на женский и мужской для каждой категории.Я также пытался использовать групповую игру, но это не получилось так, как я хотел.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Для такой задачи вы также можете просто использовать seaborn, что делает очень простым создание классифицированного барплота из DataFrame

import seaborn as sns

sns.barplot(x='category', y='no_show_prop', hue='gender', data=df)

enter image description here

0 голосов
/ 17 мая 2018

Я думаю, что это должно делать то, что вы ищете.Начиная с вашего текущего data_pv, вы можете сделать следующее, чтобы преобразовать данные в форму, которую проще отобразить так, как вы хотите.

df = data_pv.pivot(index='category', columns='gender', values='no_show_prop')

df теперь выглядит так:

gender                F          M
category                          
alcoholism    25.183974  17.267197
diabetes      18.141277  17.672229
hipertension  17.321859  17.254720

Тогда вы можете просто сделать:

df.plot(kind='bar')

enter image description here

...