R czy Python porównanie

R czy Python? Jakiego języka uczyć się w 2018 roku.

Na to pytanie nie ma niestety prostej odpowiedzi. W tym artykule chciałabym przybliżyć główne różnice i podobieństwa między tymi dwoma językami i przyjrzeć się ich zaletom w przypadku poszczególnych zastosowań. Skoro czytasz ten artykuł zakładam, że właśnie stoisz przed takim wyborem. A może znasz już jeden z tych języków i rozważasz naukę drugiego?

Porównanie to będzie obiektywne, nie staram się nikogo przekonać do jednego lub drugiego języka – w końcu oferujemy szkolenia zarówno z R jak i z Pythona.

R i Python to języki open-source. R jest językiem stworzonym z myślą o analizach statystycznych i ich wizualizacji. Python natomiast jest językiem ogólnego przeznaczenia. W tym porównaniu skupimy się jednak jedynie na aspektach związanych z Data Science i szeroko pojętą analizą danych.

Ważnym aspektem przy wyborze języka jest oczywiście dostępność ofert na rynku pracy. Nie zawsze mamy luksus wyboru tego, który nam najbardziej odpowiada i musimy po prostu dostosować się do rynku. Tu na szczęście nie powinniśmy mieć dylematów – dostępność ofert dla obu języków stale rośnie i bardzo często w ofertach pracy pojawiają się oba języki jednocześnie. Dokładne porównanie pensji i dostępności stanowisk na Polskim rynku pracy niestety nie jest takie proste, ponieważ niektóre z ofert pracy z Pythonem to stanowiska stricte deweloperskie, niezwiązane z analizą danych.

To chyba tyle na początek, przyjrzyjmy się w takim razie jak wypada każdy z języków.

Składnia i szybkość

Choć może się wydawać, że jest to kluczowy element porównania, to jednak moim zdaniem różnice w szybkości obydwu języków nie są aż takie istotne. W gruncie rzeczy oba języki są wolne w porówaniu z C++ czy Javą. Co do zasady, Python jest szybszy i lepiej radzi sobie z zarządzaniem pamięcią, ale zależy to od tego co robimy i na jakich danych. W wielu przypadkach nie odczujemy różnicy w szybkości.

Wiele osób uważa kod pisany w Pythonie za bardziej elegancki i naturalny w odczycie. Python przypadnie do gustu zwłaszcza osobom, które miały już wcześniej styczność z programowaniem. Osoby z zapleczem ekonomiczno-statystycznym chętnie wybierają R. Dla osób, które nigdy nie programowały R-owe indeksowanie od jedynki będzie o wiele bardziej naturalne.

Instalacja, IDE

Instalacja R nie mogłaby być prostsza. Pobieramy i instalujemy R, a następnie RStudio i już możemy programować. Instalacja bibliotek też rzadko kiedy rodzi problemy.

RStudio IDE
RStudio to najpopularniejsze IDE do R

W przypadku Pythona nie jest to takie oczywiste. Python 2 czy Python 3? Które IDE? Konieczność wyboru może na początku onieśmielać, a instalacja Pythona nie jest tak łatwa jak w przypadku R. Nie należy jednak panikować. Tak naprawdę wystarczy, że zainstalujemy Anacondę (z Pythonem 3), czyli dystrybucję Pythona przeznaczoną do analizy danych i machine learningu. Ma ona zainstalowaną już większość potrzebnych blibliotek, a to właśnie instalacja bibliotek powoduje początkującym najwięcej problemów. Następnie musimy wybrać IDE. Dobrym wyborem będzie PyCharm lub Spyder (instalowany automatycznie z Anacondą). Jeśli lubimy interfejs RStudio zainstalujmy Rodeo, a jeżeli zależy nam na interaktywnym wykonywaniu kodu świetnym rozwiązaniem będzie Jupyter (również instalowany z Anacondą).

Przetwarzanie danych

Niezależnie od projektu nad którym pracujemy dane trzeba obejrzeć, przetworzyć i przygotować. Część tej pracy możemy wykonać jeszcze w bazie danych, ale wiele operacji wykonujemy dopiero w R czy w Pythonie. Pod tym względem nieznacznie lepiej wypada R, który wiele funkcji do przetwarzania danych ma wbudowanych, posiada doskonałą bibliotekę tidyverse (w szczególności pakiet dplyr) oraz szeroką gamę metod do imputacji brakujących danych. Python nadrabia biblioteką pandas podobną do R-owego dplyra.

Na stronie dokumentacji pandas znajdziemy ciekawe porównanie popularnych operacji w R i w Python. Większość z nich jest do siebie bardzo podobna jeśli chodzi o długość i składnię. To, co w Pythonie uzyskujemy za pomocą dodawania kolejnych komend po kropce w R osiągamy stosując tzw. „pipe operator”, który wygląda tak: %>%. Tu jest plus dla Pythona – kod z kropkami jest szybszy do napisania i czytelniejszy.

Machine Learning i Deep Learning

W ciągu ostatnich kilku lat zagadnienia związane z uczeniem maszynowym oraz sieciami typu deep wyraźnie zyskały na popularności. Mimo, że żaden z porównywanych języków nie zostaje w tyle i stale rozwijane są dostępne biblioteki i algorytmy to jednak muszę przyznać, że Python robi to lepiej. Dzieje się to głownie za sprawą świetnej biblioteki Scikit-learn, która za pomocą spójnej i logicznej składni daje nam dostęp do wachlarza algorytmów. Dostępna dokumentacja jest bardzo dobra, zawiera liczne przykłady, a sama biblioteka jest stale rozwijana. R-owym odpowiednikiem Scikit-learn-a jest pakiet caret, który choć daje nam dostęp do znacznie większej liczby modeli (w tej chwili jest to 238), to jednak mnogość wyborów początkującego użytkownika może przyprawić o zawrót głowy.  Dodatkowo sama składnia, choć z założenia prosta i intuicyjna, jest moim zdaniem trudniejsza do nauki niż ma to miejsce w przypadku Scikit-learna. Na szczęście obszerna dokumentacja pomoże nam odnaleźć dostępne algorytmy i rozpocząć naszą przygodę z uczeniem maszynowym.

Deep learning w Pythonie rozwija się bardzo dynamicznie, dostępnych jest kilka na prawdę świetnych pakietów i dość łatwo jest samodzielnie wystartować ponieważ nie brakuje w internecie skryptów i tutoriali. Python będzie dobrym wyborem zwłaszcza, gdy interesuje nas rozpoznawanie obrazów. Użytkownicy R nie muszą jednak rozpaczać – dla obu języków są dostępne interfejsy do wiodących bibliotek deep learningowych – Tersorflow, Keras i H2O.

Statystyka i ekonometria

Do zastosowań statystycznych i budowy modeli ekonometrycznych zdecydowanie powinniśmy wybrać R – w końcu do tego ten język został stworzony. Dostępnych jest mnóstwo mniejszych i większych pakietów niezależnie czy chodzi nam o modelowanie szeregów czasowych, filogenezę czy analizę przeżycia. Niestety mnogość pakietów R-owych ma też swoje wady. W tej chwili na CRANie dostępne jest 12 233 bibliotek. Oznacza to, że wiele treści się duplikuje, część pakietów nie jest już rozwijana i, niestety, ich obsłucha nie zawsze jest intuicyjna. Ale jeżeli zależy nam na tej jednej, bardzo specyficznej funkcji czy statystyce to istnieje duża szansa, że właśnie w R znajdziemy to czego szukamy. Jak szukać raczej niszowych pakietów? Przydatny może okazać się CRAN Task View, który proponuje nam pakiety wg. poszczególnych zastosowań.

W Pythonie dostępne są jedynie podstawowe funkcje i jeżeli chcemy policzyć statystykę bardziej zaawansowaną niż test t-studenta niestety często nie obejdzie się bez samodzielnego tworzenia funkcji. Główna biblioteka, która oferuje modele statystyczne i ekonometryczne to StatsModels. Za jej pomocą oszacujemy modele liniowe, logitowe, modele ARIMA czy też VAR. Możemy przeprowadzić diagnostykę modelu oraz analizę głównych składowych (PCA). Do generowania liczb losowych z rozkładu przydatny będzie moduł stats z pakietu SciPy (scipy.stats).

Wizualizacje

Królem estetycznych i funkcjonalnych wizualizacji jest zdecydowanie ggplot2 – pakiet programu R autorstwa Hadleya Wickhama. Świetna jest w nim przede wszystkim gramatyka tworzenia wizualizacji, która, choć wymaga chwili nauki, pozwala nam z łatwością tworzyć i dostosowywać do naszych potrzeb wykresy. Ggplot2 ma wielu fanów, a ja zdecydowanie jestem jednym z nich i nie ma się co dziwić – ten pakiet jest po prostu rewelacyjny.

W Pythonie głowną biblioteką do tworzenia wizualizacji jest matplotlib, który pozawala na stworzenie zaawansowanego wykresu i dowolne jego dostosowanie, jednak raczej nie obędzie się bez długiego studiowania dokumentacji i chwil zwątpienia. Na ratunek przychodzi Seaborn – pakiet zbudowany na matplotlibie. Już samo wczytanie Seaborna sprawi, że nasze wykresy z matplotliba znacznie zyskają na estetyce. Ważne jest jednak to, że Seaborn jest dużo prostszy i wygodniejszy w użyciu niż matplotlib.

Fani ggplota z pewnością docenią stosunkowo nowy pakiet plotnine. Jest to niemal wierne odwzorowanie R-owego pakietu, więc jeżeli brak ggplot2 to jedyne co powstrzymuje Cię przed nauką Pythona to nie masz się już czym martwić.

 

Podsumowanie

Nie tak łatwo jest wybrać faworyta. W końcu oba z prezentowanych języków maja swoje plusy i minusy i szybko nadrabiają braki względem konkurenta. Myślę, że o wyborze języka powinno zadecydować to do czego głownie będziemy go używać oraz nasze osobiste preferencje. Nie warto poświęcać wielu godzin na decyzję i szukanie za i przeciw; lepiej ten czas wykorzystać do zdobycia praktycznych umiejętności. Najważniejsze jest jedno – gdy okaże się, że nie do końca odpowiada nam język, który wybraliśmy nauka drugiego z nich będzie bezbolesna. Każdy z języków posiada dobrą dokumentację i rozwiniętą społeczność, więc nie powinniśmy mieć problemów ze znalezieniem i zastosowaniem odpowiedników naszych ulubionych funkcji. A jeżeli nie wiesz od czego zacząć naukę zapraszamy na nasze szkolenia R dla początkujących i Wprowadzenie do Python. Pomogą ci one postawić pierwsze kroki w danym języków bez błądzenia, poszukiwania odpowiednich pakietów i budowania złych nawyków, co wyraźnie przyspieszy twój start z R lub Pythonem.

Nikt jeszcze nie dodał komentarza, możesz być pierwszy!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


Zapytaj o szkolenie

Jestem zainteresowany/a

Podaj wynik działania:


 

Zapytaj o szkolenie zamknięte

Jestem zainteresowany/a

Podaj wynik działania:


 

Zapytaj o szkolenie otwarte
 

Jestem zainteresowany/a

Podaj wynik działania:


 

Zapytaj o ścieżkę szkoleniową
 

Rodzaj ścieżki:

Preferowany tryb szkolenia:

DziennyPopołudniowyWeekendowy

Podaj wynik działania:


 
Szybki kontakt