Jak tam siedzenie w domu? Dzieci pokolorowały już wszystko? A co jeżeli Ci powiem, że kolorowanki dla dzieci to zło? Przynajmniej takie głosy można gdzieniegdzie wyczytać ( np. tu). No chyba, że chcesz wychować skrojony na wymiar trybik, który wpasuje się w zaplanowany dla niego mechanizm – wtedy zasypuj swoje dziecko kolorowankami ile wlezie i najlepiej przywiąż do stołka (co przyniesie wątpliwy benefit dla niego, ale wielki wzrost produktywności na chwałę i zysk Twojego korpo – bo Tobie zapłacą przecież tyle samo). Oczywiście przesadzam – ale, jak wszystko na tym Świecie, znaczenia to nie ma, bo nie o kolorowaniu kredkami dziś będzie.
Będzie o wizualizacji danych na kolorowych wykresie przy użyciu (docelowo) dwu-kliknięcia. Jeżeli dane było mi gościć Ciebie wcześniej i jesteś po lekturze wpisów o Pythonie i inwestowaniu, to wiesz, że moim długofalowym projektem jest system monitowania i wspomagania inwestycji oparty o krótsze lub dłuższe skrypty napisane w Pythonie i bazę MSSQL.
Pod koniec Catalysatora zapowiadałem wpis o pomaganiu sobie w analizie danych. Jednym ze sposób na to wspomaganie jest wizualizacja danych. Skoro do tej pory mam automat do ściągania informacji o notowaniach (Wąż na parkiecie) i automat do komunikowania się z systemem (Cyber-trep), to teraz przydałoby się ZOBACZYĆ co z całości wyszło.
W pierwszej kolejności – wynik inwestowania pod kątem przychodów z odsetek i dywidend w ujęciu rocznym. Chodzi przecież o to, żeby po każdym małym sukcesie nagradzać się dopaminą i biec dalej.
Jednym z moich ulubionych filmów, wspaniale pokazujących niezwykłość Islandii, jest Bokeh. Piękny film post-apo w wersji bez wybuchów. Bardzo polecam. Ale! Nie o treść film chodzi, a o jego nazwę – bowiem identyczne imię nosi bardzo ciekawa biblioteka do interaktywnej wizualizacji danych. Będzie ona jednym z narzędzi którego użycie za chwilkę wyjaśnię.
Każdy, kto kiedykolwiek zrobił wykres wie, że aby go narysować potrzebował danych. Jedną z najpopularniejszych bibliotek do manipulacji i analizy danych jest Pandas. To narzędzie numer dwa. I teraz już jest jasne dlaczego kolorujemy pandę!
https://bokeh.org
https://pandas.pydata.org
Koncepcja na dopaminowy wykres jest prosta: chce móc zobaczyć ile żetonów dostałem z odsetek od obligacji oraz dywidend w poprzednich latach oraz jak mi idzie w bieżącym roku. Fajnie byłoby też wiedzieć co się wydarzy w tym roku. O proponowanych dywidendach informacja udostępniania jest często na etapie planów danej spółki, następnie przekazywana w formie projektów uchwał dla walnego zgromadzenia – w tym momencie wiadomo jest już kiedy i ile. W wypadku obligacji terminy wypłat są zaplanowane z góry. Ostatecznie dla wykresu potrzebuję więc odpowiednio przygotowaną tabelkę zawierającą:
– rok
– typ dochodu (odsetki/dywidenda + planowana / zrealizowana)
– wartość
Przygotowanie wykresu z pomogą Pythona odbywa się w kliku krokach. Najpierw kod łączy się z bazą danych, pobiera informacje przy pomocy napisanej w tym celu kwerendy i zapisuje je do „ramki danych” zrozumiałej dla Pandas. Czarno biały (chociaż może być też czerwony) miś przestawia tabelkę (lub pivotuje w korpoludzkim) tak, aby każda seria, czyli odsetki z obligacji oraz dywidendy, były w oddzielnej kolumnie. Wygląda to mniej więcej tak jak poniżej:
Na koniec patrzymy na to wszystko przez Bokeh. Tak, przez bokeh można patrzeć, bo jest to również nakładka na obiektyw aparatu dzięki któremu punkty świetlne wychodzą na zdjęciu w kształcie otworu w nakładce. Swoją drogą coś do wydrukowania na drukarce 3D, a ludzie wymyślili już niejedno drukowalne rozwiązanie – sprawdźcie na Thingiverse!
Procedura budowania wykresu zaczyna się od ustalenia jego wielkości i stworzenia układu współrzędnych. Biblioteka Bokeh zawiera wiele wbudowanych funkcji budujących wykresy. Na potrzeby mojej wizualizacji wybieram poziomy, warstwowy wykres słupkowy. W funkcji wyszczególnione zostają serie danych odpowiadające kategoriom, wartości do pokazania na osi pionowej, szerokości (a w zasadzie w przypadku poziomego wykresu wysokości) słupków oraz ich kolory. Na tej jednej funkcji można by poprzestać, lecz moja wizja zawiera dodatkowo legendę i wskazówki do czytania wykresu, które pokazują się po najechanie kursorem myszy na serię danych. Wszystkie elementy (i wiele innych) uruchamia się wywołując odpowiednią funkcję biblioteki. Chociaż muszę przyznać, że czas spędzony na rozpracowywaniu biblioteki rośnie proporcjonalnie do aktualnego poziomu fantazji autora.
Odpicowany wykres zapisać można do pliku html lub od razu wywołać do przeglądarki z poziomu samego kodu. W mojej wizji całościowego rozwiązania widzę interaktywny dashboard automatyczny ładujący się na bloga, aby czytelnik mógł razem ze mną śledzić postępy inwestycyjne. Na teraz, poniżej możecie zobaczyć stan na środek września 2020.
Wszystkie do tej pory opisane na blogu elementy mojej Pythonowej układanki funkcjonują oddzielnie. Być może połączę je kiedyś w całość. Kody tradycyjnie udostępniam na Githubie. Jeżeli chcesz z nich skorzystać – zapraszam, ale pamiętaj, że żyją własnym życiem i często przechodzą zmiany. Czasami kosmetyczne, czasami dość gruntowne. Kończąc polecam jeszcze znalezioną w Internecie na stronie Art Projects for Kids instrukcję: „jak narysować pandę” – skąd wziąłem tytułowy obrazek. Jeżeli myślisz, że programowanie nie jest dla Ciebie, spróbuj chociaż tego!
GPW (this link opens in a new window) by Ukasz123D (this link opens in a new window)
Experimenting with Python for the sake of gathering and analysing Warsaw Stock Exchange data
Sztos!
Dziękuję dobry człowieku 🙂
Wow!
Ha! 😀