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

如何通过用户输入选择列名,使用pandas和matplotlib绘制散点图

核心问题说明

你猜测的方向是对的,问题就出在动态字符串列名的访问方式不对,两段代码的差异如下:

  • 正常运行的代码中,datafile.Stat_Value属于pandas的属性式列访问,.后面的Stat_Value是固定写死的列名,Python会直接用这个名称去DataFrame中匹配对应列,能正常拿到数据。
  • 问题代码中,input()返回的是字符串类型的列名,存储在xdata、ydata变量中,此时写datafile.xdata,Python会直接去找名称为xdata的列,而不会解析xdata变量里存储的真实列名字符串,自然拿不到绘图所需的列数据。
修复方法

把列访问的写法替换为中括号式动态访问即可,该写法会自动解析变量中存储的字符串作为列名,修改后的代码片段如下:

xdata = input("Enter field for x axies")
ydata = input("Enter field for y axies")

x = datafile[xdata]
y = datafile[ydata]

可选优化

为了避免用户输入不存在的列名导致程序报错,可以增加列名校验逻辑,示例如下:

# 先输出所有可用列名给用户参考
print("当前数据集可用列名:", datafile.columns.tolist())
xdata = input("请输入x轴字段名:")
ydata = input("请输入y轴字段名:")

if xdata not in datafile.columns or ydata not in datafile.columns:
    print("输入的字段名不存在,请检查后重新运行程序")
else:
    x = datafile[xdata]
    y = datafile[ydata]
    Scatterplot(x, y)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:45:03