미리 줄의 길이를 모르고 파일 read_csv
의 첫 n
줄만 읽는 데 사용하는 기본 제공 방법이 있습니까? 읽는 데 오랜 시간이 걸리는 대용량 파일이 있는데, 샘플을 얻기 위해 첫 번째 줄 (예 : 20 줄) 만 사용하고 싶을 때도 있습니다 (전체 내용을로드하고 헤드를 차지하는 것을 선호하지 않음).
총 줄 수를 알고 있다면 다음과 같이 할 수 footer_lines = total_lines - n
있으며 skipfooter
키워드 arg에 전달할 수 있습니다. 내 현재 솔루션은 n
python 및 StringIO로 첫 번째 줄 을 수동으로 pandas에 가져 오는 것입니다.
import pandas as pd
from StringIO import StringIO
n = 20
with open('big_file.csv', 'r') as f:
head = ''.join(f.readlines(n))
df = pd.read_csv(StringIO(head))
그렇게 나쁘지는 않지만 키워드 등을 사용하여 더 간결한 ‘판다 식'(?) 방법이 있습니까?
답변
nrows
매개 변수를 사용할 수 있다고 생각합니다 . 에서 워드 프로세서 :
nrows : int, default None
Number of rows of file to read. Useful for reading pieces of large files
작동하는 것 같습니다. 표준 대용량 테스트 파일 (988504479 바이트, 5344499 줄) 중 하나 사용 :
In [1]: import pandas as pd
In [2]: time z = pd.read_csv("P00000001-ALL.csv", nrows=20)
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.00 s
In [3]: len(z)
Out[3]: 20
In [4]: time z = pd.read_csv("P00000001-ALL.csv")
CPU times: user 27.63 s, sys: 1.92 s, total: 29.55 s
Wall time: 30.23 s