2013-02-21 19 views
37

read_csvを使用して、ファイルの最初のn行だけを読み込む方法がありますか?私は読んで長い時間がかかる大きなファイルを持っていて、たまには最初の20行を使ってそのサンプルを取得したいだけです(完全なものを読み込んでその頭部を取ることを好まない)。パンダのデータフレームの最初の数行を読み取る方法

もし私がfooter_lines = total_lines - nのような何かをして、skipfooterキーワードargに渡すことができる行の総数を知っていたら。私の現在のソリューションは、手動でパンダにPythonとはStringIOそれで最初nラインをつかむためにある:

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)) 

それは悪くはないですが、キーワードでそれを行うために、より簡潔な、「pandasic」方法があります(?)か何か?

+0

最後の_N_行のチェックアウトをロードする方法を確認する[このSOの投稿](http://stackoverflow.com/questions/17108250/efficiently-read-last-n-rows-of-csv-into-dataframe) – zelusp

+0

あなたは "パンダスティック"を意味しましたか? :) –

答えて

69

nrowsパラメータを使用できると思います。 the docsから:

これはうまくいくようです。標準の大きなテストファイル(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 
+0

素晴らしいですが、そのパラメータを忘れているに違いありません。ありがとう。 – beardc

-2

ここではオプション

df = pd.read_csv("file.csv") 
df.head() 

であることは、CSVを開いて、最初の5行を読み取ります。

+0

これはまだファイル全体を読み込みます。 OPは**最初の数行だけ**を読む方法を尋ねました。 –

関連する問題