Python股价预测代码调用pandas报method不可迭代错误如何解决
问题根因
本次报错和遗漏括号没有关系,核心是函数传参类型不匹配:
你在代码开头已经通过pd.read_csv()将两个黄金价格CSV文件读取为pandas DataFrame对象,赋值给了Gold_train_data、Gold_test_data变量。后续调用load_stock_data()时,把已经加载完成的DataFrame对象(current_test_data)当成CSV文件路径字符串,传给了函数内部的pd.read_csv()作为第一个入参。pandas无法将DataFrame识别为合法的文件路径/文件缓冲对象,执行路径校验逻辑时触发类型错误。
排查修复步骤
- 修正
load_stock_data的调用方式:这个函数的设计逻辑是接收CSV文件路径字符串作为第一个入参,内部自行完成文件读取,不需要提前读好DataFrame传入。直接把文件名字符串作为参数传入即可,示例修正:
如果你想保留提前读文件的逻辑,就删掉# 错误写法:传入提前读好的DataFrame # print(load_stock_data(current_test_data, NUM_test_data)) # 正确写法:传入CSV文件路径 print(load_stock_data('Gold Data Last Month.csv', NUM_test_data))load_stock_data函数内部的pd.read_csv代码,直接处理传入的DataFrame即可,不要重复调用读文件接口。 - 修复numpy版本兼容问题:代码里用的
np.float在新版NumPy中已经被弃用,运行时会抛出弃用警告,替换为原生float或者np.float64即可:# 原弃用写法 # final_prices = data['Price'].astype(str).str.replace(',','').astype(np.float) # opening_prices = data['Open'].astype(str).str.replace(',', '').astype(np.float) # 修正后写法 final_prices = data['Price'].astype(str).str.replace(',','').astype(float) opening_prices = data['Open'].astype(str).str.replace(',', '').astype(float) - 补全成交量字段的处理逻辑:当前写的
data['Vol.'].str.strip('MK')仅能删除成交量字符串末尾的M、K单位字符,无法完成单位换算。比如值为1.5M的成交量处理后得到1.5,实际代表1500000,后续如果要把成交量作为特征输入预测模型,需要补充单位换算逻辑,否则特征数值完全错误。
验证逻辑
修复完成后先单独运行load_stock_data,检查返回的收盘价、开盘价、成交量序列是否存在缺失值、异常值;再调用calculate_price_differences计算价格差,确认返回的序列长度为传入数据点数减1,就可以继续后续的预测模型开发。
内容的提问来源于stack exchange,提问作者New_Prog
相关产品推荐
相关产品推荐

