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

导入CSV数据用seaborn的regplot、lmplot无回归线且报UFuncTypeError如何解决

问题解决方法

错误原因

报错UFuncTypeError的核心原因是CSV中的Date 2.0列被pandas默认读取为字符串类型,线性回归运算需要数值型自变量,字符串无法参与乘法运算导致报错。日期显示挤压是因为x轴为字符串类型时,刻度默认没有做旋转和间距优化。

修复代码

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 读取数据时直接解析日期列为datetime类型
df = pd.read_csv('Tokyo rent (One Bedroom apartment in the city centre).csv', 
                 thousands=',',
                 parse_dates=['Date 2.0'])

# 生成数值型时间特征用于回归计算:转换为距离最早日期的天数
df['days_from_start'] = (df['Date 2.0'] - df['Date 2.0'].min()).dt.days

# 用数值特征做自变量拟合回归模型
g = sns.lmplot(x='days_from_start', y='Rent(Local Currency)', data=df)
ax = g.axes[0][0]

# 替换x轴刻度为日期格式,解决显示挤压问题
ax.set_xticks(df['days_from_start'])
ax.set_xticklabels(df['Date 2.0'].dt.strftime('%Y-%m-%d'))
ax.set_xlabel('Date')
# 旋转45度避免日期重叠
g.figure.autofmt_xdate(rotation=45)

plt.show()

代码说明

  • 读取数据时通过parse_dates参数直接将Date 2.0转换为datetime格式,无需手动处理类型
  • 新增的days_from_start为纯数值列,满足线性回归的输入要求,不会再触发类型错误
  • 绘图后手动将x轴刻度替换为日期格式,配合旋转操作彻底解决日期挤压重叠问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:27:04