Pandas vs Polars vs Dask, wykresy na żywo
Trzy biblioteki ramek danych Python, trzy aktywne wykresy Chart.js: wykres bąbelkowy dla ekosystemu, wykres bąbelkowy z możliwością skryptowania, w którym kolor pochodzi z wartości, a nie z biblioteki, oraz wykres z linią progresywną do przyjęcia. Brak zrzutów ekranu – powyższe płótna renderują się w przeglądarce.
Uruchamianie wykresów…
Chciałem mieć stronę, która faktycznie pokaże różnicę między pandas, Polars i Dask, zamiast po prostu informować, że Polars jest „szybkie”. Trzy powyższe wykresy to Chart.js, działający po stronie klienta, w oparciu o ustalony zbiór danych, który wybrałem ręcznie, a nie szablon giełdowy z numerami zastępczymi. Statystyki ekosystemów w formie wykresu bąbelkowego. Punkt odniesienia w postaci skryptowego wykresu bąbelkowego, w którym kolor jest obliczany na podstawie wartości, a nie przypinany do biblioteki. Krzywa adopcji, która narasta stopniowo, od lewej do prawej, w ten sam sposób, w jaki z roku na rok rozwijał się prawdziwy wzrost.
Trzy biblioteki, jedno zadanie – dane tabelaryczne w Python – i trzy bardzo różne kompromisy między przepustowością, pamięcią i tym, jaka część istniejącego kodu pandas przetrwa zmianę. Poniższe liczby są zaokrąglone i datowane na wrzesień 2026 r., a wynik porównawczy ma charakter poglądowy, a nie przebieg, który odtworzyłem dokładnie na tej stronie. Wolałbym to powtarzać raz za często, niż pozwalać, aby wykres sugerował większą precyzję niż jest.
1. Dlaczego tylko trzy biblioteki udostępniają bąbelki
Wykresy bąbelkowe i punktowe to jedyna forma wykresu, na której każdy znak może znaleźć się tuż obok każdego innego znaku, dlatego kategoryczna paleta kolorów musi przetrwać każdą możliwą parę, a nie tylko sąsiadów w legendzie. Uruchom tę kontrolę wszystkich par w porównaniu z moim zwykłym zestawem ośmiu odcieni i tylko pierwsze trzy kolory wyczyszczą go, zarówno w trybie jasnym, jak i ciemnym, dla czytnika daltonisty. To nie jest opinia projektowa – to jest prawdziwy powód, dla którego powyższy wykres ekosystemu porównuje dokładnie pandas, Polars i Dask zamiast pięciu bibliotek w pięciu błotnistych kolorach. PySpark i Modin zamiast dymka otrzymują akapit u dołu tej strony.
pandas nadal wygrywa w zakresie pobrań o rząd wielkości, czego można się spodziewać po piętnastoletnim standardzie z tysiącami integracji. Bardziej interesującą informacją jest to, jak blisko Polars osiągnął Dask na GitHub gwiazdach, korzystając z mniej więcej jednej dziesiątej autorów – mały, skupiony zespół przepisując silnik od zera zamiast rozszerzać istniejący API może najwyraźniej wyprzedzić znacznie większy.
2. Kolor skryptowy, a nie kolor identyfikacyjny
Wykres wydajności umożliwia grupowanie i agregowanie w pliku CSV w dwóch rozmiarach – 2 GB, które mieści się w pamięci i 20 GB, które mieści się na krawędzi typowego laptopa. Chart.js umożliwia ustawienie elementów.point.radius i tłaColor jako funkcji zamiast stałych wartości, co dokładnie pokazuje przykład opcji skryptowych Chart.js. Użyłem go tutaj do czegoś, co ma prawdziwe znaczenie: kolor jest obliczany bezpośrednio na podstawie czasu działania w sekundach – szybki, umiarkowany, wolny – nie jest przypięty do biblioteki, więc ten sam zielony może należeć do Polars przy 2 GB lub Dask przy 20 GB. Promień bąbelka pochodzi ze szczytowej pamięci RAM, w skali pierwiastkowej, więc obszar, a nie surowy promień, śledzi pamięć w przybliżeniu liniowo.
Przy 2 GB Dask w rzeczywistości przegrywa ze zwykłym pandas – utworzenie wykresu zadań wiąże się z narzutem, który opłaca się tylko wtedy, gdy jest wystarczająco dużo pracy do rozłożenia na nim. Przy 20 GB obraz się odwraca: jednowątkowy pandas, kopiowanie danych do pamięci, degraduje najbardziej; Polars, działający na Rust z SIMD i wykonaniem strumieniowym, utrzymuje się w „umiarkowanym” paśmie; Dask, dzieląc plik na kawałki, utrzymuje pamięć pod kontrolą i na czas zamyka większość luki do Polars.
3. Linie progresywne i po co właściwie bym sięgnął
Wykres wzrostu śledzi szacowane tygodniowe pobrania PyPI od 2019 r. do 2026 r. dla tych samych trzech bibliotek i animuje go w taki sam sposób, jak robi to próbka linii progresywnej w Chart.js: każdy punkt ma własne opóźnienie w oparciu o swój indeks, więc linia biegnie od lewej do prawej, a nie tylko zanika. Jest to celowe echo tematu, a nie dekoracja – prawdziwe przyjęcie również następowało z roku na rok. Poziom pandas wyrównuje się i tak wygląda dojrzały, piętnastoletni standard, a nie tracąca na wartości biblioteka. Polars, wydany w 2020 r., przedstawia podręcznikową krzywą późnego startu: początkowo ledwo zauważalną, a następnie ostry zakręt, gdy ludzie spoza bańki entuzjastów Rusta zaczęli pisać o prędkości.
Po co więc właściwie miałbym sięgnąć? pandas, gdy ekosystem i pamięć mięśniowa zespołu liczą się bardziej niż same sekundy. Polars dla nowego potoku na jednej mocnej maszynie, gdzie pamięć i procesor kosztują prawdziwe pieniądze. Dask, gdy dane w ogóle przestają się mieścić na jednej maszynie i wolisz zachować kod w kształcie pandas, niż przepisywać go w PySpark. PySpark i Modin są o krok dalej – PySpark, gdy już znajdziesz się na terytorium klastra lub Spark już zarządza Twoją infrastrukturą, Modin, gdy uczciwym celem jest równoległe przyspieszenie z jednowierszową zmianą importu i zerowym apetytem na przepisywanie.
- pandas – dane do kilku GB, maksymalny ekosystem, zespół, który zna już API zimno.
- Polars – pojedyncza potężna maszyna, świeży potok bez przestarzałego kodu do przeciągnięcia, pamięć i procesor, które faktycznie kosztują.
- Dask – dane, które nie mieszczą się już na jednej maszynie, pandas w kształcie API, z którego nie chcesz się rezygnować, klaster, który istnieje lub nadchodzi.
- PySpark lub Modin – o krok dalej: PySpark, gdy już znajdziesz się na terytorium klastra, Modin dla jednowierszowej zamiany importu, gdy przepisanie nie wchodzi w grę.
O liczbach
Gwiazdki w GitHub i cotygodniowe pobrania PyPI to zaokrąglone szacunki według stanu na wrzesień 2026 r., pochodzące z publicznych modułów śledzących, takich jak pepy.tech i własnego repozytorium każdego projektu. Liczby porównawcze odzwierciedlają typowy kształt publicznych porównań grupowych, a nie przebieg, który wykonałem dla tej konkretnej strony – rzeczywiste sekundy zależą od sprzętu, wersji i kształtu danych. Wszystkie trzy wykresy są zbudowane w oparciu o Chart.js: wykres bąbelkowy, wykres bąbelkowy z możliwością skryptowania i animacja z linią progresywną, te same trzy przykładowe wzorce, które Chart.js dostarcza we własnych dokumentach.
Zatrudnij jednym kliknięciem
Zatrudnij mnie jako programistę jednym kliknięciem. Rozpocznij bezpieczną umowę Upwork na tworzenie rozwiązań internetowych o wysokiej konwersji dla Twojej firmy.
Chcesz omówić swój projekt?
Jestem starszym inżynierem stron internetowych specjalizującym się w React i Next.js - dostępnym dla niezależnych projektów na całym świecie.
Lokalizacja
Kijów, Ukraina
Upwork
Zobacz profilTelegram
Skontaktuj się ze mnąVibera
Skontaktuj się ze mną