提问人:GDoherty3 提问时间:11/13/2023 更新时间:11/13/2023 访问量:36
如何将自定义股票代码列表添加到从维基百科中抓取的现有标准普尔 500 股票代码列表中
How to add a custom list of stock tickers to an existing list of S&P 500 tickers scraped from wikipedia
问:
我是Python的初学者,但是在这样的在线教程和论坛的帮助下,我能够编写以下代码,该代码提取了标准普尔500指数中所有名称/股票代码的最后一个月的定价数据,并将它们保存到单独的csv文件中。
我现在想增强这段代码,以继续提取标准普尔500指数的定价数据,但也将我自己的自定义股票代码列表添加到标准普尔500指数的股票代码中,并提取标准普尔500指数中所有股票的定价数据以及我的自定义列表。这个自定义列表是目前不在标准普尔500指数中的感兴趣的公司,如SHOP,RIVN,DDOG等,可能会随着时间的推移而变化,但不会经常变化。
import os
import pandas as pd
import yfinance as yf
import datetime
S_AND_P_URL = 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies'
def get_ticker_data(tickers: list):
'''
Obtain the price data for all tickers specified. Creates a csv file of price data for each
ticker in the data folder.
Parameters
----------
tickers : list
A list of the tickers to download the data for
'''
data = yf.download(
tickers = tickers,
period = '1mo',
interval = '1d',
#start = "2023-02-24", #20 days of data
#end = "2023-03-23", #previous close
group_by = 'ticker',
threads = True,
)
for ticker in tickers:
try:
df = data.loc[:, ticker.upper()].dropna()
df.to_csv(f'data/{ticker}.csv', index = True)
except:
print(f'Ticker {ticker} failed to download.')
return
def get_s_and_p_tickers() -> list:
'''
Get a list of all tickers currently in the S&P 500 index.
'''
return pd.read_html(S_AND_P_URL)[0]['Symbol'].tolist()
if __name__ == '__main__':
# Check if a directory exists called 'data', if not, create it
if not os.path.isdir('data'):
os.mkdir('data')
# Download one csv file per ticker and place it in the data directory
get_ticker_data(get_s_and_p_tickers())
我尝试在“def get_s_and_p_tickers()”块下方添加.append或.extend行,但没有成功。
我想从wikipidia中提取标准普尔500指数的股票代码列表,然后从我的自定义列表中提取,并继续为每个股票代码下载一个csv文件,并将它们放在我拥有的数据目录中。因此,保留已经有效的相同过程,但只是添加第二个代码数据源/列表以下载 csv 文件。
任何建议/帮助将不胜感激。谢谢!
答:
0赞
diarmuid
11/13/2023
#1
您描述的方法应该有效。尝试替换代码的最后一行
get_ticker_data(get_s_and_p_tickers())
跟
ticker_list = get_s_and_p_tickers()
ticker_list += [ ... my own list ..]
get_ticker_data(ticker_list)
评论
0赞
GDoherty3
11/14/2023
这有效,谢谢!
0赞
diarmuid
11/15/2023
好的,很高兴能提供一些帮助 - 你能把答案标记为正确吗?-谢谢!
评论