2017-07-09 33 views
0

データフレーム内で読み込む必要がある680 MBの大きなcsvファイルがあります。Pythonでデータフレームを連結する際にメモリエラーが発生する

私はファイルをチャンクに分割し、それらのチャンクをリストに追加します。

次に、私はpd.concat()を使用して統合データフレームを作成しようとしています。

私はこれを達成するために、コードの下に使用しています:

temp_list = [] 
chunksize = 10 ** 5 

for chunk in pd.read_csv('./data/properties_2016.csv', chunksize=chunksize, low_memory=False): 
    temp_list.append(chunk) 

properties_df = temp_list[0] 

for df in temp_list[1:]: 
    properties_df = pd.concat([properties_df, df], ignore_index=True) 

私はドッキングウィンドウのイメージを実行することにより、これを行うにしようとしています。

私はメモリエラーの下に取得しています:

Traceback (most recent call last): 
File "dataIngestion.py", line 53, in <module> 
properties_df = pd.concat([properties_df, df], ignore_index=True) 
File "/usr/local/lib/python3.6/site-packages/pandas/core/reshape/concat.py", line 206, in concat 
copy=copy) 
File "/usr/local/lib/python3.6/site-packages/pandas/core/reshape/concat.py", line 266, in __init__ 
obj._consolidate(inplace=True) 
File "/usr/local/lib/python3.6/site-packages/pandas/core/generic.py", line 3156, in _consolidate 
self._consolidate_inplace() 
File "/usr/local/lib/python3.6/site-packages/pandas/core/generic.py", line 3138, in _consolidate_inplace 
self._protect_consolidate(f) 
File "/usr/local/lib/python3.6/site-packages/pandas/core/generic.py", line 3127, in _protect_consolidate 
result = f() 
File "/usr/local/lib/python3.6/site-packages/pandas/core/generic.py", line 3136, in f 
self._data = self._data.consolidate() 
File "/usr/local/lib/python3.6/site-packages/pandas/core/internals.py", line 3573, in consolidate 
bm._consolidate_inplace() 
File "/usr/local/lib/python3.6/site-packages/pandas/core/internals.py", line 3578, in _consolidate_inplace 
self.blocks = tuple(_consolidate(self.blocks)) 
File "/usr/local/lib/python3.6/site-packages/pandas/core/internals.py", line 4525, in _consolidate 
_can_consolidate=_can_consolidate) 
File "/usr/local/lib/python3.6/site-packages/pandas/core/internals.py", line 4548, in _merge_blocks 
new_values = new_values[argsort] 
MemoryError 

ここで助けてください!

+0

チャンクを使わずにcsv全体を読もうとしましたか? 680 MBは、パンダのread_csvを使用して読むにはそれほど大きな音ではありません。 – otayeby

+0

うん、私はそれを試みたが、プロセスは '殺されていた' –

答えて

1

DataFramesを連結することは、このようには機能しません。私はこのlinkは、これは私が小さなファイルでそれを試してみましたが、働いていた、まだ同じエラーを持っているなら、私に知らせてください、それを

temp_list = [] 
chunksize = 10 ** 5 

for chunk in pd.read_csv('./data/properties_2016.csv', chunksize=chunksize, low_memory=False): 
    temp_list.append(chunk) 

frames = [] 
for df in temp_list: 
    frames.append(df) 
properties_df = pd.concat(frames, ignore_index=True) 

を行うための正しい方法である

参考になると思います。

+0

私はあなたによって提案された方法を試みた。今、上記のエラーを取得する代わりに、私はちょうど 'キル'を取得しています –

+0

私はドッカーのメモリを増やしてみたが、それは正常に走った! –

+0

うれしかった! – otayeby

関連する問題