Nicktang33 2024-04-18 12:38 采纳率: 0%
浏览 52

请问为什麽我无法用DataReader 抓到数据?

请问为什麽我无法用DataReader 抓到数据? 谢谢

import numpy as np
import pandas as pd
from pandas_datareader import data as web
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt

start = dt.datetime (2023,1,1)
end = dt.datetime (2024,1,1)

df = web.DataReader ("NVDA", 'yahoo', start, end)

*** AttributeError: 'NoneType' object has no attribute 'group'

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-18 12:38
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试使用pandas_datareader库从Yahoo Finance抓取NVIDIA(NVDA)的股票数据时遇到了一个问题。错误信息表明在尝试调用一个对象的方法时,这个对象是None类型,这意味着它没有被正确初始化或返回了空值。

    这个问题可能是由于几个原因导致的,包括网络连接问题、Yahoo Finance API 变化或者是pandas_datareader版本的问题。首先,我们可以尝试更新pandas_datareader库,确保你使用的是最新版。然后,检查网络连接是否正常,以及是否有防火墙或代理服务器阻止了数据获取。

    下面是按照这些步骤进行操作的代码示例:

    # 更新pandas_datareader库(如果有必要)
    !pip install --upgrade pandas-datareader
    
    import numpy as np
    import pandas as pd
    from pandas_datareader import data as web
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import datetime as dt
    
    # 确保日期格式正确
    start = dt.datetime(2023, 1, 1)
    end = dt.datetime(2024, 1, 1)
    
    try:
        # 尝试获取数据
        df = web.DataReader("NVDA", "yahoo", start, end)
    except Exception as e:
        print(f"Error occurred while fetching data: {str(e)}")
    
    # 检查df是否为空
    if df is None or len(df) == 0:
        print("No data was retrieved. Please check your internet connection and try again.")
    else:
        # 如果数据成功获取,可以进一步处理数据
        df["Date"] = pd.to_datetime(df.index)
        df.set_index("Date", inplace=True)
        df.plot(kind="line", y="Close")
        plt.xlabel('Date')
        plt.ylabel('Closing Price')
        plt.title('NVDA Stock Price from 2023-01-01 to 2024-01-01')
        plt.show()
    

    这段代码首先会尝试更新pandas_datareader库,然后尝试读取数据,并捕获可能的异常。如果数据获取成功,它将绘制收盘价随时间变化的折线图。如果数据为空,则会提示用户检查网络连接并重试。如果你仍然遇到问题,可能需要检查你的Python环境设置或者联系Yahoo Finance支持以了解API的变化。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月18日