Python czy R?
Waga tego pytania sprawia, że szekspirowskie „być albo nie być?” lub „mieć czy być” Erica Fromma spadają do rangi co najwyżej „co dzisiaj na kolację?”.
Zanim dojdę do sedna, trochę autobiografii.
Do podsumowania początku tej dekady wystarczy jedno słowo: wirus. W tym samym czasie, gdzieś pomiędzy podstawą czaszki, a płatem czołowym, u mnie też namnażał się wirus. Wirus data science. To był okres, kiedy miałem dużo wspólnego z science, lecz z data to raczej na małą skalę. Po godzinach stania przy szkiełkach mikroskopowych z ludzkimi fibroblastami (uśmiechają się na zdjęciu poniżej), dane z nich trzeba było przeanalizować.

Takie piękne zdjęcia generowały niestety bardzo brzydkie excele z ogromną ilością danych. Z pomocą Agaty (pozdrawiam!), czyli w tamtej chwili dla mnie osoby z supermocami programistyczymi, udało się część procesu analizy zautomatyzować. A wystarczyło kilka linijek kodu napisanego w R, żeby nagle świat stał się piękniejszy.
To jest właśnie moje origin story. To był moment, kiedy zacząłem coraz odważniej wchodzić w świat analizy danych za pomocą programowania.
R po raz pierwszy, R po raz drugi…
Rzeczone skrypty do analizy sprawiły, że chciałem się nauczyć programowania. Zapisałem się na kursy z R na uczelni, między innymi z podstaw oraz z wizualizacji danych. To właśnie tam poznałem wielkie możliwości tidyverse oraz moc ggplot2.
Muszę przyznać, że ile się nauczyłem, tyle zapomniałem. Podchodziłem do nauki kilka razy, czasem z lepszym, czasem z gorszym skutkiem. Niestety, wiedza nie używana rozmywa się. Jednak, gdy próbowałem podejść kolejny raz do analizy, znów był to R.
Python wydawał się być zbyt onieśmielający dla takiego początkującego.
Co analizować poza irysami?
Gdy skończyłem pracę na University of Virginia, równocześnie skończyły mi się dane do analizowania. Za to chęć do nauki data science zaczęła rozkwitać. To, co najbardziej przeszkadzało mi w tym procesie, było lenistwo osób prowadzących różne szkolenia lub autorów książek. Ciągle te same zbiory danych… Jeszcze trochę i wyrecytowałbym wszystkie wartości i z zamkniętymi oczami narysował wykres kwiatów irysa o 3 w nocy. Wtem wróciło do mnie szkolenie z wizualizacji danych.
Czysty wtorek…?
Źródłem danych do rzeczonego wspomnianego było repozytorium na GitHubie, a same dane przedstawiały charakterystykę utworów, którą Spotify używa do rekomendowania swoim użytkownikom.

Tidy Tuesday – tak nazywa się to repozytorium. To inicjatywa, która jest skierowana od i do ludzi, który działają w ekosystemie R. Zrodziła się ze społeczności R4DS Online Learning Community and podręcznika R for Data Science. Polega ona na tym, że od kwietnia 2018, co wtorek, pojawia się jeden nowy, ogólnodostępny zestaw danych. Całą ideą jest tego projektu, aby nowicjusze, jak i zaawansowani użytkownicy mogli uczyć się lub praktykować takie umiejętności jak: wizualizacja danych, oraz ich agregacja, transformacja i modelowanie. Nazwa pochodzi od tidyverse. Zaraz wyjaśnię, co to za uniwersum oraz jacy są w nim superbohaterowie.
Superbohaterowie Tidyverse
Tidyverse to zbiór bibliotek napisanych w R, który swoją rozpiętością zapewnia odpowiednie narzędzia od początku do końca procesu analizy.
Zacznijmy od załadowania danych – tutaj posłużą takie paczki, jaki readr
, readxl
, haven
. Jeśli chcemy pozyskać dane bezpośrednio ze strony internetowej, z pomocą przychodzi rvest
.
Następnie, po załadowaniu danych jest tibble
, czyli tidyverse’owa wersja dataframe.
Tibble, czyli tabela z nowozelandzkim akcentem (Google: Hadley Wickham), może teraz zostać wzięta pod skrzydła dplyr
(odpowiednik Pythonowego pandas
), forcats
i stringr
.
Do wizualizacji oraz komunikacji wyników w tidyverse jest ggplot2
. Wymaga pewnego zaangażowania do ogarnięcia wszystkich osobliwości, ale wyniki są nierzadko spektakularne, i w moim odczuciu ggplot2
bije pythonowych kuzynów, matplotlib
oraz seaborn
.
(Okazuje się, że jest plotnine
– „klon” ggplot2 w Pythonie. Warto sprawdzić!)
Prócz tego jest purrr
do programowania funkcyjnego modelr
do modelowania. To tylko ułamek wszystkich bibliotek.
Koty, kanadyjskie turbiny wiatrowe, czy The Office?
Wiem, ciężki wybór, ale na szczęście nie trzeba wybierać. Repozytorium Tidy Tuesday zawiera to wszystko. To około 250 zbiorów danych z różnych zagadnień.
Moja przygoda zaczęła się od Spotify Songs. Każda piosenka na Spotify, oprócz metadanych z artystą, tytułem itp. klasyfikowana jest za pomocą algorytmów w kilkunastu kategoriach. Przykładowe cechy to: danceability, energy, loudness, mode, acousticness, oraz valence. To właśnie dzięki takim cechom szwedzka firma jest w stanie bardzo precyzyjnie dobrać kolejne utwory na playliście.
Inne zbiory zawierają wszelakie dane demograficzne, pogodowe lub gospodarcze. Są też transkrypty takich seriali jak Przyjaciele oraz Biuro.
Moim najnowszym projektem jest analiza zbioru Tornadoes, czyli danych zebranych na temat tornad na przestrzeni 70 lat w Stanach Zjednoczonych. To będzie świetna okazja na powrót do R po dłuższej przerwie i nauka wizualizacji danych geograficznych.
Dlatego Tidy Tuesday jest super?
To świetna inicjatywa, która wspiera rozwój społeczności analitycznej. Każdy może podzielić się swoim kodem oraz wynikiem analiz, zainspirować się oraz nauczyć się nowych rzeczy.
Do wielu danych, oprócz samego zbioru oraz jego opisu, jest również dołączany skrypt, którym dane zostały sprowadzone do używalnej, tabelarycznej formy. Samo to może być cenną wskazówką oraz lekcją.
Jak zacząć?
Są dwa sposoby, aby zacząć zabawę z nowymi danymi – oficjalna biblioteka tidytuesdayR
lub bezpośrednie pobranie danych z repozytorium.
Przykład: Programming Languages (21 marca 2023)
# Sposób 1.
install.packages("tidytuesdayR")
# Data
tuesdata <- tidytuesdayR::tt_load('2023-03-21')
# lub tydzień roku
tuesdata <- tidytuesdayR::tt_load(2023, week = 12)
languages <- tuesdata$languages
# Sposób 2.
languages <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-03-21/languages.csv')
To co w końcu?
Po czasie wiem, że odpowiedź na pytanie podstawione na początku (oraz wszystkie inne) brzmi: to zależy.
Po prostu wybierz jeden i zacznij robić. Tidy Tuesday Ci pomoże, niezależnie czy to Python, R lub Julia.