Serveur d'impression

Avantages de l'utilisation de R Notebooks pour l'analyse des données plutôt que de ceux de Jupyter – Serveur d’impression

Le 8 octobre 2019 - 11 minutes de lecture

Les ordinateurs portables Jupyter, anciennement appelés ordinateurs portables IPython, sont omniprésents dans l'analyse de données moderne. Le format Notebook permet d’afficher le code statistique et ses résultats sur n’importe quel ordinateur de manière logique et intuitive. reproductible manière, en évitant à la fois la confusion causée par un code peu clair et la malédiction inévitable «cela ne fonctionne que sur mon système».

Dans Jupyter Notebooks, chaque bloc de code d'entrée Python s'exécute dans sa propre cellule et la sortie du bloc apparaît en ligne. Cela permet à l'utilisateur de parcourir les résultats, à la fois pour rendre explicites les transformations de données et pour s'assurer que les résultats sont conformes aux attentes.

En plus des blocs de code, les ordinateurs portables Jupyter prennent en charge les cellules de Markdown, ce qui permet une rédaction plus détaillée avec un formatage facile. Le bloc-notes final peut être exporté sous forme de fichier HTML pouvant être affiché dans un navigateur, ou le fichier bloc-notes brut peut être partagé et rendu sur des sites tels que GitHub. Bien que Jupyter soit une application Python, il peut exécuter des noyaux de langages autres que Python, tels que R.

Au fil des ans, quelques nouveaux concurrents se sont succédé dans le domaine de l’analyse de données reproductibles, tels que Beaker Notebook et, pour les problèmes de grande envergure, Apache Zeppelin. Cependant, nous allons aujourd’hui nous intéresser aux ordinateurs portables R assez récents et à la manière dont ils aident à améliorer les processus d’analyse de données courantes de la même manière que Jupyter Notebooks ne peut pas se passer d’extensions tierces.

À propos de R Notebooks

R Notebooks est un format géré par RStudio, qui développe et met à jour un grand nombre de packages et d'outils R open source, notamment le RStudio R IDE gratuit pour le consommateur. Plus spécifiquement, les ordinateurs portables R sont une extension de l’ancien logiciel R Markdown. .Rmd format, utile pour rendre les analyses en HTML / PDF, ou d’autres formats intéressants comme les documents Tufte ou même les livres. La sortie par défaut d’un fichier R Notebook est un .nb.html fichier, qui peut être visualisé comme une page Web sur n’importe quel système. (RPubs a de nombreux exemples de blocs-notes R, bien que je recommande d'utiliser GitHub Pages pour héberger des blocs-notes en public).

Au lieu d'avoir des cellules séparées pour le code et le texte, un fichier R Markdown est tout texte brut. Les cellules sont indiquées par trois barres de contrôle et un fond gris dans RStudio, ce qui facilite la saisie d'un bloc de code, l'identification des blocs de code en un coup d'œil et la facilité d'exécution d'un bloc-notes bloc par bloc. Chaque cellule comporte également une barre indicatrice verte qui indique quel code est en cours d’exécution et quel code est mis en file d'attente, ligne par ligne.

Pour les fichiers Notebook, une page Web HTML est automatiquement générée à chaque fois que le fichier est enregistré. Elle peut être immédiatement affichée dans n'importe quel navigateur (la page Web générée stocke la sortie de la cellule et les dépendances nécessaires).

R Les ordinateurs portables ne peuvent être créés et modifiés qu’en RStudio, mais c’est un cas dans lequel une intégration verticale étroite des logiciels à code source ouvert est une bonne chose. Parmi de nombreuses autres fonctionnalités, RStudio inclut un gestionnaire de fichiers, une aide aux fonctions, un explorateur de variables et un gestionnaire de projet; tout cela rend l'analyse beaucoup plus facile et plus rapide par opposition à Jupyter, un navigateur uniquement.

Jupyter Notebooks et R Notebooks ont été fabriqués au fil des années, ce qui m’a donné un aperçu des forces et des faiblesses de ces deux formats. Voici quelques fonctionnalités natives de R Notebooks qui présentent un avantage objectif par rapport aux ordinateurs portables Jupyter, en particulier celles qui ne sont pas mises en évidence dans la documentation:

Contrôle de version

Le contrôle de version des fichiers avec des outils tels que git est important car il maintient une base de données explicable des modifications apportées aux fichiers de code et améliore également la collaboration en utilisant un serveur centralisé (par exemple, GitHub) où toute personne ayant accès au référentiel peut extraire et pousser les modifications vers le code. Dans le monde de la science des données, les grandes startups telles que Stripe et Airbnb ont connu beaucoup de succès avec cette approche.

RStudio a d'ailleurs un client git natif pour suivre et valider les modifications apportées à un .Rmd fichier, ce qui est facile depuis .Rmd Les fichiers sont en réalité des fichiers de texte brut dans lesquels vous pouvez voir les différences entre les versions au niveau de chaque ligne. (Vous ne voudrez peut-être pas stocker les modifications dans le fichier généré. .nb.html Notebook car ils seront volumineux et redondants par rapport aux modifications apportées à la .Rmd; Je recommande d'ajouter un * .nb.html règle à un .gitignore fichier en cours d'analyse).

le .ipynb Les fichiers Jupyter Notebook sont des blobs de JSON qui stockent également les sorties de cellules, ce qui entraînera de grandes différences si vous les conservez dans le contrôle de version et apportez les modifications entraînant une sortie différente. Cela peut provoquer une bulle de la base de données git et rendre la lecture diff par ligne difficile, voire impossible.

Sur Hacker News, les problèmes de contrôle de version dans Jupyter sont fréquents, mais un développeur de Jupyter a évoqué la possibilité de travailler avec RStudio pour résoudre ce problème.

Rendu de code en ligne

Une pratique courante dans Jupyter Notebooks consiste à imprimer des valeurs communes dans le cadre d'un code statistique de rédaction ou de test. Dans Jupyter Notebooks, si vous souhaitez vérifier le nombre de lignes d'un jeu de données pour l'analyse exploratoire de données, vous devez ajouter une instruction d'impression appropriée à la cellule pour obtenir le nombre. n lignes, puis ajoutez une cellule Markdown pour décrire de manière redondante ce que vous venez d’imprimer dans la sortie.

Dans R Notebooks, vous pouvez ignorer une étape en appelant ces instructions d'impression en ligne dans le texte Markdown, qui seront ensuite affichées avec le bloc-notes. Cela évite également de coder en dur de tels nombres dans le texte de réduction si vous modifiez les données au préalable (par exemple, le réglage des paramètres) ou si les valeurs ne sont pas triviales à calculer à la main.

Par exemple, ces lignes de R Markdown de mon carnet de notes Reddit First Comment:

se traduire par:

R Les ordinateurs portables sont configurés avec un en-tête YAML, qui peut inclure des attributs communs tels que le titre, l'auteur, la date de publication et d'autres options pertinentes. Ces champs seront ensuite configurés correctement dans les métadonnées pour la sortie HTML / PDF / Handouts. Voici un exemple tiré de l’un de mes cahiers:

---
title: "Jouer avec 80 millions d'avis d'évaluation de produits Amazon à l'aide d'Apache Spark"
auteur: "Max Woolf (@minimaxir)"
date: "2 janvier 2017"
sortie:
  html_notebook:
    point culminant: tango
    mathjax: null
    nombre_sections: oui
    thème: spacelab
    toc: oui
    toc_float: oui
---

Ces fonctionnalités de métadonnées sont souvent demandées mais non implémentées dans Jupyter.

Notebook Theming

Comme indiqué dans les exemples de métadonnées ci-dessus, R Notebooks permet une thématisation étendue. Jupyter Notebooks prend en charge les thèmes, mais avec un package Python tiers ou en plaçant un CSS personnalisé dans un emplacement impair.

Comme Jupyter Notebooks, le frontal des Notebooks R basés sur un navigateur est basé sur le framework HTML Bootstrap. R Notebooks, cependant, vous permettent de sélectionner de manière native le style de mise en surbrillance de la syntaxe du code via surligner (options similaires à celles de pygments) ainsi que l’ensemble du thème Bootstrap via thème (avec une sélection des excellents thèmes de Bootswatch par Thomas Park), donnant à votre ordinateur un look unique sans ajouter de dépendances.

Tableaux de données

Lorsque vous imprimez un bloc de données dans un cahier Jupyter, la sortie apparaît sous forme de fichier standard. ennuyeuse Tableau HTML:

Aucune sortie de bloc de cellule n'est jamais tronquée. Imprimer accidentellement une table entière de plus de 100 000 lignes sur un carnet Jupyter est une erreur que vous ne faites que une fois que.

R Les tables de bloc-notes sont de jolies tables avec une pagination pour les lignes et les colonnes et peuvent prendre en charge de grandes quantités de données si nécessaire.

La table de sortie R Notebook inclut également le type de données de la colonne, ce qui est utile pour le débogage de problèmes inattendus dans lesquels une colonne contient un type de données non souhaité (par exemple, une valeur numérique). colonne ou date / heure la colonne est analysée comme un texte colonne).

Table des matières

Une table des matières facilite toujours la navigation, en particulier dans une exportation PDF. Jupyter Notebooks nécessite une extension pour une table des matières, tandis que R Notebooks en créera de manière native un en-tête de section (contrôlable via toc et nombre_sections). Une option toc_float Ce paramètre fait flotter la table des matières à gauche dans le navigateur, le rendant ainsi toujours accessible.

En conclusion, R Notebooks n’a pas reçu beaucoup de publicité puisque les avantages ne sont pas immédiatement évidents, mais aux fins d’analyses reproductibles, l’ampleur des fonctions natives permet un excellent fonctionnement tout en évitant la dépendance. Exécuter R dans un bloc-notes R est une expérience nettement meilleure que d’exécuter R dans un bloc-notes Jupyter. Les avantages présents dans R Notebooks peuvent également fournir des conseils pour le développement de fonctionnalités dans d'autres logiciels Notebook, ce qui améliore l'écosystème d'analyse des données dans son ensemble.

Cependant, il y a un éléphant dans la chambre…

Qu'en est-il de Python?

Donc, vous pensez peut-être «un cahier R vous oblige à utiliser R, mais sérieux le travail de science des données est effectué à l'aide de Python! »Variation: vous pouvez utiliser Python dans un cahier R!

Eh bien, en quelque sorte. La session Python se termine après l’exécution de la cellule, ce qui la rend inutile pour des tâches autres que ad hoc les scripts.

La question de savoir si R ou Python convient mieux à l'analyse des données est un sujet religieux commun qui vaut mieux être sauvegardé pour un article séparé sur un blog (tl; dr: je ne suis pas d'accord avec la citation paraphrasée ci-dessus dans laquelle les deux langues ont leurs avantages et vous bénéficier de manière significative de la connaissance des deux écosystèmes).

Et je ne compterais pas R dans la «science des données sérieuse». Vous pouvez utiliser R de manière transparente avec des outils Big Data tels qu'Apache Spark. R peut désormais utiliser Keras / TensorFlow pour un apprentissage approfondi avec une parité proche de l'API de la version Python. Hmm.

Si vous avez aimé cet article, j'ai mis en place un Patreon pour financer mes besoins en apprentissage machine / apprentissage approfondi / logiciels / matériel pour mes futurs projets loufoques et décontractés. Toute contribution monétaire au Patreon est appréciée et sera mise en œuvre de manière créative. utilisation.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.