2017-03-28 6 views

答えて

0

上のメモリをクリアする方法についてアドバイス(あなたは、あなたが入力している、とあなたが受信しているエラーの種類どのようなコードについて、もう少し具体的にする必要があります。 )

pandasが大きすぎるファイルで動作しない場合は、より基本的なcsvパッケージに戻す必要があります。このように快適に感じるなら、DataFrameでインポートすることもできます。以下のような

何か:

with open("file.csv", 'rb') as csv_file: 
reader = csv.reader(csv_file, delimiter=',') 
df = pd.DataFrame(list(reader)) 
+0

まだ私はデータフレームのプロセスに私のcsvファイルのサイズを殺すと読み取ることができません約1001 MBです。 – Aakarsh

+0

'pandas'を使わずに試しましたか? 'df = list(reader)' – Laurent

+0

それはどちらの方法でも動作せず、出力として「Kill​​ed」を取得します。 – Aakarsh

2

pandasは、大きなファイルのためのイテレータを返すことができます。

import pandas as pd 

foo = pd.read_csv('bar.csv', iterator=True, chunksize=1000) 

これはイテレータを返します。その後、forループを使用してチャンク内のデータに操作を適用できます。したがって、ファイル全体を一度にメモリに読み込むことはありません。チャンクサイズは、チャンクあたりの行数です。

それはこのようなものになります。

for chunk in foo: 
    # do something with chunk 

EDIT:あなたにもチャンクでuniqueのような関数を適用する必要があります、私の知る限り。

import numpy as np 
unique_foo = [] 
for i in df: 
    unique_foo.append(i['foo'].unique()) 

unique_foo = np.unique(unique_eff) 
+0

私はこのメソッドを適用していますが、どのようにしてこれらのチャンクを集めて、完全なデータ内の一意の要素を見つけるような操作を適用できますか。これで助けてくれますか? – Aakarsh

+0

@Aakarsh私の編集された答えを見てください。実際の 'DataFrame'オブジェクトは' forループ 'でしか公開されていないので、これを行う必要があります –

関連する問題