Source code for fredeco.fredData

from fredeco.fredSearch import fred_info_series, fred_list_series


[docs]def fred_series(series,fred_api,frequency='a',starttime='1776-07-04',endtime='9999-12-31',transform='lin'): '''Retreive and economic indicator from FRED® API Arguments ---------- series: str A time series ID, such as GDP. fred_api: str Your registered FRED API keys. You can use the function fredKey.request_api_key() to request an API key on the FRED website. frequency: str The frequency of data. The default value is 'a' for annual data; 'q' is for quarterly data; 'm' is for monthly data starttime: str The first date, as a string, of the time series data to retrieve. The default value is '1776-07-04'. endtime: str The last date, as a string, of the time series data to retrieve. The default value is '9999-12-31'. transform: str Example ------- from fredeco.fredData import fred_series fred_series(series='GDP',fred_api='4e5rty8wfr') ''' import numpy as np import pandas as pd from datetime import datetime import requests import json url='https://api.stlouisfed.org/fred/series/observations?series_id='+str(series)+'&output_type=1'+'&frequency='+str(frequency)+'&units='+str(transform)+'&observation_start='+str(starttime)+'&observation_end='+str(endtime)+'&api_key='+str(fred_api)+'&file_type=json' try: r = requests.get(url) data = r.json() dat=pd.DataFrame([i for i in data.values()][12]) dat=dat[['date','value']] dat.columns=['Dates',series] dat=dat.set_index('Dates') #### def to_float(x): # Since missing values are strings, I convert to float y=[] for i in x: try: y.append(float(i)) # convert string values to float except: y.append(np.nan) # convert strings related to missing data to NAN return y z=[] for i in dat.columns: z.append(to_float(dat[i])) ##### dat2=pd.DataFrame(z).transpose() # build a data frame with the lists of float data dat2.index=dat.index;dat2.columns=dat.columns return dat2 except IndexError: raise IndexError('At least, one of the arguments of the function have an inappropriate value. This is the case, for example, when the FRED® ID is misspelled.')
##############################################
[docs]def fred_multi_series(series,fred_api,frequency='a',starttime='1776-07-04',endtime='9999-12-31',transform='lin'): """Retrieve data for several economic indicators from FRED® API. This method return a data frame of several variables. Arguments ---------- fred_api: str Your registered FRED API keys. You can use the function fredKey.request_api_key() to request an API key on the FRED website. series: str A time series ID, such as GDP. frequency: str The frequency of data. The default value is 'a' for annual data; 'q' is for quarterly data; 'm' is for monthly data starttime: str The first date, as a string, of the time series data to retrieve. The default value is '1776-07-04'. endtime: str The last date, as a string, of the time series data to retrieve. The default value is '9999-12-31'. transform: str Example ------- from fredeco.fredData import fred_multi_series fred_multi_series(series=['GDP','GDPCA'],fred_api='4e5rty8wfr') """ import pandas as pd dat=pd.DataFrame() try: i=0 while i<len(series): y=fred_series(series=series[i],fred_api=fred_api, frequency=frequency, starttime=starttime, endtime=endtime,transform=transform) dat[series[i]]=y i=i+1 return dat except IndexError: raise IndexError('At least, one of the arguments of the function have an inappropriate value. This is the case, for example, when the FRED® ID is misspelled.')
########################################## ############
[docs]def units(data): '''Unit of each series of data frame of FRED® data. This function returns a list Arguments -------- fred_api: str Your registered FRED API keys. You can use the function fredKey.request_api_key() to request an API key on the FRED website. data: data frame a data frame of indicators retreived from FRED®. All columns names should be FRED® indicators IDs. Example -------- from fredeco.fredData import units units(fred_api='4e5rty8wfr',df) ''' u=[list((fred_info_series(series=i,fred_api=fred_api)).values())[2][0]['units'] for i in data.columns.tolist()] return u
[docs]def explore(fred_api,data): '''Explore some key statistics of a data frame of indicators retreived from FRED®. This function returns a data frame with some information related to each economic indicator of the data frame x. Most of the information provided are statistics calculated by the function for each one of the indicators. All columns names should be FRED® indicators IDs. Arguments -------- fred_api: str Your registered FRED API keys. You can use the function fredKey.request_api_key() to request an API key on the FRED website. x: data frame a data frame of indicators retreived from FRED®. All columns names should be FRED® indicators IDs. Example ------- from fredeco.fredData import explore explore(fred_api='4e5rty8wfr',df) ''' import pandas as pd import numpy as np import sys def cv(x): return np.std(x,axis=0)/np.mean(x,axis=0) try: des=pd.DataFrame({'Units':units(data),'N':data.count(),'Mean':data.mean(),'Median':data.median(),'Std':data.std(),'Min':data.min(), 'Max':data.max(),'CV':cv(data),'25% quantile':data.quantile(q=0.25).tolist(),'50% quantile':data.quantile(q=0.5).tolist(), '75% quantile':data.quantile(q=0.75).tolist(),'skewness':data.skew(),'kurtosis':data.kurt()}).transpose() return des except IndexError as e: raise IndexError('Check if all columns names of data are FRED® ID. At least one of them maybe misspelled.')