在Jupyter中使用Pandas与GluonTS时遇类型错误的求助
问题分析与解决方案
核心错误原因
你遇到的TypeError: cannot infer freq from a non-convertible index type <class 'pandas.core.indexes.numeric.Int64Index'>,本质是GluonTS的PandasDataset要求输入的DataFrame是时间序列格式——它需要基于时间的索引(DatetimeIndex),或者明确指定时间戳列和时间频率参数,否则无法自动推断时间序列的频率,进而抛出错误。
另外你的代码还有两个小问题:
- 变量名笔误:
dataset = PandasDataset(df2)中df2未定义,应该是筛选后的df - 读取CSV时的
DtypeWarning:是因为第2列存在混合数据类型,需要在读取时指定类型或关闭低内存检查
修复步骤与完整代码
1. 读取CSV并处理时间列
全球城市温度数据集通常包含Year、Month、Day这类拆分的时间字段,需要先将它们合并为一个完整的时间戳列,再设置为DataFrame的索引(或者明确告诉PandasDataset哪一列是时间戳)。
2. 筛选目标城市数据
正确筛选City为Algiers的行。
3. 正确初始化PandasDataset
可以通过两种方式:
- 方式一:将时间列设置为DataFrame的
DatetimeIndex,让PandasDataset自动推断频率 - 方式二:保留原索引,显式指定
timestamp参数(时间列名)和freq参数(时间频率,比如每日频率D)
以下是完整修复后的代码:
import pandas as pd import matplotlib.pyplot as plt import scipy from gluonts.dataset.pandas import PandasDataset from gluonts.dataset.split import split from gluonts.torch import DeepAREstimator # 1. 读取CSV,处理时间列,修复类型警告 df = pd.read_csv( "city_temperature.csv", low_memory=False, # 关闭低内存检查,解决DtypeWarning dtype={"Column2": str} # 如果知道第2列的类型,也可以指定,比如字符串类型 ) # 合并年、月、日为时间戳列,注意数据集可能有无效日期(比如2月30日),需要errors='coerce'转为NaT df['timestamp'] = pd.to_datetime( df[['Year', 'Month', 'Day']].astype(str).agg('-'.join, axis=1), errors='coerce' ) # 移除无效时间的行 df = df.dropna(subset=['timestamp']) # 2. 筛选Algiers的数据 df = df[df["City"] == "Algiers"] # 3. 方式一:设置时间列为索引,初始化PandasDataset df = df.set_index('timestamp') dataset = PandasDataset(df, target='Temperature') # 指定目标列(温度列,根据你的数据集列名调整) # 或者方式二:不设置索引,显式指定timestamp和freq参数 # dataset = PandasDataset(df, target='Temperature', timestamp='timestamp', freq='D') # 后续的拆分、训练代码可以正常执行 training_data, test_gen = split(df, offset=-36) test_data = test_gen.generate_instances(prediction_length=12, windows=3)
关键说明
PandasDataset的核心是用于时间序列预测,因此必须明确时间维度:要么索引是时间类型,要么通过timestamp参数指定时间列,同时freq参数需要和你的数据频率匹配(比如每日数据用D,每月用M)- 处理无效日期时,
pd.to_datetime的errors='coerce'会把无效日期转为NaT,后续用dropna移除这些行,避免影响后续处理 - 关于
target参数:需要指定你要预测的列名(比如温度列,通常数据集里是Temperature,请根据你的实际列名调整)
内容的提问来源于stack exchange,提问作者Johnson Carson
相关产品推荐
相关产品推荐

