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


100

미리 줄의 길이를 모르고 파일 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))

그렇게 나쁘지는 않지만 키워드 등을 사용하여 더 간결한 '판다 식'(?) 방법이 있습니까?


1
마지막 N 줄 을로드하는 방법을 보려면 이 SO 게시물을 확인하십시오.
zelusp

7
"pandastic"을 의미 했습니까? :)
1 ''

답변:


182

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

멋져요, 그 매개 변수를 놓쳤 나봐요. 감사.
beardc

3
skiprows=None기억해야 할 유용한 매개 변수입니다
Nitin

마지막 n 개 행을로드하는 가장 좋은 방법은 무엇입니까? 기본적으로 tail ()이하는 일이지만 csv를로드하는 동안 사용해야합니다. 미리 감사드립니다!
Danail Petrov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.