绘制两列数据柱状图触发KeyError,求正确实现代码
错误原因及修正代码
核心错误点
- 列选择语法错误:选取DataFrame多列时必须用双层方括号
df[["列名1", "列名2"]],你写的df["gender", "heart_disease"]会被识别成元组索引,直接触发KeyError。 - 绘图逻辑偏差:直接绘制原始两列数据无法体现性别与心脏病的关联关系,需要先统计不同性别下心脏病的分布频数。
正确代码示例
方式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
相关产品推荐
相关产品推荐

