Mam dużego pliku csv i otworzyć go z pd.read_csv jak następuje:otwarte wybrane wiersze z pand używając „chunksize” i/lub „iterator”
df = pd.read_csv(path//fileName.csv, sep = ' ', header = None)
Gdy plik jest naprawdę duży I chciałoby być w stanie otworzyć go w rzędach
from 0 to 511
from 512 to 1023
from 1024 to 1535
...
from 512*n to 512*(n+1) - 1
gdzie n = 1, 2, 3 ...
Jeśli dodać chunksize = 512 na argumentach read_csv
df = pd.read_csv(path//fileName.csv, sep = ' ', header = None, chunksize = 512)
i typ
df.get_chunk(5)
niż ja w stanie otworzyć wiersze od 0 do 5, lub może być w stanie rozdzielić plik w częściach 512 rzędów za pomocą pętli
data = []
for chunks in df:
data = data + [chunk]
Jest to jednak zupełnie bezużyteczne, ponieważ plik musi być całkowicie otwarty i wymaga czasu. Jak mogę czytać tylko wiersze od 512 * n do 512 * (n + 1).
Rozglądając Często widziałem, że „chunksize” jest używany razem z „iterator”, jak wynika
df = pd.read_csv(path//fileName.csv, sep = ' ', header = None, iterator = True, chunksize = 512)
Ale po wielu próbach nadal nie rozumieją korzyści, które dostarczają mi tę zmienną logiczną. Czy możesz mi to wyjaśnić?
Nie muszę niczego scalać, wystarczy otworzyć wiersze od powiedzeń ... 512 * 10 do 512 * 11 -1, bez otwierania czegokolwiek innego, czy to możliwe? –
Skopiowałem i przeszłam twój kod na moim IPythonie i próbowałem raz z "iterator = True" i innym razem z "iterator = False", nie ma między nimi żadnej różnicy. W takim przypadku "iterator" może być przydatny? –
@StefanoFedele, zaktualizowałem swoją odpowiedź na przykładzie, który powinien wyjaśnić różnicę między 'chunksize' a' iterator' ... – MaxU