[python] Pandas 데이터 프레임의 처음 몇 줄을 읽는 방법

미리 줄의 길이를 모르고 파일 read_csv의 첫 n줄만 읽는 데 사용하는 기본 제공 방법이 있습니까? 읽는 데 오랜 시간이 걸리는 대용량 파일이 있는데, 샘플을 얻기 위해 첫 번째 줄 (예 : 20 줄) 만 사용하고 싶을 때도 있습니다 (전체 내용을로드하고 헤드를 차지하는 것을 선호하지 않음).

총 줄 수를 알고 있다면 다음과 같이 할 수 footer_lines = total_lines - n있으며 skipfooter키워드 arg에 전달할 수 있습니다. 내 현재 솔루션은 npython 및 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


답변