2016-11-06 10 views
0

Я загружаю метаданные из quandl.com для наборов финансовых данных. Данные от quandl.com уже находятся в формате словаря. Я хочу взять эти данные с quandl.com и организовать его в DataFrame, а затем импортировать в Excel.Как заполнить строки DataFrame со значениями из словаря?

Это текстовый файл ('Indicator_list.txt') со списком финансовых наборов данных, которые я загружаю с quandl.com. Я хочу, чтобы метаданные на каждом из этих символов были организованы в DataFrame.

COM/OIL_WTI 
BOE/XUDLADS 
BOE/XUDLADD 
BOE/XUDLB8KL 
BOE/XUDLCDS 
BOE/XUDLCDD 

Это код, который я бегу

import quandl 
import pandas as pd 

#This adjusts the layout in the command 
#promt to have columns displayed side by side 
pd.set_option('expand_frame_repr', False) 

#This "with open" statment opens a text file that 
#has the symbols I want to get the metadata on 
with open ('Indicator_list.txt') as file_object: 
    Current_indicators = file_object.read() 
    tickers = Current_indicators.split('\n') 

#quandlmetadata is a blank dictionary that I am 
#appending the meatadata to 
quandlmetadata={} 

#this loops through all the values in 
#Indicator_list.txt" 
for i in tickers: 

    #metadata represents one set of metadata 
    metadata = quandl.Dataset(i).data().meta 

Это выход метаданных исходя из quandl.com

{'start_date': datetime.date(1975, 1, 2), 'column_names': ['Date', 'Value'], 'limit': None, 'collapse': None, 'order': 'asc', 'end_date': datetime.date(2016, 11, 3), 'transform': None, 'column_index': None, 'frequency': 'daily'} 

Следующая добавить это quandlmetadata словарь и использовать ток symbol from_list.txt "i", чтобы назвать мой ключ для словаря.

quandlmetadata[i]=(metadata) 

Это выход quandlmetadata

{'BOE/XUDLADS': {'column_names': ['Date', 'Value'], 'end_date': datetime.date(2016, 11, 3), 'transform': None, 'collapse': None, 'order': 'asc', 'start_date': datetime.date(1975, 1, 2), 'limit': None, 'column_index': None, 'frequency': 'daily'}, 'BOE/XUDLCDD': {'column_names': ['Date', 'Value'], 'end_date': datetime.date(2016, 11, 3), 'transform': None, 'collapse': None, 'order': 'asc', 'start_date': datetime.date(1975, 1, 2), 'limit': None, 'column_index': None, 'frequency': 'daily'}, 'BOE/XUDLB8KL': {'column_names': ['Date', 'Value'], 'end_date': datetime.date(2016, 11, 3), 'transform': None, 'collapse': None, 'order': 'asc', 'start_date': datetime.date(2011, 8, 1), 'limit': None, 'column_index': None, 'frequency': 'daily'}, 'COM/OIL_WTI': {'column_names': ['date', 'value'], 'end_date': datetime.date(2016, 11, 4), 'transform': None, 'collapse': None, 'order': 'asc', 'start_date': datetime.date(1983, 3, 30), 'limit': None, 'column_index': None, 'frequency': 'daily'}, 'BOE/XUDLADD': {'column_names': ['Date', 'Value'], 'end_date': datetime.date(2016, 11, 3), 'transform': None, 'collapse': None, 'order': 'asc', 'start_date': datetime.date(1975, 1, 2), 'limit': None, 'column_index': None, 'frequency': 'daily'}, 'BOE/XUDLCDS': {'column_names': ['Date', 'Value'], 'end_date': datetime.date(2016, 11, 3), 'transform': None, 'collapse': None, 'order': 'asc', 'start_date': datetime.date(1975, 1, 2), 'limit': None, 'column_index': None, 'frequency': 'daily'}} 

Наконец, я хочу, чтобы иметь словарь quandlmetadata превратился в кадр данных (или любой другой способ, который был бы лучше)

это окончательный часть кода

df = pd.DataFrame(index = quandlmetadata.keys(),columns =['transform', 'frequency', 'limit', 'end_date', 'collapse', 'column_names','start_date', 'order', 'column_index'] ) 

выход DF

   transform frequency limit end_date collapse column_names start_date order column_index 
BOE/XUDLB8KL  NaN  NaN NaN  NaN  NaN   NaN  NaN NaN   NaN 
BOE/XUDLADS  NaN  NaN NaN  NaN  NaN   NaN  NaN NaN   NaN 
BOE/XUDLADD  NaN  NaN NaN  NaN  NaN   NaN  NaN NaN   NaN 
BOE/XUDLCDS  NaN  NaN NaN  NaN  NaN   NaN  NaN NaN   NaN 
COM/OIL_WTI  NaN  NaN NaN  NaN  NaN   NaN  NaN NaN   NaN 
BOE/XUDLCDD  NaN  NaN NaN  NaN  NaN   NaN  NaN NaN   NaN 

Выход df - это именно то, что я хочу; тикер из Indicator_list.txt - это мой индекс, а столбцами являются metadata.keys(). Единственное, с чем я не могу работать, это заполнить строки DataFrame значениями слова quandlmetadata. Конечная цель состоит в том, чтобы иметь возможность импортировать этот список в excel, поэтому, если есть способ сделать это, не используя фреймворк данных, я вызывающе открыт для этого.

ответ

1

Возможно, вы можете использовать DataFrame.from_dict?

In [15]: pd.DataFrame.from_dict(quandlmetadata, orient='index') 
Out[15]: 
      column_index end_date order column_names start_date collapse transform limit frequency 
BOE/XUDLADD   None 2016-11-03 asc [Date, Value] 1975-01-02  None  None None  daily 
BOE/XUDLADS   None 2016-11-03 asc [Date, Value] 1975-01-02  None  None None  daily 
BOE/XUDLB8KL   None 2016-11-03 asc [Date, Value] 2011-08-01  None  None None  daily 
BOE/XUDLCDD   None 2016-11-03 asc [Date, Value] 1975-01-02  None  None None  daily 
BOE/XUDLCDS   None 2016-11-03 asc [Date, Value] 1975-01-02  None  None None  daily 
COM/OIL_WTI   None 2016-11-04 asc [date, value] 1983-03-30  None  None None  daily 

Я не думаю, что column_names колонка будет очень полезно, хотя. Вы также хотите вручную вызвать pd.to_datetime в столбцах даты, чтобы они были столбцами datetime64, а не строковыми.