2016-06-27 4 views
1

私は複数のcsvファイル(< 10 G)を持っています。ファイルをメモリ効率のよい方法で1つずつ検証する必要があります。私の検証>は適切Pythonでcsvファイルを効率よく読み込んで検証する

2-区切りでファイルを

1- include>の整数/小数

、3-として、特定の列を検証>特定の日付フォーマット(例えば。YYYY/MM/DD)を検証します列。

現在、私は

with open(file_name, 'r') as myCSV: 
     CSVreader = csv.reader(myCSV) 
     for row in CSVreader: 
       my_logic 

を使用して、それぞれの行をループし、行ごとに条件を検証しています。利用可能なライブラリ/メソッドはありますか?私はパンダがメモリ効率が良いかどうかわからないことについて聞いたことがあります。

+2

「より良い」を定義しますか?約26人の視聴者から、私はCSVファイルの行のイテレータがすでに非常に効率的だと思う唯一の人ですか?列の数が多い場合は、代わりの実装を探すことを検討します。私はこの質問が幅広くあることを知っています。あなたは、いくつかのことを試したり、メモリ使用量を比較したり、なぜインプリメンテーションaがbより優れているのかを尋ねたりせずに、より優れたライブラリ/メソッドを求めています。私のメモリには –

答えて

1

私はパンダを使用して永久に取ったいくつかの類似したループを持っていたし、このトリックを使って、かなりそれをスピードアップすることができました:

for row in dataframe: 
    some logic over row.col1, row.col2, etc... 

は次のようになります。

for (col1, col2, ...) in zip(dataframe.col1.values, dataframe.col2.values, ...): 
    some logic over col1, col2, etc... 

ない、それはどのようになることを確認64ビット版のPythonを使ってかなり大きなファイルを扱うことができました。

+0

も大きな制約です!私はzip(必須の列)はすべてをメモリに入れ、私が間違っていれば私を修正すると思います。 –

+0

@TurboSullivanあなたがpython3を使用している場合、あなたは間違っています。 Python 2では 'itertools.izip'を使用してすべてを一度にメモリにロードせずに' zip'機能を使用します。 –

関連する問題