2015-03-29 11 views
13

ben çok büyük CSV dosyası var. Sadece birkaç satır okumak ve işlemek istiyorum.Büyük bir CSV dosyasını nasıl kısmen okuyabilirim? Ben belleğe hepsini okuyamaz böylece

with open('abc.csv') as f: 
    line = f.readline() 
    # pass until it reaches a particular line number.... 

Ancak, pandalar bunu, ben her zaman ilk satırı okumak:

datainput1 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1) 
datainput2 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1) 
Yani temel piton de bu işleyebilir bu görevi kaldırabileceğinden Pandalar bir işlev, arıyorum

Ben pandalar bu görevi işlemek için bazı kolay bir yol arıyorum. Örneğin, 1000'den 2000'e kadar satırları okumak istersem bunu nasıl hızlı bir şekilde yapabilirim?

ben veri çerçevesi

cevap

28

Kullanım chunksize veri okumak istiyorum, çünkü panda kullanmak istediğiniz nedeni: İkinci bölümünü cevaplamak için

for df in pd.read_csv('matrix.txt',sep=',', header = None, chunksize=1): 
    #do something 

bunu:

df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows=1000, chunksize=1000) 

Bu f ilk 1000 satır atlayın ve bitiş noktalarını gerekiyorsa o zaman sadece dahil veya değil edilecek belirsiz, size satırları 1000-2000 vererek sonraki 1000 satırları okumak ama sen yapabilirsin olacak İstediğiniz şeyi almak için numaraları belirtin. basitçe Almak istediğiniz satır sayısını tanımlayan nrows argüman yararlı bulursa EdChums ek olarak

+1

güzel! Bunu paylaştığın için teşekkürler. –

1

cevap. Böylece sadece boyutu nrows bütün dosyanın bir kısmını alabilirsiniz ziyade bir yineleyici almak fakat. skiprows ile de çalışır.

df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows= 1000, nrows=1000) 
İlgili konular