[PYTHON] Gestion Git des différences de Jupyter Notebook (ipynb) dans JupyterLab pour une visualisation facile

TL;DR

En procédant à l'analyse avec Jupyter Notebook, je voulais gérer la version et la gérer avec Git, mais quand je procédais normalement, la différence était très difficile à voir en raison des métadonnées de Notebook, donc JupyterLab's jupyterlab-git et J'ai utilisé l'extension nbdime pour voir plus facilement les différences.

Créer un environnement JupyterLab

Dans cet article, nous utiliserons l'environnement suivant.

--Utilisez docker-compose

Les extensions JupyterLab requises pour le contrôle de version du notebook Jupyter sont les suivantes.

Environnement

Créez les 2 fichiers suivants.

Dockerfile


FROM gcr.io/kaggle-images/python:v74

RUN apt-get update && \
    apt-get install -y git \
    curl

RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - &&\
    apt-get install -y nodejs

RUN pip install -U pip \
    jupyterlab && \
    pip install jupyterlab-git

RUN jupyter lab build

docker-compose.yml


version: "3"
services:
  jupyter:
    build: .
    volumes:
      - $PWD:/tmp/work
    working_dir: /tmp/work
    ports:
      - 8888:8888
    command: jupyter lab --ip=0.0.0.0 --allow-root --no-browser

Créer une image Docker

Après avoir créé les deux fichiers ci-dessus, créez dans le même répertoire.

$ docker-compose build

Démarrer le conteneur

Démarrez le conteneur après la construction.

$ docker-compose up

Après le démarrage, vous pouvez accéder à http: // localhost: 8888 / et entrer le jeton pour accéder à JupyterLab. Le jeton est émis après le démarrage, par exemple: http: // acb729d0c5ce: 8888 /? Token = 45d10c660d2e85f0c8d59995a04667c154542ae79f27f65d, qui est` 45d10c660d2e85f0c8d59995a04667fc154542ae.

Activer le gestionnaire d'extensions

Après le démarrage, activez Exxtension Manager.

image.png Deux extensions sont installées. image.png

Gestion des versions Git de Notebook

Cloner le référentiel Git

Clonez le référentiel requis. Si vous avez déjà un Notebook etc., faites git init etc.

image.png

Entrez l'URL du référentiel image.png

Créez un notebook (test.ipynb) et effectuez le premier commit.

$ git config --global user.email "[email protected]"
$ git config --global user.name "Your Name"
$ git add test.ipynb
$ git commit -m "first commit"

Supposons que vous poursuivez l'analyse dans Notebook après le premier commit. Par exemple, supposons que vous ajoutiez le code df.head ().

Affichage des différences avec git diff

Tout d'abord, si vous vérifiez avec la commande git diff, les différences telles que les métadonnées Notebook seront affichées comme indiqué ci-dessous, ce qui est très difficile à comprendre.

# git diff
diff --git a/test.ipynb b/test.ipynb
index f6c1f17..5af6074 100644
--- a/test.ipynb
+++ b/test.ipynb
@@ -2,7 +2,7 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -21,7 +21,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 7,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -30,12 +30,164 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 8,
    "metadata": {},
    "outputs": [],
    "source": [
     "df = pd.read_csv(data_dir + \"train.csv\")"
    ]
+  },
+  {
+   "cell_type": "code",
:

Affichage des différences dans JupyterLab nbdime

Si vous vérifiez le diff en utilisant nbdime sur JupyterLab, ce sera comme suit. Le côté gauche du rose est avant le changement, et le côté droit du vert est après le changement. image.png

Je pense que la différence s'affiche très facilement.

référence

Recommended Posts

Gestion Git des différences de Jupyter Notebook (ipynb) dans JupyterLab pour une visualisation facile
Générer le notebook Jupyter ".ipynb" en Python
Spécification du navigateur Jupyter Notebook dans un environnement Windows
Remplissez la largeur du bloc-notes Jupyter pour remplir le navigateur
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
Dessiner une structure arborescente avec D3.js dans Jupyter Notebook
Apprentissage automatique à l'aide de Jupyter Notebook dans l'environnement OCI Always Free (2019/12/17)
Refléter l'environnement virtuel créé par Miniconda dans le notebook Jupyter
Comment voir le contenu du fichier ipynb du notebook Jupyter
Écrivez des graphiques en temps réel avec Matplotlib sur le notebook Jupyter
Affichez des graphiques dynamiques dans le bloc-notes Jupyter. (Affichage en ligne de D3.js)
Afficher le HTML dans le notebook Jupyter
Utiliser pip avec Jupyter Notebook
Erreur de multitraitement dans Jupyter Notebook
Utiliser Cython avec Jupyter Notebook
Jouer avec Jupyter Notebook (IPython Notebook)
Gestion des serveurs avec import Jupyter (1)
Résolvez les caractères japonais brouillés dans matplotlib de Jupyter Notebook sur Docker
Autoriser les connexions externes avec le notebook Jupyter
Formatage avec autopep8 sur le notebook Jupyter
Visualisez l'arbre de décision avec le notebook Jupyter
Faites un son avec le notebook Jupyter
Utiliser Markdown avec le notebook Jupyter (avec raccourci)
Ajouter plus de noyaux avec Jupyter Notebook
Afficher les graphiques en ligne dans Jupyter Notebook
Analyse pratique avec Pandas + notebook Jupyter
Je voulais utiliser le notebook jupyter avec docker dans l'environnement pip (opticspy)
Configuration initiale de Jupyter Notebook pour les amoureux de Vim ・ Quitter avec jj (jupyter-vim-binding)
Avec l'avènement de systemd-homed en 2020, la gestion des utilisateurs Linux changera radicalement.