4

Bloomberg から価格データをダウンロードしており、データフレームを最速かつ最小のメモリ消費量で構築したいと考えています。2000 年 1 月 1 日から 2013 年 1 月 1 日までの現在のすべての S&P 500 株の価格データについて、python を介してブルームバーグにデータ要求を送信したとします。データはティッカーによって返され、次に日付と値が 1 つずつ返されます。私の現在の方法は、日付を格納するリストと価格を格納する別のリストを作成し、Bloomberg データ要求の応答から読み取られた日付と価格を各リストに追加することです。次に、特定のティッカーのすべての日付と価格が読み取られたら、次を使用してティッカーの DataFrame を作成します。

ticker_df = pd.DataFrame(price_list, index = dates_list, columns= [ticker], dtype=float)

ティッカーごとにこれを行い、各ティッカーのデータが読み取られた後に、各ティッカー データフレームをリスト << df_list.append(ticker_df) >> に追加します。すべてのティッカー データフレームが作成されたら、個々のすべての DataFrame を 1 つの DataFrame に結合します。

lg_index = []
for num in range(len(df_list)):
    if len(lg_index) < len(df_list[num].index):
        lg_index = df_list[num].index  # Use the largest index for creating the result_df
result_df = pd.DataFrame(index= lg_index)
for num in range(len(df_list)):
    result_df[df_list[num].columns[0]] = df_list[num]

私がこのようにする理由は、各ティッカーのインデックスが同一ではないためです (株式が昨年のみ IPO された場合など)。

ここで行っていることを、より少ないメモリを使用してより高速な方法で達成するためのより良い方法があるに違いないと思いますが、思いつきません。ありがとう!

4

1 に答える 1