python - 熊猫加载csv文件ValueError
问题描述
该脚本的目的是读取一个 csv 文件并创建一个 pandas 数据框,然后使用 OOP 样式打印前 5 个原始数据。
这是代码:
import pandas as pd
import talib
class Data:
def __init__(self):
self.df = pd.DataFrame()
self.names = ['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']
self.file(self)
def file(self, file):
df = pd.read_csv(file, names=self.names,
parse_dates={'Release Date': ['Date', 'Time']})
print(df.head())
x = Data()
x.file(file=r"D:\Projects\Project Forex\EURUSD.csv")
这是错误:
Traceback (most recent call last):
File "C:/Users/Sayed/PycharmProjects/project/Technical Analysis.py", line 15, in <module>
x = Data()
File "C:/Users/Sayed/PycharmProjects/project/Technical Analysis.py", line 9, in __init__
self.file(self)
File "C:/Users/Sayed/PycharmProjects/project/Technical Analysis.py", line 13, in file
parse_dates={'Release Date': ['Date', 'Time']})
File "C:\Users\Sayed\miniconda3\lib\site-packages\pandas\io\parsers.py", line 676, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Users\Sayed\miniconda3\lib\site-packages\pandas\io\parsers.py", line 431, in _read
filepath_or_buffer, encoding, compression
File "C:\Users\Sayed\miniconda3\lib\site-packages\pandas\io\common.py", line 200, in get_filepath_or_buffer
raise ValueError(msg)
ValueError: Invalid file path or buffer object type: <class '__main__.Data'>
解决方案
罪魁祸首是__init__
:的最后一行self.file(self)
。当它被调用时__init__
,self
是一个Data
对象,而该file
方法必须使用包含 csv 文件路径的字符串来调用。
修复很简单:删除该行:
class Data:
def __init__(self):
self.df = pd.DataFrame()
self.names = ['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']
def file(self, file):
...
但它仍然不一致:self.df
初始化为空数据框,这很好,但该file
方法不会更新它,而是使用局部变量df
(与self.df
Python 不同)。你应该做:
def file(self, file):
self.df = pd.read_csv(file, names=self.names,
parse_dates={'Release Date': ['Date', 'Time']})
print(self.df.head())
推荐阅读
- mysql - 在 MySQL 数据库中导入程序
- python - 模块 VLC 没有属性 MusicPlayer
- vim - 将 gf 与 Webpack 别名目录一起使用
- javascript - 如何使用 Selectric.js 启用单词搜索?
- lua - 如何使用 lua 在 lighttpd + mod_magnet 中处理 POST 请求?
- discord - 如何使用机器人转移不和谐服务器的所有权
- git-bash - Windows 10 的超级终端 git bash 配置
- c++ - 使用 C++ 以编程方式更改 Mac OS 用户密码
- c++ - 如何在构造函数或重载运算符中捕获异常?
- python - 在日志文件中查找每天的 min() 和 max()