【问题标题】:JSONDecodeError encountered when loading data with pandas_datareader使用 pandas_datareader 加载数据时遇到 JSONDecodeError
【发布时间】:2021-07-20 02:42:53
【问题描述】:
import json
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib import style
import pandas as pd
import pandas_datareader.data as web
import yfinance as yf
yf.pdr_override()
style.use('ggplot')
start = dt.datetime(2020,1,1)
end = dt.datetime.now()
df = web.get_data_yahoo('AMD', start, end)
df1 = json.load(df)
print(df1)

错误

Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\threading.py", line 917, in _bootstrap_inner
    self.run()
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\site-packages\multitasking\__init__.py", line 102, in _run_via_pool
    return callee(*args, **kwargs)
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\site-packages\yfinance\multi.py", line 168, in _download_one_threaded
    actions, period, interval, prepost, proxy, rounding)
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\site-packages\yfinance\multi.py", line 183, in _download_one
    rounding=rounding, many=True)
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\site-packages\yfinance\base.py", line 157, in history
    data = data.json()
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\models.py", line 900, in json
    return complexjson.loads(self.text, **kwargs)
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\monst\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我将 pandas_datareader 更新为 0.7,将我的 pandas 更新为 0.24.1,但它仍然会发生,请解释一下这里发生了什么,我也试试这个方法 .json() 和 to_json() 但没有任何效果

amd = yf.Ticker("amd")
amd_price = amd.history(period="max")
amd_Volume = amd_price["Volume"]
amd_Volume = amd_Volume.reset_index()
amd_Volume = pd.DataFrame(amd_Volume)
print(amd_Volume)
amd_Volume = amd_Volume.sort_values(by="Volume")
print(amd_Volume.tail(1))

看到这段代码为什么会出现同样的错误?

【问题讨论】:

  • 非常感谢您发布完整的问题示例!让调试变得非常容易。

标签: json pandas pandas-datareader yfinance


【解决方案1】:

pandas-datareader get_data API 返回 pandas.DataFrames,而不是字符串 json 对象或文件。

json.load 需要一个文件对象,而不是 DataFrame。您得到的错误只是说 JSON 模块需要不同的对象类型。

您应该可以跳过最后一行,直接使用数据框df

【讨论】:

  • 你好,看代码上面的新代码谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 2015-09-07
  • 2020-05-07
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多