首页 > 解决方案 > 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 密钥以制作此代码有效。

有什么想法可以让它发挥作用吗?

标签: pythonpandasdataframestockquotesalpha-vantage

解决方案


显然,Alpha Vantage 的公平使用限额相当低,他们衡量的查询数量是 pr。分钟。因此,实际上只允许前 4 只股票全速运行。其余股票在下载前需要暂停,以免违反其合理使用政策。

我现在在我的股票查询之间引入了一个暂停。目前,如果我暂停 10 秒,我将获得大约 55% 的股票。在通话之间,如果我暂停 15 秒,则为 100%。

我将准确测试可以将暂停设置到多低以允许 100% 的股票通过。

我必须说,与我们在 Finance.yahoo.com 上的超高速列车相比,这让我觉得它是蒸汽火车。下载速度真的很慢。要获得价值 500 的股票,我需要 2.5 小时。但我猜乞丐不能挑剔。这是一项免费服务,我会用它来管理。


推荐阅读