示例#1
0
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()
示例#4
0
# 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
示例#5
0
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
示例#7
0
# 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")