Okładka książki „Python w analizie danych. Wydanie III” Wesa McKinneya, polskie wydanie Helion

Recenzja książki

Python w analizie danych. Przetwarzanie danych za pomocą pakietów pandas i NumPy oraz środowiska Jupyter. Wydanie III

  • Praktyka 9/10 ile da się wdrożyć
  • Głębia 5/10 siła argumentu
  • Aktualność 7/10 czy nie zestarzała się

Trzymamy w bibliotece podręcznik o pakiecie pandas, choć nie handlujemy danymi z arkusza, tylko kontraktami. Powód jest prosty. Zanim policzymy choćby jeden wskaźnik na MES (kontrakt Micro E-mini S&P 500, na którym pracujemy), musimy te dane ściągnąć, oczyścić, dopasować w czasie i poskładać w tabelę, której nie wstyd podać dalej. To jest właśnie robota, o której ta książka mówi najwięcej, a jej autor ma do niej tytuł najmocniejszy z możliwych: Wes McKinney sam napisał pandas. Dlatego u nas pełni prostą rolę: jest instrukcją obsługi narzędzia, którym codziennie przygotowujemy surowiec pod pomiary.

Po co nam podręcznik pandas

Większość książek w naszej bibliotece dotyczy tego, co robić z danymi: jak je interpretować, jak liczyć ryzyko, jak nie oszukać samego siebie w teście. Ta jest o etap wcześniej, o tym, jak w ogóle doprowadzić dane do stanu, w którym da się je liczyć. W systemie R&D na MES ten etap jest fundamentem całej reszty: dane minutowe OHLCV trzeba pobrać z platformy, przepuścić przez kolejkę, zapisać do bazy, posklejać sesje, wyrównać strefy czasowe i poradzić sobie z dziurami w notowaniach. Każdy, kto choć raz to robił, wie, że tu schodzi większość czasu, a nie na efektownym modelu.

McKinney pisze o tym bez owijania. Cała książka jest poświęcona przygotowaniu i czyszczeniu danych, a nie wnioskowaniu z nich, i autor uprzedza o tym wprost już we wstępie. Dla nas to zaleta. Bierzemy ją do ręki dokładnie po to, czego inne pozycje nie ruszają.

Sztych: wąż z grawerowanych linii formuje uporządkowaną siatkę kolumn rejestru, a u dołu plątanina luźnych kartek z danymi prostuje się w równe wiersze.
Język jako narzędzie rzemieślnika: w jego rękach surowe dane układają się w równe kolumny. Sztych Bractwa Rynku.

Narzędzie z pierwszej ręki

Wartość tej książki bierze się z osoby autora. McKinney nie opisuje cudzej biblioteki z perspektywy użytkownika, tylko własną, od środka. Widać to w doborze przykładów: pokazuje nie tylko, jak coś zrobić, ale i dlaczego pandas działa tak, a nie inaczej, kiedy operacja zwraca kopię, a kiedy widok, gdzie indeksowanie boli i jak go obejść. To wiedza, której zwykle nie wyciąga się z pierwszego lepszego kursu w internecie.

Zakres jest szeroki i poukładany: NumPy jako warstwa tablic, pandas jako warstwa danych etykietowanych, wczytywanie i zapisywanie z różnych formatów, czyszczenie, łączenie, przekształcanie, grupowanie, a na koniec osobny, mocny rozdział o szeregach czasowych. Wydanie trzecie zostało doprowadzone do pandas w wersji 2.x i Pythona 3.10. Od jego premiery pandas zdążył wejść w linię 3.x, więc część przykładów warto dziś przejrzeć pod kątem zmian w nowszej wersji. Trzon i tak działa, a dla podręcznika o konkretnej bibliotece to sporo, bo połowa frustracji z takich książek bierze się z kodu, który po prostu przestał się uruchamiać.

Praca, której nikt nie pokazuje

Najmocniejsza teza tej książki nie jest wielką tezą. Jest spokojnym stwierdzeniem, że porządkowanie danych to osobna umiejętność, którą trzeba wyćwiczyć, i że Python nadaje się do niej wyjątkowo dobrze:

Na szczęście Python jest językiem idealnie nadającym się do porządkowania danych. Im większa będzie Twoja wiedza dotycząca Pythona, tym łatwiej będzie Ci przygotować nowe zbiory do analizy.

Wes McKinney, Rozdział 2

Brzmi to niepozornie, ale stoi za tym konkretna obietnica. Im sprawniej operujesz na DataFrame, tym mniej czasu tracisz na ręczne łatanie danych, a więcej zostaje na pytania, które naprawdę chcesz zadać. W naszym warsztacie przekłada się to bezpośrednio na to, ile świec zdążymy przebadać, zanim znudzi nas dłubanina. Książka nie sprzedaje przy tym iluzji, że da się ten etap pominąć. Przeciwnie, traktuje go jako pełnoprawną część pracy, i to jest jej uczciwość: zamiast obiecywać magię modelu, uczy rzetelnie składać dane.

Sztych: dwie dłonie rozczesują chaotyczny plik luźnych kartek z poprzekreślanymi liczbami w czyste, równo wyrównane kolumny.
Porządkowanie danych to osobna umiejętność, którą trzeba wyćwiczyć. Sztych Bractwa Rynku.

Gdzie ta droga się kończy

Najbardziej cenimy w tej książce moment, w którym autor sam wskazuje granicę swojego narzędzia. McKinney nie udaje, że Python jest dobry do wszystkiego. W podrozdziale „Dlaczego nie Python?” podaje przykład, który u nas brzmi szczególnie znajomo, bo wprost wymienia system transakcyjny o wysokiej częstotliwości jako zastosowanie, w którym interpretowany język przestaje wystarczać. Tam, gdzie liczy się najniższa latencja, jego rada jest jednoznaczna:

Lepiej jest poświęcić więcej czasu na opracowanie kodu w języku niższego poziomu (języku wymagającym większego nakładu pracy programisty), takim jak C++

Wes McKinney, Rozdział 1

To zdanie warto przeczytać dwa razy, jeśli ktoś marzy o handlu o wysokiej częstotliwości w czystym Pythonie. My tej granicy nie dotykamy i dobrze o tym wiedzieć z góry. Nasz system to badania, pomiary i logika setupów na danych minutowych, a nie wyścig o mikrosekundy w arkuszu zleceń. W tym przedziale czas programisty jest cenniejszy od czasu procesora, więc Python i pandas są właściwym wyborem. Gdyby jednak kiedyś przyszła pokusa schodzenia na poziom egzekucji liczonej w ułamkach sekundy, ta jedna linijka oszczędza miesięcy walki z narzędziem nie do tego stworzonym. Książka, która sama mówi, gdzie się kończy, jest warta więcej niż taka, która obiecuje wszystko.

Sztych: kamień graniczny na końcu wybrukowanej drogi, za nim stromy wąwóz pełen trybów; dłoń odkłada na kamieniu precyzyjne narzędzie, nie przekraczając granicy.
Tam, gdzie liczy się najniższa latencja, kończy się droga Pythona, a zaczyna język niższego poziomu. Sztych Bractwa Rynku.

Jak tego używamy

U nas pandas jest spoiwem całego potoku danych. Surowe notowania z platformy wpadają przez n8n do bazy, a stamtąd pandas robi resztę: wczytanie, oczyszczenie, wyrównanie do wspólnej osi czasu, policzenie wskaźników i wypchnięcie wyniku dalej. Rozdział o szeregach czasowych jest dla nas najważniejszy w całej książce, bo to on rozwiązuje kłopoty, które wracają w każdej sesji: strefy czasowe, próbkowanie w innym takcie, dopasowanie dwóch serii o różnych znacznikach czasu. To są nudne problemy, ale jeśli się je zlekceważy, cały późniejszy backtest stoi na przesuniętych danych.

Sztych: wielka tarcza zegara, z której dwie wstęgi znaczników i świec cenowych spływają i wyrównują się do jednej wspólnej osi czasu.
Najtrudniejsze w potoku: dwie serie o różnych znacznikach czasu wyrównane do jednej osi. Sztych Bractwa Rynku.

Druga rzecz, którą bierzemy stąd świadomie, to filozofia jednego środowiska. McKinney zauważa, że Python wyrósł z roli języka do prototypów i nadaje się dziś również do systemów produkcyjnych:

Coraz więcej osób odkrywa, że Python to język, który nadaje się nie tylko do badań i prototypowania, ale również można go stosować podczas tworzenia systemów produkcyjnych.

Wes McKinney, Rozdział 1

Dla nas to zgoda na to, żeby ten sam kod, w którym testujemy pomysł, posprzątał dane na żywym potoku. Nie utrzymujemy dwóch światów, jednego do badań i drugiego do produkcji, bo to się rozjeżdża i mnoży błędy. Chodzi przy tym o potok danych i narzędzia badawcze; niskolatencyjną egzekucję zleceń i tak zostawiamy poza Pythonem. Książka nie napisze za nas tego potoku, ale daje pewność, że narzędzie udźwignie obie role, i pokazuje, jak nim operować, żeby nie strzelić sobie w stopę przy pierwszym połączeniu tabel.

Sztych: jeden warsztat z centralnym narzędziem zasilającym dwa wyjścia naraz: notatnik badawczy z jednej strony i pracujący mechanizm produkcyjny z drugiej.
Jedno środowisko do badań i do produkcji: ten sam kod sprząta dane na żywym potoku. Sztych Bractwa Rynku.

Czego tu nie ma

Najuczciwiej o podręczniku mówi się, wskazując jego granice. Po pierwsze, brakuje w niej tezy. Nie znajdziesz tu autorskiego spojrzenia na rynek, na ryzyko ani na to, jak myśleć o danych finansowych. Dostajesz rzetelną i kompletną instrukcję obsługi, w której z założenia nie ma argumentu do sporu. Kto szuka idei, a nie umiejętności, odłoży ją znudzony. My oceniamy ją jako narzędzie i jako narzędzie jest świetna, lecz właśnie dlatego jej głębia myślowa jest umiarkowana, bo takie nie było zadanie tej książki.

Po drugie, to książka o kodzie, a kod starzeje się szybciej niż zasada. McKinney jest tego świadomy i sam mówi, że pisał ostrożnie:

Starałem się unikać tematów, które mogłyby się zdezaktualizować

Wes McKinney, Przedmowa

Ta dyscyplina widać i broni treści przed szybkim zestarzeniem, ale nie cofa praw fizyki. Biblioteka pandas dalej ewoluuje, kolejne duże wydanie zmieni część szczegółów, a wtedy potrzebne będzie czwarte wydanie. Sama zasada porządkowania danych zostanie, konkretne wywołania funkcji nie zawsze. Taka jest po prostu natura gatunku, którą trzeba znać, sięgając po książkę o konkretnej wersji konkretnego pakietu.

Po trzecie, próg wejścia nie jest zerowy. Książka uczy samej biblioteki i zakłada gotowego Pythona, opanowanego na tyle, by nie potykać się o składnię. Kto dopiero zaczyna programować albo szuka wstępu do statystyki, powinien zacząć gdzie indziej, a tu wrócić.

Werdykt

Praktyczność 9, głębia 5, aktualność 7. Praktyczność najwyżej w całym naszym zbiorze recenzji, bo nie ma u nas książki, którą wdraża się równie bezpośrednio: każdy rozdział to czynność, którą wykonujesz na własnych danych jeszcze tego samego dnia. Dla zespołu, którego codzienna robota to czyszczenie i składanie notowań, trudno o narzędzie celniejsze. Punktu do dziesiątki nie dokładam, bo dziesiątkę rezerwujemy na pozycję, od której nie ma w danym wymiarze lepszej, a tu zawsze zostaje zależność od jednej konkretnej biblioteki.

Głębię stawiam nisko i robię to świadomie. To podręcznik użytkowy, w którym z założenia nie ma tezy do ważenia. Ocenia się go po tym, jak dobrze uczy narzędzia, a nie po sile argumentu, bo argumentu tu z założenia nie ma. W zestawieniu z książkami, które dają własny sposób myślenia o rynku, ta wypada nisko w tym jednym wymiarze i jest to spójne z tym, co napisałem wyżej: jej wartość leży gdzie indziej.

Aktualność pośrodku z lekkim plusem. Treść jest stosunkowo świeża i celuje w pandas 2.x oraz Pythona 3.10, a autor pisał z myślą o trwałości. W połowie 2026 roku pandas ma już jednak linię 3.x, więc część konkretnych wywołań trzeba czytać z poprawką na nowszą wersję, i to właśnie trzyma ocenę przy siódemce, nie wyżej. Sama zasada porządkowania danych zostaje, przywiązanie do konkretnej wersji biblioteki ciąży. Klasyka, która daje samą zasadę, zestarzeje się wolniej, choć uczy mniej namacalnie.

Komu polecić? Każdemu, kto pracuje z danymi w Pythonie i ma dość zgadywania, czemu pandas zachowuje się nie tak, jak się spodziewał. U nas to pozycja codziennego użytku, nie lektura na wieczór: leży pod ręką przy budowie potoku danych i wraca za każdym razem, gdy trzeba okiełznać kolejny nieposłuszny zbiór notowań. Kto szuka pomysłu na strategię, niech szuka gdzie indziej, bo tej książki zadaniem jest przygotować dane, na których dopiero taki pomysł da się uczciwie sprawdzić.