class FredClass: def __init__(self, FRED_API): self.fred = Fred(api_key=FRED_API) def search(self, search_text): self.search_df = self.fred.search(search_text) self.search_df['popularity'] = self.search_df['popularity'].astype(int) self.search_df = self.search_df.sort_values(by=['popularity'], ascending=False) return self.search_df def fetch(self, metrics, start_date): self.metrics_df = pd.DataFrame() for metric in metrics: print(f'Fetch metric: {metric}') try: metrics_df_sub = self.fred.get_series_latest_release( metric).to_frame() # TODO: append first then reset_index? metrics_df_sub.reset_index(drop=False, inplace=True) metrics_df_sub.columns = ['activity_date', 'value'] metrics_df_sub[ 'activity_date'] = metrics_df_sub.activity_date.dt.date metrics_df_sub['metric'] = metric print(metrics_df_sub.dtypes) self.metrics_df = self.metrics_df.append(metrics_df_sub) except ValueError: print(f'Skip metric: {metric}') continue self.metrics_df = self.metrics_df.loc[ self.metrics_df.activity_date >= start_date] self.metrics_df = self.metrics_df[['metric', 'activity_date', 'value']] return self.metrics_df def get_metrics_info(self, metrics): info_df = pd.DataFrame() for metric in metrics: info_df_sub = self.fred.get_series_info(metric) info_df = info_df.append(info_df_sub, ignore_index=True) info_df = info_df[[ 'id', 'title', 'frequency', 'units', 'seasonal_adjustment', 'popularity', 'notes' ]] info_df = info_df.rename(columns={'id': 'metric'}) info_df['source'] = 'FRED' info_df['deprecated'] = False return info_df
@author: justin.malinchak """ import os #os.environ["FRED_API_KEY"] = "63ef8588c3a78e956fb156c8a1603152" #print os.environ['FRED_API_KEY'] from fredapi import Fred fred = Fred() import pandas as pd pd.options.display.max_colwidth = 60 #%matplotlib inline import matplotlib.pyplot as plt #from IPython.core.pylabtools import figsize #figsize(20, 5) s = fred.get_series('DSPIC96', observation_start='1960-01-01', observation_end='2015-07-01') print s.tail() print '------------------------' info = fred.get_series_info('DSPIC96') print len(info) for k,vinfo in info.iteritems(): print k,vinfo df_gdp = fred.get_series_as_of_date('GDP', '2/1/2015') print df_gdp df_search = fred.search('income').T print df_search
from fredapi import Fred from src.constants import FRED_API import sys # run this file with debug mode to check search_df content fred = Fred(api_key=FRED_API) search_df = fred.search("oil") search_df['popularity'] = search_df['popularity'].astype(int) search_df = search_df.sort_values(by=['popularity'], ascending=False) print(search_df.head()) sys.exit()
# Step 1 : import data from FRED databases from fredapi import Fred fred = Fred(api_key="c3bc005d1a70992b2b3f3ef97d896c32") query = fred.search("france") query = query[(query["frequency_short"] == "Q")] query = query[ (query["observation_start"] <= "1970-01-01, 00:00:00") & (query["observation_end"] > "2013-01-01, 00:00:00") ] import pandas as pd series = list() for series_id in list(query["id"]): new_serie = fred.get_series(series_id, observation_start="1970-01-01, 00:00:00") series.append(new_serie) print(series_id + ": done") df = pd.concat(series, axis=1) df.columns = list(query["id"]) print(df.head()) print(query["title"]) df.to_csv("/Users/nicolassaleille/Dropbox/ofpr/data/fred/france_query_2.csv") # modele de prevision du PIB
def query_fred(search_term): fred = Fred() return (pd.DataFrame(fred.search(search_term)))
# In[40]: print(key) # In[43]: fred = Fred(api_key=key) #read documentation on https://github.com/mortada/fredapi # In[44]: #Search Fred for series - There are way too many!! search_results = fred.search('Unemployment').T search_results.info() # In[46]: #create a dataframe to save series agg = pd.DataFrame(index=[], columns=[]) # The first series s = 'CNP16OV' # In[47]: #Retrieve the series information about CNP16OV
# stock market volume # GDP Weekly # unemployment # interest rates # bank data (repo rates) # housing market data # commodity data # China / US Daily FX rates # Helpful to get data from financial sector # data we have and can use # initial unemployment claims seasonally adjusted - icsa - weekly # continued claims - ccsa - weekly # Crude oil prices - DCOILBRENTEU - daily # High yield index option adjusted spread - BAMLH0A0HYM2 - daily # Gold fixing Price - GOLDAMGBD228NLBM - daily # Corporate bond yields AAA - DAAA - daily # Overnight AA financial commercial paper interest rate - RIFSPPFAAD01NB - daily # Euro high yield index-option adjusted - BAMLHE00EHYIOAS - daily # China/US FX rates - DEXCHUS - Daily # US/EURO EXchange rates - DEXUSEU - Daily # 10 year - 3 month interest rate - T10Y3M - Daily # private sector financial EM data - BAMLEMFSFCRPITRIV - DAILY # Trade weighted dollar to foreign goods and currencies - DTWEXAFEGS - DAILY, ONLY GOES BACK TO 2015 df = fred.get_series_info("BAMLHE00EHYIOAS") df["frequency_short"] fred.search('housing') print(df)
# This is a sample Python script. from fredapi import Fred import pandas as pd import sklearn import numpy as np import time fred = Fred(api_key='3c6ba58d26525f17af95af4fabed24be') monthly_list = fred.search('monthly', limit=500, order_by='popularity', sort_order='desc', filter=('frequency', 'Monthly')) # Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings. data = [] columns = [] o = 1 for i in monthly_list[["id"]].values: print(o) d = fred.get_series(i[0], observation_start="1/1/2000") columns.append(i[0]) data.append(d) o += 1 time.sleep(0.3) data = pd.concat(data, axis=1) data.columns = columns # See PyCharm help at https://www.jetbrains.com/help/pycharm/ print(data.head(-1)) data.to_csv("monthly_data.csv")