(この記事は「CRESCO Advent Calendar 2020」11日目の記事です。)

 

こんにちは、データテクノロジーセンターのn-satoです。

Pythonでデータ加工なんとなくやっているけどがっつりPandasとか駆使するってのはできない。そんなところに紹介?されたのが「データサイエンス100本ノック(構造化データ加工編)」。
実際にやってみたらとても歯ごたえある内容で、素晴らしい教材だと感じました。

本記事は私がデータサイエンス100本ノック(構造化データ加工編)の学習環境をDocker Desktopを用いて構築した経緯を記事にしたいと思います。

データサイエンス100本ノック(構造化データ加工編)とは

データサイエンス100本ノック(構造化データ加工編)
https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess

データサイエンティスト協会から2020年6月15日にGitHubで公開されたデータサイエンス初学者が構造化データの集計・加工を効率的に学べる学習環境です。
使用言語はPython、R、SQLと選択することができ幅広い言語で学習することができます。

つくる環境

ガイドの資料で紹介のあるとおり、自身のPCにDockerをインストールし、その中でJupyter lab(Python、R用)とpostgreSQL(SQL、データソース用)のコンテナを稼働させる仕組みとなっております。

やること

  • Docker Desktopインストール
  • 学習環境構築(コンテナ稼働)


本作業はWindows 10 Home上で行っております。
システム要件などは以下を参照してください。

Windows Home に Docker Desktop をインストール
https://docs.docker.jp/docker-for-windows/install-windows-home.html

Docker Desktopインストール

以下のサイトからインストーラーをダウンロードします。特にこだわりがなければstable版をダウンロードします。
https://www.docker.com/products/docker-desktop

インストーラーを起動します。

以下の画面ではWSL 2はチェックを入れます。

あとは基本なにもしなくとも進んでいきます。

いざ起動させようとすると以下のようなメッセージが表示されました。
エラー内容みるにWSL 2 インストールが不完全とのことです。

調べるうちに「最新の WSL2 Linux カーネル更新プログラム パッケージ」をダウンロードしインストールすれば解決しそうなので以下から入手します。
https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel

上記サイトから入手したインストーラーを起動します。
特に設定を変更するものはありません。

ツールバーの右下からDockerアイコンを右クリックして「restart」を選択します。

以下の通知が出ればDocker Desktopが起動できており、これでインストールは完了です。

学習環境構築(コンテナ稼働)

環境構築のための設定ファイルはgit上に公開されていますので、そちらを利用します。

データサイエンス100本ノック(構造化データ加工編)
https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess

100本ノックのgithubのinstallの項目の手順を行います。
コマンドプロンプト上で以下を実行します。

$ git clone [Repository URL]
$ cd 100knocks-preprocess
$ docker-compose up -d --build

gitがインストールされていない場合はzip形式でダウンロードします。


installの注意書きに書いてありますが、Windowsの場合はZIPダウンロードするか注意書きのリンクにある作業を実施する必要があるようです。
私はこのことに構築した後に気が付いたのでデータベースに自分でロードしました(後述)。

10分ほどで「docker-compose」コマンドが完了します。

ブラウザに以下を入力します

http://localhost:8888/

以下のような画面が出たらworkを選択します。

言語別にpreprocess_knock_****.ipynbという名前のjupyternotebook形式ファイルがあるので開きます。

「はじめに」にあるセルを実行し、データが読み込めれば学習環境構築は完了です。

(後述)「はじめに」のセル実行したときにエラーが出た・・・

なんでだろうと思っていたらテーブルにデータがありません(~~~ does not exist)という旨のエラーでした。
(後にinstall手順の注意書きがこのことを指していることに気が付く・・・ちゃんと読もうね自分・・・)

直接データを入れることで対処しました。
こういった場合は再構築しなおした方が良いかもですが、よろしければ参考にしてください。

Docker Desktopから「dss-postgres」のCLIをクリックし、CLIコンソールを起動させます。

100knocks-preprocess/docker/db/init配下にある

  • 2_create_table.sh
  • 3_load.sql

に記載されているクエリをそれぞれCLIコンソール上でpsqlを使い直接実行します。

psqlの構文は「2_create_table.sh」に書いてあるのでそちらを参考にしました。

2_create_table.sh記載のクエリを実施したところ

3_load.sql記載のクエリを実施したところ

以上の対応でセル実行時のエラーがなくなり、データを読み込ませることができるようになりました。

おわりに

Dockerにあまり触れてこなかったので導入難しいかなぁと思っていましたが、
Windows 10 Home環境でもDocker Desktopがインストールできるようになっているので割と簡単になったのかな?と思います。
もし100本ノックやりたいけどDocker導入に壁を感じている方がいたら参考にしていただければ幸いです。

Pythonで挑戦し、100問全部やるのに問題が歯ごたえあったりちびちびやっているのもあったりで1か月近くかかりました。
これからは2周目やってみたり、他言語にチャレンジしようと思ってます。

最後までお読みいただきありがとうございました。