현재 최대 1 백만 행 및 200 열 (파일 범위는 100MB - 1.6GB)의 Python 2.7에서 .csv 파일의 데이터를 읽으려고합니다. 나는 300,000 행 이하의 파일들에 대해서 (매우 천천히)이 작업을 수행 할 수 있지만, 일단 나는 메모리 오류를 얻는다. 내 코드는 다음과 같습니다거대한 .csv 파일 읽기
def getdata(filename, criteria):
data=[]
for criterion in criteria:
data.append(getstuff(filename, criteron))
return data
def getstuff(filename, criterion):
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 함수의 다른 절에 대한 이유는 내가 과거를 얻을 때 기준이 CSV 파일에 함께 표시됩니다 맞는, 그래서 모든 요소가 나는 루프를두고 있다는 것입니다 시간을 절약 할 수 있습니다.
내 질문은 :
가 어떻게이 큰 파일 작업을 얻을 관리 할 수 있습니까?
내가 더 빨리 만들 수있는 방법이 있습니까?
내 컴퓨터가 윈도우 7 64 비트를 실행, 8 기가 바이트 RAM을 가지고 있으며, 프로세서 3.40 GHz의 (당신이 필요로하는 정보가 무엇인지 확실하지)입니다.
도움을 주셔서 감사합니다.
내가 몇 가지 비슷한 보이는 문제가 있다는 것을 알고 있어요,하지만 그들 중 누구도 많은 도움이 내 문제에 충분한 구체적 것 같았다. 내가 놓친 것이 있으면 미안해. –
읽은 데이터를 메모리에 저장하는 대신 데이터베이스 (예 : Sqlite)에 저장해야합니다. 그런 다음 데이터베이스에서 필터링과 같은 추가 처리를 수행 할 수 있습니다. –