首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用Python从yahoofinance获得纳斯达克数据集后,我如何分析我的日期列

在用Python从yahoofinance获得纳斯达克数据集后,我如何分析我的日期列
EN

Stack Overflow用户
提问于 2022-11-03 15:45:46
回答 1查看 17关注 0票数 0

我从雅虎财经获得了如下实时数据:

代码语言:javascript
复制
ndx = yf.Ticker("NDX")

# get stock info

print(ndx.info)

# get historical market data
hist = ndx.history(period="1825d")

I downloaded it and Exported to CSV file as follows:
 #Download stock data then export as CSV

df = yf.download("NDX", start="2016-01-01", end="2022-11-02")
df.to_csv('ndx.csv')

Viewed the data as follows:
df = pd.read_csv("ndx.csv")
df

这些数据如图片所示:

问题..。每当我尝试使用Date列时,它都会将错误抛出为KeyError 'Date‘。这是我的自动Arima模型和抛出的错误。请帮帮忙。

抛错

我希望能够使用日期列。我试图解析Date列,但抛出了相同的错误。我首先需要帮助解析数据,以便将日期格式或字符串转换为日期格式或字符串。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-03 16:39:36

看到人们试图学习财务分析总是很棒的:

在我进入解决方案之前,

  • 只想提醒您确保您将导入的内容放在问题中(yfinance并不总是别名为yf)。还要确保您键入或复制/粘贴您的代码,以便我们可以轻松地获取它并运行它!

因此,我假设变量“”只是对pd.read_csv('ndx.csv')的调用,因为屏幕截图就是这样的。

首先,在读取文件后,始终检查列的数据类型:(假设您使用的是木星)

orig_df = pd.read_csv('ndx.csv')

orig_df.dtypes

  • Date是一个对象,意思是在熊猫中的字符串。如果orig_df是对yf.ticker(.)的实际调用,那么"Date“是您的索引,所以它不像列。

如何修复和运行:

代码语言:javascript
复制
from statsmodels.api import tsa
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime as dt, timedelta    

orig_df = pd.read_csv('ndx.csv', parse_dates=['Date'], index_col=0)

model = tsa.arima.ARIMA(np.log(orig_df['Close']), order=(10, 1, 10))
fitted = model.fit()
fc = fitted.get_forecast(5)
fc = (fc.summary_frame(alpha=0.05))
fc_mean = fc['mean']
fc_lower = fc['mean_ci_lower']
fc_upper = fc['mean_ci_upper']

orig_df.iloc[-50:,:].plot(y='Close', title='Nasdaq 100 Closing price', figsize=(10, 6))

代码语言:javascript
复制
# call orig_df.index[-1] for most recent trading day, not just today
future_5_days = [orig_df.index[-1] + timedelta(days=x) for x in range(5)]
plt.plot(future_5_days, np.exp(fc_mean), label='mean_forecast', linewidth=1.5)
plt.fill_between(future_5_days, 
                 np.exp(fc_lower), 
                 np.exp(fc_upper), 
                 color='b', alpha=.1, label='95% confidence')
plt.title('Nasdaq 5 Days Forecast')
plt.legend(loc='upper left', fontsize=8)
plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74305842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档