我正在做一些投资组合分析,并试图使用股票代码列表来获得一个工作函数来提取股票数据。这是我的清单:
Ticker_List={'Tickers':['SPY', 'AAPL', 'TSLA', 'AMZN', 'BRK.B', 'DAL', 'EURN', 'AMD',
'NVDA', 'SPG', 'DIS', 'SBUX', 'MMP', 'USFD', 'CHEF', 'SYY',
'GOOGL', 'MSFT']}
我正在像这样通过此函数传递列表:
Port=kit.d(Ticker_List)
def d(Ticker_List):
x=[]
for i in Ticker_List['Tickers']:
x.append(Closing_price_alltime(i))
return x
def Closing_price_alltime(Ticker):
Closedf=td_client.get_price_history(Ticker, period_type='year', period=20, frequency_type='daily', frequency=1)
return Closedf
哪个从TDAmeritrade提取数据并给我回信:
[{'candles': [{'open': 147.46875,'high': 148.21875,
'low': 146.875,'close': 147.125,
'volume': 6998100,'datetime': 960181200000},
{'open': 146.625,'high': 147.78125,
'low': 145.90625,'close': 146.46875,
'volume': 4858900,'datetime': 960267600000},
...],
'symbol': 'MSFT',
'empty': False}]`
(这只是示例)
最后,我要清理:
Port=pd.DataFrame(Port)
Port=pd.DataFrame.drop(Port, columns='empty')`
哪个提供了DataFrame:
candles symbol
0 [{'open': 147.46875, 'high': 148.21875, 'low': 146.875, 'close': 147.125, 'volume': 6998100, 'datetime': 960181200000}, {'open': 146.625, 'high': ...} SPY
1 [{'open': 3.33259, 'high': 3.401786, 'low': 3.203126, 'close': 3.261161, 'volume': 80917200, 'datetime': 960181200000}, {'open': 3.284599, 'high':...} AAPL
[此处未格式化,但索引为0,1等。Candles列包含每种股票行情的嵌套字典列表,而Symbol列包含股票代号。
我的目标是获取一个数据框,其索引为Datetime(从Candles列嵌套字典中),并为每只股票提供一列(标记为股票代码),并且在每一行中每天仅关闭股票专栏,删除所有其他内容。
我作为一个初学者项目已经工作了几天,我得到了它的工作,即分别分配每个股票,但是这既耗时又难以更改,带有列表的for循环非常多更好,我已经很接近要开始工作了。任何帮助将受到[[GREATLY的赞赏。
Closing_price_alltime
返回值:d = [{'candles': [{'open': 147.46875,'high': 148.21875,
'low': 146.875,'close': 147.125,
'volume': 6998100,'datetime': 960181200000},
{'open': 146.625,'high': 147.78125,
'low': 145.90625,'close': 146.46875,
'volume': 4858900,'datetime': 960267600000}
],
'symbol': 'MSFT',
'empty': False}]
您可以这样提取符号,日期时间和结束时间。
import operator import pandas as pd data = operator.itemgetter('datetime','close') symbol = d[0]['symbol'] candles = d[0]['candles'] dt, closing = zip(*map(data, candles)) s = pd.Series(data=closing,index=dt,name=symbol)