Windowでデータ分析環境を構築する方法

データ分析をローカルのWindowsで実施する場合の環境構築方法をまとめています。
ローカルがパワー不足に感じた時や、プログラムを常時起動しておきたい場合はローカルではなくAWSを使うとよいと思います。

目次

環境の全体像

Windows内で「Ubuntu」というオープンソースのOSを起動し、「Python Anaconda」というデータ分析のライブラリが詰まっているPythonのディストリビューションをインストールします。「Jupyter Lab」というグラフの可視化やデバッグが簡単にできるツールで作業し、コードやファイルの履歴管理は「Git」を使います。分析データの量が多い場合は「Alibaba Cloud」に格納し、「MySQL」で必要なデータだけ都度引っ張ってきます。

「Docker」と「Git」を使うことにより、WindowsからMacへの環境の複製や、ローカルからAWSへのデプロイは簡単にできます。「Docker」は環境を揃えるのに使い、「Git」はファイルやコードを揃えるのに使います。

自分のプライベートでの活用例ですが、メインは自分の家のデスクトップパソコンで作業をしていて、出先ではノートパソコンを使用しています。家のパソコンでUbuntu環境に変更を加えた場合はDocker fileに追記し、ノートパソコンでDocker fileをbuildすることで一瞬で環境が揃います。コードを更新した際はGitにPush&Pullすることで複数のパソコンで最新のコードの状態を保てます。メモに残しておきたいことはこのブログの下書きにメモっているのでどこからでも参照できます。

仕事など複数人で作業するときは各自のパソコンで同じような流れで管理してもいいですし、Jupyter hubという複数人が同時に作業できる環境をAWSに構築してしまってもいいかもしれません。

環境構築方法(初回のみ)

  1. WSLDockerVisual Studio CodeGitBashをインストールする。
  1. GitBashを使い、任意のディレクトリにDockerfileを作成する。
cd ~/Desktop
mkdir dockerfile
cd dockerfile
code Dockerfile
  1. Dockerfileの中身を入力する。以下は自分がよくベースにしているDockerfileです。
    JupyterLab v3から拡張機能はpipで簡単にインストールできるようになりました。
FROM ubuntu:20.04

# aptのミラーサーバーをjpに設定する
RUN sed -i 's@http://archive.ubuntu.com@http://jp.archive.ubuntu.com@g' /etc/apt/sources.list

# 必要なパッケージをインストールする
RUN apt update && \
    apt upgrade -y && \
    apt install -y wget sudo curl

# Anacondaをインストールする
RUN wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh && \
    bash Anaconda3-2021.05-Linux-x86_64.sh -b -p /opt/anaconda3 && \
    rm Anaconda3-2021.05-Linux-x86_64.sh

# AnacondaのPATHを通す
ENV PATH $PATH:/opt/anaconda3/bin

# JupyterLabの更新とMySQLコネクターのインストール
RUN pip install --upgrade --no-cache-dir pip && \
    pip install --upgrade --no-cache-dir jupyterlab mysql-connector-python

# JupyterLabの拡張機能のインストールに必要
RUN curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - \
    && sudo apt install -y nodejs

# JupyterLabの便利な拡張機能のインストール
RUN pip install --no-cache-dir \
    jupyterlab_widgets \
    black \
    jupyterlab_code_formatter \
    lckr-jupyterlab-variableinspector

# Jupyter labの起動をデフォルトコマンドにする
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root", "--LabApp.token=''"]
  1. Dockerfileをbuildしてdocker imageを作成する。そこそこ時間かかります。

    -t ⇒ docker imageに「test_anaconda」という名前を付ける
docker build -t test_anaconda .
  1. 環境のコンテナを起動する。

    docker run ⇒ docker image「test_anaconda」でコンテナを起動
    -p ⇒ ホストポートとコンテナポートを設定
    -v ⇒ マウントするローカルディレクトリとマウント先のディレクトリを設定
    –name ⇒ コンテナに「test_lab」という名前を付ける
docker run -p 8888:8888 -v //c/Users/greg/git:/mnt/git --name test_lab test_anaconda
  1. 任意のブラウザに以下を入力してJupyter labを開く。
localhost:8888

環境停止方法

ブラウザで開いているJupyter labの「File」タブから「Shut Down」を選択する。
または、Dockerの画面から実行しているコンテナの停止ボタンを押す。

環境再開方法

  1. DockerとGitBashを起動する。
  1. GitBashでコンテナを再開する。
docker restart test_lab
  1. 任意のブラウザに以下を入力してJupyter labを開く。
localhost:8888