![](/img/trans.png)
[英]ValueError: Expected object or value <-> Can't load a json file to pandas dataframe, or convert to csv, either will suffice
[英]pandas load csv file 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
object,而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
被初始化為一個空的dataframe,這很好,但是file
方法沒有更新它,而是使用局部變量df
(與Python中的self.df
不同)。 你應該做:
def file(self, file):
self.df = pd.read_csv(file, names=self.names,
parse_dates={'Release Date': ['Date', 'Time']})
print(self.df.head())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.