Pandalar veri çerçevesi için ilk birkaç satırı okumanın yolu


104

Satırların uzunluğunu önceden bilmeden bir dosyanın read_csvyalnızca ilk nsatırlarını okumanın yerleşik bir yolu var mı ? Okuması uzun zaman alan büyük bir dosyam var ve ara sıra sadece ilkini, örneğin 20 satırını örnek almak için kullanmak istiyorum (ve tam olanı yüklemeyi ve başını almamayı tercih ediyorum).

Toplam satır sayısını bilseydim, buna benzer bir şey yapabilir footer_lines = total_lines - nve bunu skipfooterarg anahtar kelimesine iletebilirdim . Mevcut çözümüm, npython ve StringIO ile ilk satırları manuel olarak pandalara almaktır:

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

O kadar da kötü değil, ancak anahtar kelimelerle veya başka bir şeyle bunu yapmanın daha kısa ve 'pandazik' (?) Bir yolu var mı?


1
Son N satırının nasıl yükleneceğini görmek için bu SO gönderisini kontrol edin
zelusp

7
"Pandastik" mi demek istedin? :)
1 ''

Yanıtlar:


189

nrowsParametreyi kullanabileceğinizi düşünüyorum . Gönderen docs :

nrows : int, default None

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

bu işe yarıyor gibi görünüyor. Standart büyük test dosyalarından birini kullanarak (988504479 bayt, 5344499 satır):

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

Harika, bu parametreyi kaçırmış olmalı. Teşekkürler.
sakalc

4
skiprows=Noneaynı zamanda hatırlanması gereken yararlı bir parametredir
Nitin

Son n satırı yüklemenin en iyi yolu nedir? Temelde tail () ne yapar, ancak csv dosyasını yüklerken kullanmam gerekiyor. Şimdiden teşekkürler!
Danail Petrov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.