2017-09-22 3 views
1

저는 10 기가 바이트 정도의 매우 큰 csv 파일을 가지고 있습니다. 언제 내가 iPython 노트북을 사용하여 읽어 보려고csv 파일의 일부를 읽는 중

data = pd.read_csv("data.csv") 

내 노트북이 막혔다. 10,000 줄 또는 500MB의 csv 파일을 읽을 수 있습니까?

+0

청크로 파일을 처리하기 위해'iterator'와'chunksize' 옵션을보십시오. – Barmar

+1

설명서를 모두 읽으려고 했습니까 ?? [read csv] (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html), 힌트! look at 'nrows =' – DJK

+0

@ djk47463 nrows =를 사용하여 임의의 행을 얻을 수 있습니까? –

답변

3

가능합니다. chunksizeread_csv으로 전달하여 iterator=Trueiterator=True으로 전달하여 DataFrame으로 한 번에 특정 크기의 CSV 덩어리를 생성하는 반복기를 만들 수 있습니다.

df_iter = pd.read_csv('data.csv', chunksize=10000, iterator=True) 

for iter_num, chunk in enumerate(df_iter, 1): 
    print(f'Processing iteration {iter_num}') 
    # do things with chunk 

또는 더 짧게 또는 당신이, 당신이 읽을 이후 특정 라인에서 시작하는 skiprowsnrows 옵션을 사용할 수 있습니다 읽고 싶은 CSV의 단지 특정 부분이 있다면

for chunk in pd.read_csv('data.csv', chunksize=10000): 
    # do things with chunk 

n 개의 행으로 구성됩니다.

-1

메모리 문제 일 수 있습니다. read_csv에서 chunkksize (행 수를 지정할 수 있음)를 설정할 수 있습니다.

또는 모든 열이 필요하지 않은 경우 read_csv에서 usecols를 변경하여 필요한 열만 가져올 수 있습니다.

+1

예제를 제공하지 않는 한, 이것은 더 많은 코멘트이며 여기에서 말한 내용은 @Mitch가 이미 대답 한 것과 정확히 일치합니다 ... – DJK

관련 문제