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

Jupyter Notebook中price列转int后Plot绘图结果异常求解

Jupyter notebook plot异常输出结果

遗漏的必要操作

你有两个关键步骤没做对:

  • 类型转换没有回写赋值。执行df['price'].astype(int)不会修改原列数据,必须把转换结果重新赋值给原列,也就是写df['price'] = df['price'].astype(int)才算真正执行了转换,你现在的price列本质还是存储字符串的object类型,根本没变成int。
  • 没有做转换前的脏数据清洗,也没有做转换后的类型校验。price列通常会带货币符号、千分位逗号、首尾空格这类非数值内容,直接转int会报错,你能顺利跑通绘图,恰恰说明转换根本没生效。正常转完类型必须用df['price'].dtype校验,返回值是int64才算转换成功,返回object就是没转对。

该图表的实际含义

当你给绘图函数传入字符串格式的列时,matplotlib不会自动把字符串解析成数值做坐标映射,而是会把每个字符串按照首次出现的顺序分配一个整数排位,再按行的顺序把这些排位连起来成线。你现在看到的密密麻麻的乱线,本质是每一行price字符串的出现排位连线,和价格数值的分布、趋势完全没有关系,没有任何业务参考价值。

修正步骤

  1. 先清洗price列的非数值字符:
# 以带美元符、千分位逗号的价格格式为例,按需调整匹配规则
df['price'] = df['price'].str.replace(r'[\$,]', '', regex=True).str.strip()
  1. 执行类型转换并回写:
df['price'] = df['price'].astype(int)
  1. 校验类型无误后再绘图,就能得到正常的价格相关图表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:30:50