2016-11-09 4 views
2

나는 8GB 램을 가진 우분투 랩톱을 가지고 있고 또한 2GB CSV 파일을 가지고있다. 그러나 팬더 방법을 사용할 때, 7GB RAM이없는 동안 램이 완전히 채워지는 나의 데이터를로드하기 위해서 read_csv 메쏘드를 사용할 때. 2GB 파일로 7GB RAM을 채우는 방법은 무엇입니까?CSV 파일을로드하는 동안 메모리 오류가 발생 했습니까?

+1

당신이 코드 질문을 동반 붙여 넣을 수 있습니까? –

+0

다음 SO 스레드가 도움이 될 수 있습니다. http://stackoverflow.com/questions/19590966/memory-error-with-large-data-sets-for-pandas-concat-and-numpy-append http://stackoverflow.com/questions/17557074/memory-error-using-pandas-read-csv – Bharath

답변

0

이유 각 열이 요구하는 매우 메모리가에 대한 추측이 dtypes 때문에 low_memory 경고가 수 있습니다 얻을. 팬더는 각 열의 데이터를 분석하여 설정할 dtype을 결정하려고합니다.

32 비트 시스템을 사용하는 경우 : Windows에서 32 비트 버전을 사용할 때 메모리 오류는 python에서 많이 발생합니다. 32 비트 프로세스는 기본적으로 2GB의 메모리 만 사용하기 때문입니다.

이 시도 :

tp = pd.read_csv('file_name.csv', header=None, chunksize=1000) 
df = pd.concat(tp, ignore_index=True) 
+0

예 .dtype 때문에 dtype이 변환되어 일부 dtype 열을 변환했습니다. 감사. 친절하게 upvote –

+0

도움이 답변을 받아들입니다. – harshil9968

+0

내가 upvote하려고했지만 공개적으로 내가 미만 15 명성을 가지고 표시되지 않습니다;) –

0

chunksize 매개 변수의 사용을 만들려고 :

df = pd.concat((chunk for chunk in pd.read_csv('/path/to/file.csv', chunksize=10**4)), 
       ignore_index=True) 
+0

첫 번째 코드는 매우 비효율적입니다. http://pandas.pydata.org/pandas-docs/stable/merging.html – Jeff

+0

@Jeff, 감사합니다. 당신! 나는 그것을 제거했습니다. 나는 그 노트에 대해 이해하지 못했습니다 ... – MaxU

+1

모든 루프 반복 당신은 더 크고 더 큰 프레임의 복사본을 만들고있었습니다; 대신 목록에 추가하고 concat을 한 번 호출하십시오 (현재 예제 에서처럼) – Jeff