2016-06-20 13 views
14

Podana jest lista ramek danych o wielkości 1,5 Gb., który jest szybszy do załadowania: pikle lub hdf5 w pythonie

Zastanawiam się, które jest lepsze podejście do obsługi ładowania tych danych: marynacie (przez cPickle), hdf5 lub coś innego w python?

Po pierwsze, "wyrzucenie" danych jest OK, aby wziąć długo, robię to tylko raz.

Jestem również nie związany z rozmiarem pliku na dysku.

Pytanie: Co jestem zaniepokojony jest szybkość ładowaniadane do pamięci, tak szybko jak to możliwe.

+7

Czy próbowałeś zmierzyć to w swoich określonych warunkach? – pvg

+1

Zgaduję, że pikle będą jednym z najgorszych sposobów na zrzucenie tych danych :-). Oczywiście, to tylko domysły. Nie mam żadnych twardych danych, aby go poprzeć. Mówiąc o twardych danych, dlaczego nie zrobić eksperymentu i dowiedzieć się? – mgilson

+0

Cóż, publikuję pytanie, nie jest to odpowiedź;) Mogę przetestować pickle vs hdf5, ale co, jeśli ekspert na tej stronie może skierować mnie do znacznie lepszej metody, która wchodzi w "czy coś innego"? :) – denvar

Odpowiedz

29

uważam tylko dwa formaty Przechowywanie: hdf5 (PyTables) i Feather

oto wyniki moich read and write comparison dla DF (kształt: 4000000 x 6, wielkość w pamięci 183,1 MB, rozmiar nieskompresowanego pliku CSV - 492 MB).

Porównanie dla formatów następujące składowania: (CSV, CSV.gzip, Pickle, HDF5 [różne kompresji]):

    read_s write_s size_ratio_to_CSV 
storage 
CSV    17.900 69.00    1.000 
CSV.gzip   18.900 186.00    0.047 
Pickle    0.173  1.77    0.374 
HDF_fixed   0.196  2.03    0.435 
HDF_tab   0.230  2.60    0.437 
HDF_tab_zlib_c5 0.845  5.44    0.035 
HDF_tab_zlib_c9 0.860  5.95    0.035 
HDF_tab_bzip2_c5 2.500 36.50    0.011 
HDF_tab_bzip2_c9 2.500 36.50    0.011 

Ale to może być różny dla ciebie, bo wszystkie moje dane było z datetime dtype, więc zawsze lepiej jest dokonać porównania z rzeczywistymi danymi lub przynajmniej z podobnymi danymi ...

+0

Dlaczego bierzesz pod uwagę tylko HDF5 i Feather, ale nie Pickle? Twój wynik pokazuje, że jest całkiem dobry, jest też skompresowany pikle. Czy to nie jest dobry standardowy wybór? – THN

+0

@THN, Jeśli dobrze pamiętam, widziałem błędy w przeszłości - nie jestem pewien, czy to nadal tak jest ... – MaxU

+1

Pickle ma problem, że nie będzie działać dla bardzo dużych plików danych 2-3GB i tak często. Jest przeznaczony dla małych danych. Również pikle ma problemy z bezpieczeństwem! – AbdealiJK

Powiązane problemy