Übersicht zu wichtigen Packages und IDEs für R und Python (Data Science)
R-Packages
Grundlegende R-Packages werden in der folgenden Liste genannt.
Pakete der Tidyverse Collection – ein Set ausgewählter, aufeinander abgestimmter R-Packages, die einfach miteinander kombiniert werden können – sind dabei mit # (Kernbibliotheken) resp. mit + (ergänzende Pakete) gekennzeichnet. Pakete mit HTML Output (HTML Widgets) sind mit HTML gekennzeichnet – diese Pakete können für RMarkdown HTML und Shiny dashboards verwendet werden.
Daten einlesen / schreiben
- readr# (CSV), data.table (CSV), XML und xmlconvert (XML), jsonlite (JSON), RProtobuf (Google Protocol Buffers files/messages), curl (file transfer) sowie httr (http request) für das Einlesen resp. Schreiben von Daten(Streams)
- XLConnect, xlsx, readxl+ für Zugriffe auf Excel-Dateien
- DBI, odbc, RSQLite für die Datenbankschnittstellen
- gTrendsR für den Zugriff auf Google Trend Daten
- skimr für Descriptive statistics (ergänzend zu den internen Funktion: summary, str, head und dim)
Daten manipulieren
- dplyr# und data.table für allgemeine Datenmanipulationen von Data Frames
- tidyr# für die Transformation der Struktur von Data Frames (long/wide format), ersetzt die früheren Packages reshape (2005-2010) und reshape2 (2010-2014)
- purrr# für das effektive Arbeiten mit Listen und Vectoren resp. für optimierte Schleifenimplementierung (functional programming)
- lubridate+, xts, zoo, tsibble, tibbletime, timeSeries, anytime und tsbox für die Behandlung von Zeitstempeln / Zeitserien (dates and times)
- stringr# für Stringmanipulationen
Daten visualisieren
- ggplot2# (und abgeleitete Extensions) sowie WVPlots für die Datenvisualisierung / für die Erstellung von Graphiken
(unabhängig davon erlaubt das interne graphics Package die Erstellung von verschiedenen generischen Plots, ohne dass ein externes Package notwendig wäre) - ggvis, plotly HTML und rbokeh HTML für interaktive Graphiken (letztere auf unter Verwendung der JS-Bibliothek Bokeh)
- corrplot für die Darstellung von Correlation Plots
- DT HTML für die Tabellen-Darstellung unter Verwendung der JS-Bibliothek DataTables
- tmap für (statische) Kartendarstellungen, Leaflet (for R) HTML für (interaktive) Kartendarstellung
(Leaflet unter Verwendung der JS-Bibliothek Leaflet )
Daten analysieren
- factoextra für Multivariate Data Analyses
- igraph für die Analyse von Netzwerken / Graphen (Visualisierung: ggraph, alternativ/ergänzend: graphlayouts)
- tidytext für Text Mining
- caret (Classification And REgression Training) und h2o für Machine Learning
- forecastLM für forecasting regular time series data with a linear regression model
- bwimage, autothresholdr und caiman für Bildanalysen
- imager für die Bildverarbeitung
- nlrx für die Modellierung komplexer Systeme (Multi-Agenten-Simulationen, unter Verwendung von NetLogo)
Daten präsentieren
- officer, rmarkdown, flexdashboard, shinydashboard, knitr, bookdown und pandoc für Präsentationen / Dashboards resp. für Dokumentenerstellung und -konversionen, ergänzend: tufte und tint (Edward Tufte Style) sowie rticles (Formate für Veröffentlichungen in verschiedenen Journals)
- Cairo für die Erstellung von Graphikdateien (PNG, JPEG, TIFF etc.)
- Shiny (Web-Apps), plumber (REST APIs) und mailR (Mailversand) für die Implementierung externer Schnittstellen
Anwendungen effizient entwickeln
- expectdata und assertr für die Implementierung von Assertions
- RUnit, testthat, unitizer und tinytest für (Unit) Testing – ergänzend/in Kombination zum internen R-Testmechanismus ‚R CMD check‘
- parallel resp. parallelly für Parallelprogrammierung in R
Darüber hinaus existieren zahlreiche sehr spezifische Pakete, wie gh für den Zugriff auf die GitHub API, wbstats und WDI für den Zugriff auf Daten und Statistiken der Weltbank, rmangal für den Zugriff auf die Mangal Datenbank, RSAGA für den Zugriff auf das open-source GIS SAGA oder bdvis für die Visualisierung von Biodiversitäts-Informationen.
rOpenSci verwaltet weitere R-Packeges mit dem Fokus auf offene und reproduzierbare Forschung, Datenzugang und einfach zu bedienende Tools für Datenanalysen.
Zugriffe auf Python-Module und -Funktionen von R aus sind mit reticulate möglich. C++ Code kann mit Hilfe des Rcpp Package integriert werden.
sparklyr und mlflow ermöglichen die Nutzung der Frameworks Apache Spark (Cluster Computing) und databricks mlflow (Lebenszyklus-Management von Machine-Learning-Projekten). Der Zugriff auf Plattformen erfolgt u.a. mit cloudml (Google CloudML) und RAthena/paws (Amazon Web Services). dockr ist ein einfaches Werkzeug, um ein lightweight Docker Container – Image für eine R-Umgebung zu erstellen.
Python-Bibliotheken
Data Science relevante externe Python-Packages sind insbesondere:
- NumPy für komplexere numerische Berechnungen – unter Nutzung von spezifischen Datentypen/ Vektoren, Matrizen oder mehrdimensionalen Arrays
- Pandas zur Datenanalyse und Datenverarbeitung
- Matplotlib (weitverbreitet, aber eingeschränkte Funktionalität), Seaborn, Bokeh, plotnine und ggpy für die Datenvisualisierung / für die Erstellung von Graphiken (die letzten beiden basierend auf dem “Grammar of Graphics” Prinzip von ggplot2 von R)
- SciPy, Datashader, HoloViews und PySpark für wissenschaftliches Rechnen, Visualisierung und damit zusammenhängende Tätigkeiten
- Machine Learning models: SKLearn (scikit-learn), Keras, XGBoost, LightGBM, CatBoost
- Packages für den Zugriff auf Machine-Learning Frameworks: torch (für PyTorch), tensorflow (für TensorFlow)
- NLTK (Natural Language Toolkit) für Anwendungen der Computerlinguistik
- Dask für die Skalierung (paralleles Computing)
- QuickDa für ein einfaches data cleaning, data exploration, and data visualization (unter Nutzung von Pandas, Matplotlib, Seaborn, Plotly)
- ELI5 für die Visualisierung / Debuggging von Machine Learning models (scikit-learn, Keras, LightGBM, XGBoost, CatBoost)
Mit Anaconda steht eine Python-Distribution zur Verfügung, die die wichtigsten für Data Science relevanten externen Bibliotheken bereits integriert hat.
Python verfügt daneben über interne Built-in Module (interne Bibliotheken), die die Standard Funktionen ergänzen. Für Data Science Anwendungen sind dies insbesondere die Module:
- Collections: das Module stellt zusätzlich zu den Standard Daten-Container (List, [ordinary] Tuple, Set, [unordered] Dictionary) weitere Containertypen bereit, insbesondere: namedtuple, deque (eine optimierte Liste), Counter, OrderedDict, defaultdict und ChainMap
IDEs
Sowohl für Datenanalysen mit R als auch für Analysen mit Python stehen umfangreiche Entwicklungsumgebungen (Integrated Development Environments, IDEs) zur Verfügung.
Die beiden am weitesten verbreiteten Umgebungen sind RStudio und Jupyter Notebook:
- RStudio (R; open source and commercial editions; Desktop und Browser)
- Jupyter Notebook (Python, R u.a.; Open-Source-IDE, früher: IPython Notebooks; web-basierte Anwendung)
Alternativen zu diesen beiden Umgebungen haben sich insbesondere im Python-Umfeld entwickelt:
- VS Code (Visual Studio Code, Microsoft)
- Spyder (Python; „Scientific Python Development Environment“; Open-Source-Desktopanwendung mit einer Oberfläche ähnlich wie RStudio; Teil der Anaconda-Distribution),
- PyCharm von JetBrains (Python; Desktop)
- Colab Notebooks von Google (Python; online)
- Kaggle Notebooks (Python, R; online)
- Thonny von der University of Tartu (Python IDE für Anfänger – ideal zum Programmieren lernen und lehren)
- Atom von GitHub (Open-Source-IDE für Python – einsteigerfreundlich als auch in hohem Maße anpassbar für erfahrene Entwickler )