如何解决如何遍历多个股票数据,并在处理后,在 Python 的末尾将其显示在一个 .csv 文件中?我的数据来自 Yahoo Fin
from numpy import array
import talib
import yfinance as yf
from tabulate import tabulate
import pandas as pd
stock_list=['ICICIBANK.NS','COALINDIA.NS','RELIANCE.NS']
appended_data={}
for stock in stock_list:
data= yf.download(stock,period='1y',interval='1d')
morning_star = talib.CDLMORNINGSTAR(data['Open'],data['High'],data['Low'],data['Close'])
two_crows = talib.CDL2CROWS(data['Open'],data['Close'])
three_crows = talib.CDL3BLACKCROWS(data['Open'],data['Close'])
data['Stock Name']= stock
data['Morning Star'] = morning_star
data['Two Crows'] = two_crows
data['Three Black Crows']= three_crows
dict = {'Stock Name': data['Stock Name'],'Open' : data['Open'],'High' : data['High'],'Low': data['Low'],'Close':data['Close'],'Morning Star': data['Morning Star'],'Two Crows':data['Two Crows'],'Three Black Crows':data['Three Black Crows']
}
appended_data.update(dict)
df= pd.DataFrame(appended_data)
df_latest= df.tail(5)
df_latest.to_csv('Candlestick Screener Data.csv')
你好, 我对使用 Python 进行一般编程非常陌生,但在弄清楚一件事时遇到了麻烦。
当我运行我编写的上述代码时,我最终只得到了来自 CSV 文件中 stock_list= ['ICICIBANK.NS','RELIANCE.NS'] 的最后一次迭代的数据.而前两次循环迭代的数据丢失了。
总体思路是提取多个数据集,处理收集到的数据,最后将所有数据存储在一个 CSV 文件中供我查看。
我对缺少的东西有一个基本的了解,但我无法将其放入代码中并使其工作。 如果有人能够调查它并帮助我进行一些解释(如果可能的话),我将不胜感激。
谢谢
解决方法
因此,您的 data
仅包含最后一项的原因是,在每次循环迭代中,它都会被该迭代中的内容覆盖。
在您的 update
dict 上调用 append_data
不起作用,因为“新”dict 与旧的具有相同的字段名称,因此它只会覆盖它们!
现在考虑到最终您想将其全部写入 csv,您需要在 Pandas DataFrame 中收集数据。如果我没记错的话,可以从作为数据的字典的列表构建一个数据框。
所以你可以这样做:在 for
循环之前,像这样创建一个空列表
dict_list = []
然后在循环内,而不是你的 update
调用,你说
dict_list.append(dict)
然后你应该可以做到
df = pd.DataFrame(dict_list)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。