使用 Crosstab 和 groupby 问题绘图

Plotting with Crosstab and groupby question

我需要帮助,我不会使用交叉表制作这种图表 pandas。有什么帮助吗?

数据框

{'nome_munic': {66: 'Ferraz de Vasconcelos',
  97: 'São Paulo',
  100: 'São José dos Campos',
  207: 'Mauá',
  249: 'Cajamar',
  258: 'Votuporanga',
  285: 'Ferraz de Vasconcelos',
  290: 'São Paulo',
  345: 'São Pedro',
  378: 'São Paulo'},
 'codigo_ibge': {66: 3515707,
  97: 3550308,
  100: 3549904,
  207: 3529401,
  249: 3509205,
  258: 3557105,
  285: 3515707,
  290: 3550308,
  345: 3550407,
  378: 3550308},
 'idade': {66: 86,
  97: 62,
  100: 58,
  207: 54,
  249: 62,
  258: 37,
  285: 54,
  290: 71,
  345: 79,
  378: 61},
 'sexo': {66: 0,
  97: 0,
  100: 0,
  207: 1,
  249: 0,
  258: 1,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'obito': {66: 1,
  97: 0,
  100: 0,
  207: 1,
  249: 1,
  258: 1,
  285: 0,
  290: 1,
  345: 1,
  378: 0},
 'asma': {66: 0,
  97: 0,
  100: 0,
  207: 1,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'cardiopatia': {66: 1,
  97: 0,
  100: 1,
  207: 1,
  249: 1,
  258: 0,
  285: 1,
  290: 1,
  345: 0,
  378: 0},
 'diabetes': {66: 1,
  97: 1,
  100: 0,
  207: 0,
  249: 1,
  258: 1,
  285: 0,
  290: 0,
  345: 1,
  378: 0},
 'doenca_hematologica': {66: 0,
  97: 0,
  100: 0,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'doenca_hepatica': {66: 0,
  97: 0,
  100: 0,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'doenca_neurologica': {66: 0,
  97: 0,
  100: 0,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 1,
  345: 0,
  378: 0},
 'doenca_renal': {66: 0,
  97: 0,
  100: 0,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'imunodepressao': {66: 0,
  97: 0,
  100: 1,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'obesidade': {66: 0,
  97: 0,
  100: 0,
  207: 0,
  249: 1,
  258: 1,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'outros_fatores_de_risco': {66: 0,
  97: 0,
  100: 1,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 1},
 'pneumopatia': {66: 0,
  97: 1,
  100: 0,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'puerpera': {66: 0,
  97: 0,
  100: 0,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 0},
 'sindrome_de_down': {66: 0,
  97: 0,
  100: 0,
  207: 0,
  249: 0,
  258: 0,
  285: 0,
  290: 0,
  345: 0,
  378: 0}}
table = pd.crosstab(index=dados['obito'], columns=dados['asma', 'cardiopatia','diabetes','doenca_renal','obesidade']

IIUC,你可以试试:

df.pivot_table(index='obito', values=['asma', 'cardiopatia','diabetes','doenca_renal','obesidade']).T.plot(kind ='bar' , stacked = True)

输出: