Przyspieszenie we/wy: Parquet i Feather

Nov 27 2022
Niektóre z naszych problemów dotyczą danych, które odczytujemy z pamięci lokalnej. Operacje odczytu-przetwarzania-zapisu mogą być wygodne w przypadku stosunkowo małych zestawów danych, ale te działania w przypadku dużych plików .

Niektóre z naszych problemów dotyczą danych, które odczytujemy z pamięci lokalnej. Operacje odczytu-przetwarzania-zapisu mogą być wygodne na stosunkowo małych zbiorach danych, ale te operacje na dużych plikach .csv są dla nas dość uciążliwe. Mogą być bardzo wymagające pod względem czasu i zasobów.

Przedstawię dwa typy plików, które zwiększą szybkość odczytu i zapisu Twoich danych oraz skompresują rozmiar danych przechowywanych na dysku:

  • Parkiet
  • Pióro
  • Dostępne domyślnie z Python-Pandas. Ale może być konieczne dodatkowe zainstalowanie pyarrow i niektórych rozszerzeń tego rodzaju w zależności od typu danych.
  • Obsługa zarządzania we/wy opartego na kolumnach. W ten sposób możesz zapobiec tymczasowemu używaniu dodatkowej pamięci RAM podczas odczytu wszystkich danych, a następnie usuwaniu niepotrzebnych kolumn.
  • Przechowywanie danych w formacie binarnym we własnym typie zamiast w postaci surowej pozwala zaoszczędzić do 50% miejsca na dysku i uzyskać przyspieszenie do 100 razy w operacjach odczytu i zapisu.

Parkiet

Pióro

Wniosek

To takie proste! Zdecydowanie polecam korzystanie z tych metod, gdy nie musisz przechowywać danych w surowym formacie, a każdy użytkownik nie musi mieć możliwości otwarcia ich w Excelu w dowolnym momencie! W tym wyjątkowym przypadku bardziej logiczne jest równoległe odczytywanie i zapisywanie danych zamiast zmiany formatu danych. Zastanawiam się również nad rozwiązaniem tego scenariusza w przyszłości. Mam nadzieję, że ta treść była dla Ciebie przydatna, myślę, że jest to coś prostego, ale dość skutecznego.

Używam tych metod w zawodach Kaggle i uzyskuję całkiem niezłe przyspieszenia. Możesz przejrzeć mój przykładowy kod tutaj !