You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas制作按Sex分组的disease计数分组条形图

按性别分组的患病计数分组条形图实现方法

你之前的代码直接将Sex设为索引后绘图,本质是把每一行数据单独生成条形,没有对同性别、同患病状态的样本做计数统计,所以显示的是单个数据点而非总计。要实现目标分组条形图,需要先完成统计再绘图,具体步骤如下:

步骤1:统计分组计数

可以用两种方式得到每个性别下患病(disease=1)和未患病(disease=0)的人数:

方法一:用pd.crosstab(直观简洁)

import pandas as pd
import matplotlib.pyplot as plt

# 生成统计结果:行是性别,列是患病状态,值为对应人数
count_df = pd.crosstab(heart_failure_df['Sex'], heart_failure_df['disease'])

方法二:用groupby+size+unstack

# 按性别、患病状态分组计数,再将多层索引转为列(fill_value=0避免缺失值)
count_df = heart_failure_df.groupby(['Sex', 'disease']).size().unstack(fill_value=0)

两种方法都会生成如下结构的统计DataFrame:

Sex01
f11
m12

步骤2:绘制分组条形图

基于统计后的DataFrame绘图,就能得到每个性别对应两个条形的分组图:

count_df.plot(kind='bar', figsize=(8, 5))
plt.xlabel('性别')
plt.ylabel('人数')
plt.title('不同性别患病/未患病人数统计')
plt.legend(['未患病', '患病'])  # 自定义图例名称,更直观
plt.show()

运行后会生成你需要的分组条形图:每个性别组包含两个条形,分别对应未患病和患病的人数。


内容的提问来源于stack exchange,提问作者blub_9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:25:19