使用CSV文件绘制散点图遇KeyError,求修复方案(含3D散点图需求)
解决2D散点图KeyError问题及实现双变量3D散点图
先解决KeyError问题
出现KeyError的核心原因是代码中指定的列名在CSV文件里不存在,或列名匹配错误,按以下步骤排查:
- 确认CSV实际列名:加载数据后添加代码打印所有列名,检查是否和你用的
fertilizer_addition、corn_weight完全一致(注意空格、大小写、下划线/空格的差异):
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("C:/Users/theet/Desktop/ITMLA/Assignment/merka_agri_corn_experiment.csv") # 打印所有列名 print(df.columns.tolist()) # 查看前5行数据,确认列与内容对应 print(df.head())
比如如果CSV里列名是fertilizer addition(空格代替下划线),代码里就要写成df["fertilizer addition"]。
- 检查CSV读取参数:如果CSV用分号、制表符等其他分隔符,需指定
sep参数,示例:
df = pd.read_csv("你的文件路径", sep=";") # 分隔符为分号时使用
实现双变量的3D散点图
3D散点图需要三个坐标轴,仅用两个变量的话,可以把其中一个变量映射到z轴(比如设为固定值,或重复其中一个变量),示例代码如下:
import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 确保列名正确后加载数据 df = pd.read_csv("C:/Users/theet/Desktop/ITMLA/Assignment/merka_agri_corn_experiment.csv") x = df["fertilizer_addition"] # 替换为实际正确的列名 y = df["corn_weight"] # 替换为实际正确的列名 # 用固定值作为z轴,也可以用x或y的重复值 z = [0]*len(x) # 创建3D绘图对象 fig = plt.figure(figsize=(10,7)) ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z, c='blue', marker='o') # 设置图表标签和标题 ax.set_title("30天实验:施肥量与玉米重量的3D关系") ax.set_xlabel("施肥量") ax.set_ylabel("玉米重量") ax.set_zlabel("Z轴(固定值)") plt.show()
内容的提问来源于stack exchange,提问作者tshepo
相关产品推荐
相关产品推荐

