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

绘制两列数据柱状图触发KeyError,求正确实现代码

错误原因及修正代码

核心错误点

  1. 列选择语法错误:选取DataFrame多列时必须用双层方括号df[["列名1", "列名2"]],你写的df["gender", "heart_disease"]会被识别成元组索引,直接触发KeyError。
  2. 绘图逻辑偏差:直接绘制原始两列数据无法体现性别与心脏病的关联关系,需要先统计不同性别下心脏病的分布频数。

正确代码示例

方式1:展示不同性别下的心脏病分布

import pandas as pd
import matplotlib.pyplot as plt

# 统计不同性别中,心脏病患病/未患病的人数
cross_tab = pd.crosstab(df["gender"], df["heart_disease"])

plt.figure(figsize=(3, 3))
cross_tab.plot(kind="bar", ax=plt.gca())
plt.xlabel("性别")
plt.ylabel("人数")
plt.title("不同性别中心脏病分布")
plt.legend(title="患病情况")
plt.tight_layout()
plt.show()

方式2:展示心脏病分组下的性别分布

import pandas as pd
import matplotlib.pyplot as plt

# 统计心脏病患病/未患病组中的性别人数
cross_tab = pd.crosstab(df["heart_disease"], df["gender"])

plt.figure(figsize=(3, 3))
cross_tab.plot(kind="bar", ax=plt.gca())
plt.xlabel("心脏病患病情况")
plt.ylabel("人数")
plt.title("心脏病分组下的性别分布")
plt.legend(title="性别")
plt.tight_layout()
plt.show()

补充:仅修正语法的原始数据绘图(不推荐)

如果只是想强行绘制原始两列数据(无法体现关联关系,仅满足语法正确):

plt.figure(figsize=(3, 3))
df[["gender", "heart_disease"]].plot(kind="bar")
plt.xlabel("样本索引")
plt.ylabel("数值")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:33:08