パンダデータフレームの最初の数行を読み取る方法


100

行の長さを事前に知らなくても、ファイルのread_csv最初のn行だけを読み取るための組み込みの方法はありますか?読み取るのに長い時間がかかる大きなファイルがあり、たまに最初の20行だけを使用してサンプルを取得したい場合があります(すべてをロードしてその先頭をとらない方がよい)。

行の総数がわかっている場合は、次のようにfooter_lines = total_lines - nしてこれをskipfooterキーワードargに渡すことができます。私の現在の解決策はn、PythonとStringIOで最初の行を手動で取得してパンダに渡すことです。

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
「パンダスティック」ですか?:)
1 ''

回答:


182

nrowsパラメータは使えると思います。ドキュメントから:

nrows : int, default None

    Number of rows of file to read. Useful for reading pieces of large files

うまくいくようです。標準の大きなテストファイル(988504479バイト、5344499行)の1つを使用:

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 2013

3
skiprows=Noneまた、覚えておくと便利なパラメータです
Nitin

最後のn行をロードする最良の方法は何ですか?基本的にtail()は何をするのですか、csvをロードするときにそれを使う必要があります。前もって感謝します!
Danail Petrov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.