python - Alpha Vantage stockinfo 仅收集 4 个格式正确的 dfs,而不是 6 个
问题描述
在其余 DataFrame 没有获得我要求的股票信息之前,我可以从 Alpha Vantage 获得 4 个股票信息代码。所以我得到的串联 df 被解释为 Nonetype (因为前 4 个 df 的格式与最后 2 个不同)。这不是我的问题。我只收到 4 个请求的事实是......如果我能解决这个问题 - 生成的连接 df 将是完整的。
我的代码
import pandas as pd
import datetime
import requests
from alpha_vantage.timeseries import TimeSeries
import time
tickers = []
def alvan_csv(stocklist):
api_key = 'demo' # For use with Alpha Vantage stock-info retrieval.
for ticker in stocklist:
#data=requests.get('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=%s&apikey={}'.format(api_key) %(ticker))
df = pd.read_csv('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&datatype=csv&symbol=%s&apikey={}'.format(api_key) %(ticker))#, index_col = 0) &outputsize=full
df['ticker'] = ticker
tickers.append(df)
# concatenate all the dfs
df = pd.concat(tickers)
print('\ndata before json parsing for === %s ===\n%s' %(ticker,df))
df['adj_close'] = df['adjusted_close']
del df['adjusted_close']
df['date'] = df['timestamp']
del df['timestamp']
df = df[['date','ticker','adj_close','volume','dividend_amount','split_coefficient','open','high','low']] #
df=df.sort_values(['ticker','date'], inplace=True)
time.sleep(20.3)
print('\ndata after col reshaping for === %s ===\n%s' %(ticker,df))
return df
if __name__ == '__main__':
stocklist = ['vws.co','nflx','mmm','abt','msft','aapl']
df = alvan_csv(stocklist)
注意。请注意,要使用 Alpha Vantage API,您需要一个免费的 API-Key,您可以在此处选择:https ://www.alphavantage.co/support/#api-key 用您的 API 密钥替换演示 API 密钥以制作此代码有效。
有什么想法可以让它发挥作用吗?
解决方案
显然,Alpha Vantage 的公平使用限额相当低,他们衡量的查询数量是 pr。分钟。因此,实际上只允许前 4 只股票全速运行。其余股票在下载前需要暂停,以免违反其合理使用政策。
我现在在我的股票查询之间引入了一个暂停。目前,如果我暂停 10 秒,我将获得大约 55% 的股票。在通话之间,如果我暂停 15 秒,则为 100%。
我将准确测试可以将暂停设置到多低以允许 100% 的股票通过。
我必须说,与我们在 Finance.yahoo.com 上的超高速列车相比,这让我觉得它是蒸汽火车。下载速度真的很慢。要获得价值 500 的股票,我需要 2.5 小时。但我猜乞丐不能挑剔。这是一项免费服务,我会用它来管理。
推荐阅读
- python - 将分配分成两行仍然同样有效吗?
- c# - 如何将一张表用于两个不同域中的两个不同上下文?
- bash - 如何编写 bash 脚本来计算积分?
- azure - 如何将 azure 事件中心的消息限制大小从 1 MB 增加到发送 4 MB?
- python - 熊猫:使用 minrank 在 groupby 之后排名
- php - 在 Laravel 中无法正确获取 XML
- powershell - 过滤事件 ID 4771
- android - Android Studio 不打开应用程序,而是打开模拟器
- powershell - 如何在不继承管理员权限的情况下启动进程?
- google-bigquery - 使用 ARRAY_AGG() AND SUM() 在不同级别汇总数据的最优雅方式?