1. ホーム
  2. python

[解決済み] pandas dataframe の最初の数行を読み込む方法

2022-08-04 22:40:17

質問

ビルトインで read_csv のみを読み取るために、最初の n 行の長さを前もって知ることなく、ファイルの最初の行だけを読むことができますか?私は、読み取るのに長い時間がかかる大きなファイルを持っており、時々、そのサンプルを得るために最初の、例えば20行だけを使いたいと思っています(そして、完全なものをロードしてその頭を取ることを好みません)。

もし私が行の総数を知っていれば、次のようなことができます。 footer_lines = total_lines - n で、これを skipfooter キーワードの arg に渡します。私の現在の解決策は、手動で最初の n の行を手動で取得し、それをpandasに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))

そんなに悪くはないのですが、キーワードとかで、もっと簡潔な、「パンダ的」(?)な方法はないのでしょうか?

どのように解決するのですか?

を使えばいいと思います。 nrows パラメータを使用します。 から ドキュメント :

nrows : int, default None

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

で、うまくいきそうです。 標準の大きなテスト ファイルの 1 つを使用しています (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