讀取一個巨大的 .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