巨大な.csvファイルを読む

| | |

現在、Python 2.7の.csvファイルから最大100万行、200列(ファイルの範囲は100MBから1.6GB)のデータを読み取ろうとしています。これは、次のファイルに対して(非常にゆっくりと)実行できます。 300,000行未満ですが、それを超えるとメモリエラーが発生します。コードは次のようになります。

  def getdata(filename、criteria):data = [] for Criteria in Criteria:data。 append(getstuff(filename、criteron))return data def getstuff(filename、criteria):import csv data = [] with open(filename、 "rb")as csvfile:datareader = csv.reader(csvfile)for row in datareader: if row [3] == "column header":data.append(row)elif len(data)< 2 and row [3]!= criterion:pass elif row [3] == criterion:data.append(row )else:return data  

getstuff関数のelse句の理由は、基準に一致するすべての要素がcsvファイルに一緒にリストされるためです。そのため、次の場合にループを終了します。時間を節約するためにそれらを乗り越えます。

私の質問は次のとおりです。

  1. どうすれば取得できますかこれは、より大きなファイルで機能しますか?

  2. 高速化する方法はありますか?

私のコンピューターには8GB RAM、64ビットWindows 7を実行し、プロセッサは3.40 GHzです(必要な情報は不明です)。

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method