我想从公共资源https://fred.stlouisfed.org/categories/10/downloaddata下载我的学术作业数据
源文件中存在超过10K个系列Id,我想获取所有系列Id的数据。在https://fred.stlouisfed.org/categories/10/downloaddata/EP_csv_2.zip中可用
由于python客户端“fredapi”为每个序列id提供数据,因此获取和处理该数据至少需要2-3秒,因此存在10K+序列id。 这将需要5个多小时
我们无法在单个请求中获取多个序列Id的数据。这里有什么方法可以应用多线程吗?因此,我可以同时获取数据以减少处理时间
下面的脚本是使用For循环逐个获取数据,有没有更好的方法来减少使用multi-hit
import time
import pandas as pd
from fredapi import Fred
fred = Fred(api_key='QWERTYUIOPASDFGHJKLZXCVBNM')
Series_List = pd.read_excel(r'D:\Sunil_Work\temp8\Series_List.xlsx', sheet_name = 'Source', dtype=object)
Data_All = pd.DataFrame()
for I, Series_Id in enumerate(Series_List['Series_Id'], start=1):
Data = None
Started = time.time()
while Data is None:
try:
Data = fred.get_series(Series_Id)
except:
if (time.time() - Started)/60 > 1: # Multiple Try in 1 Minutes
break
Data = None
continue
if isinstance(Data, pd.Series):
Data = pd.DataFrame({'Date':Data.index, 'Value':Data.values})
Data['Series_Id'] = Series_Id
Data_All = Data_All.append(Data, sort=False)
else:
print('\n>> Error, NO valid Data Retrieved')
目前没有回答
相关问题 更多 >
编程相关推荐