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

Pandas数据集datetime列导致corr()及Seaborn绘图报错如何解决?

首先明确所有问题的核心诱因:datetime类型属于时间对象,不属于可参与数值计算的数值类型,pandas相关性计算、seaborn回归类绘图默认仅处理数值类型输入,你不需要修改原有datetime列的格式,只要新增一列将时间转换为可计算的数值格式即可解决所有问题。

具体操作步骤

  1. 新增数值型时间特征列,有两种常用转换方式可选:
  • 转换为Unix时间戳(秒级整数,通用场景)
# 转成秒级时间戳,也可以去掉//10**9保留纳秒级精度
df['timestamp'] = df['Tarih'].astype('int64') // 10**9
  • 转换为距数据集最早时间的间隔值(适合时间间隔均匀的序列场景,你的数据集为15分钟间隔,可按需求调整单位)
min_date = df['Tarih'].min()
# 这里计算的是距离最早时间的15分钟间隔数,也可以换成小时/天等单位
df['time_delta'] = (df['Tarih'] - min_date).dt.total_seconds() / (15 * 60)
  1. 对应场景调整调用代码:
  • 计算相关系数:新增数值列后直接调用df.corr(),返回结果就会包含时间与通话量的相关系数
  • pairplot绘图:指定数值型时间列作为特征即可,也可以通过vars参数指定要展示的列减少冗余输出
sns.pairplot(df, vars=['timestamp', 'ToplamCagri'], kind="reg")
  • jointplot绘图:将x参数替换为新增的数值型时间列即可解决报错
sns.jointplot(x="timestamp",y="ToplamCagri",data=df, kind="reg")

如果需要x轴展示原始日期格式,后续可以手动设置xticks将数值映射为对应的时间字符串即可。

补充说明:如果不需要做回归拟合,仅绘制时间序列趋势图,直接使用原有datetime列作为x轴即可,比如调用sns.lineplot(x='Tarih', y='ToplamCagri', data=df)不会触发类型报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:00:04