1

金融データセットのメタデータを quandl.com からダウンロードしています。quandl.com のデータは、既に辞書形式になっています。このデータを quandl.com から取得して DataFrame に整理し、Excel にインポートしたいと考えています。

これは、quandl.com からダウンロードしている財務データセットのリストを含むテキスト ファイル ('Indicator_list.txt') です。これらの各シンボルのメタデータを 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 ディクショナリに追加し、indicator_list.txt の現在の記号「 i 」を使用して、ディクショナリのキーに名前を付けます。

quandlmetadata[i]=(metadata)

これは quadlmetadata の出力です

{'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'}}

最後に、quadlmetadata ディクショナリをデータ フレームに変換したい (または別の方法の方がよい)

これはコードの最後の部分です

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 にインポートできるようにすることです。そのため、データフレームを使用せずにこれを行う方法があれば、私はそれに挑戦します。

4

1 に答える 1

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 列になるようにすることもできます。

于 2016-11-06T17:15:50.310 に答える