importtimeall_data={}
forkey,valueincompanies.items():
# Replace YOUR_API_KEY with your Alpha Vantage API keyurl=f'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={value}&apikey=<YOUR_API_KEY>&outputsize=full'response=requests.get(url)
data=response.json()
time.sleep(15)
if'Time Series (Daily)'indataanddata['Time Series (Daily)']:
df=pd.DataFrame.from_dict(data['Time Series (Daily)'], orient='index')
print(f'Received data for {key}')
else:
print("Time series data is empty or not available.")
df.rename(columns= {'1. open':key}, inplace=True)
all_data[key]=df[key]
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
在上面的代码在 API 调用之间设置了 15 秒的暂停,这样可以保证不会因为太频繁被封掉。
# find common dates among all data framescommon_dates=Nonefordf_key, dfinall_data.items():
ifcommon_datesisNone:
common_dates=set(df.index)
else:
common_dates=common_dates.intersection(df.index)
common_dates=sorted(list(common_dates))
# create new data frame with common dates as indexdf_combined=pd.DataFrame(index=common_dates)
# reindex each data frame with common dates and concatenate horizontallyfordf_key, dfinall_data.items():
df_combined=pd.concat([df_combined, df.reindex(common_dates)], axis=1)