2017-03-02 7 views
0

同じ表のデータを読み込んでいますが、非常に大きいです。 100万レコード以上。 250,000のチャンクを作成する方が良いと思ったので、私は4 DataFramesを得る。パンダの連結業績

frames = [] 
for chunk in chunks(some_very_large_list, 250000): 
    frames.append(pd.DataFrame(data=chunk, columns=['A', 'B', 'C'])) 

私は一緒にすべてをマージすることは非常に長い時間がかかっているpd.concat(frames)呼び出します。このプロセスをスピードアップする最善の方法は何ですか?または助けない場合がありますあなたが試みることができる

+0

すべてのデータをモノリシックブロックにロードすることと比較しましたか? – languitar

+0

はい、非ネイティブサポートDBからすべてをロードする必要があるため、パフォーマンスはあまり良くありません。 –

答えて

0

2つのこと、:

  1. 事前に割り当てる大規模なデータのためのメモリを、そしてその場所に各チャンクを配置します。
  2. (可能であれば)2dのnumpy配列で作業し、後ですべてをデータフレームに転送します。
+0

アイテム#2の操作方法を拡張できますか? –

+1

与えられた例に基づいてコードを提供することができればいいでしょうか? – Archie

0

あなたに似ているようだ私の場合のために、私が見つけた最良の方法は、追記機能を使用していたが:

データフレーム= pd.DataFrame()

dataframe.append(フレーム、ignore_index = True)

+0

このメソッドは新しいデータフレームを作成しますか?フレームオブジェクトはデータフレームでなければならないのですか、フレームのリストを渡すことはできますか? –

+0

いいえ、新しいデータフレームは返されませんが、私の例ではdataframeという名前のDataFrameオブジェクトが更新されます。 DataFrameオブジェクトのリスト(DataFrameのリストであるフレーム変数など)を渡す必要があります。 –

関連する問題