【入門編】Google ColaboratoryとローカルJupyterNotebookを使う

# まえおき


[Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)はJupyterNotebook環境が無料で利用できるサービスです。ソースへのコメントをMarkdown形式で書き記せますので、ソースファイルを共有したりブログ投稿などもしやすいようになっています。

![toukoudata01_exceldata00_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/e320068a-6c07-018b-90f5-1a608f283b5f.jpeg)


JupyterNotebookはipynbというファイル形式で保存されます。Google Colaboratoryは一定時間(12時間)で環境がリセットされるため、定期的に保存が必要です。

![toukoudata01_exceldata00_2.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/1caa704c-30b5-23f3-0cfa-ac5575cec224.jpeg)


ソースと記事を書くのに夢中になって、ローカルへの保存を忘れるとガッデムなことになるので注意します。
# Google Colaboratory

新たにノートブックを作成し、その上でプログラムを行います。

![toukoudata01_exceldata00_3.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/24cbb2a0-53e1-e895-a877-6e73412ea980.jpeg)


やはりここから始めましょう、お決まりの以下を実行しましょう。新しいノートブックのセル内に以下を入力します。

![toukoudata01_exceldata00_4.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/cc1d5cf7-2c8f-1566-58cb-1ddf129a53ab.jpeg)


```
print('Hello,World!')
```

プログラムの実行は、shiftキーを押しながらEnterキーを押します。

実行結果＞＞＞Hello,World!

表示されました。今度は変数HWに代入してHello,World!を表示させてみます。

```
HW = 'Hello,World!'
print(HW)
```

実行結果＞＞＞Hello,World!

月並みですが、計算もやってみます。

```
a = 5
B = 3
a + B
```


実行結果＞＞＞8

Pythonを使って行いたいこと、それはもはやIT業務の基礎知識なのかも、と思うほど耳にすることば、機械学習。
Excelで表計算をするように、Python環境で機械学習、しいては分析や予測がどの企業も通常業務内で行うことになるくらい、基本機能になる日も遠くないと感じます。
さて、
とにかく何はともあれ、既存データを読み込んで何かを行っていく、といったことがおおよそイメージできます。
まずはよくあるシーンの想定として、csvファイルを読み込んでみます。
読み込むデータは、以下のExcelのCSVファイル。

![toukoudata01_exceldata01.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/d60c1ead-e73d-deae-fa42-478dce7fc53a.jpeg)

Excelで作ったCSVデータは、そのままではPythonで使うには都合のよくない文字コード形式となっています。

メモ帳でファイルを開いて、あらためて以下のように文字コードをUTF-８に変更して保存します。

![toukoudata01_exceldata02.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/83d0d256-18e1-d16a-e7b2-8f1901b30d30.jpeg)

# ここで一つ考える

作成したファイルは、このGoogle Colaboratoryの環境で操作して進めていきたいですね。しかしそれはこのままでは出来ません。

何故ならGoogle Colaboratoryは、Webブラウザ上で誰もが手軽にPython環境を扱えるように作られた仮想環境のため、その環境上でPCローカル環境に保存したファイルを扱う権限を持つことは、セキュリティ上問題があるからです。

それではどうするのか、

Google Colaboratoryはその場合の対処方法も示してくれています。PCローカルに保存されたファイルを扱う場合、Webブラウザで操作していたJupyterNotebookをPCにインストールすることで、ローカル環境で操作を続けることができます。

JupyterNotebookのインストールは、まず下記「接続」メニューの「ローカルランタイムに接続...」を選択します。

![toukoudata01_exceldata03.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/2e43cf63-9c6f-99c8-3b44-a2dffc51222d.jpeg)

以下の画面が表示されるので、「こちらの手順に」をクリックしてJupyterNotebookのインストール手順を表示します。

![toukoudata01_exceldata04.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/f4ae786b-d516-750e-438c-46ed69db2473.jpeg)

ローカルランタイムの説明画面が表示されていますので、説明を確認します。先ほど述べたセキュリティ上の問題も書かれていますので、記載内容を確認して設定の手順に示されている設定を進めます。

![toukoudata01_exceldata05.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/f0ade524-31d8-1547-3f51-eeb50d5acd65.jpeg)

# 設定の手順

画面記載の手順に従って、PCにJupyterNotebookをインストールしていきます。

**手順１：Jupyterをインストールする**

ローカルマシンにJupyterをインストールするため、「Jupyter」部分をクリックするとリンク先に飛び、Jupyterのサイトが表示されます。
このサイトを見ると、JUpyterをインストールするには、Anacondaというディストリビューションソフトをインストールする必要があると書いてあります。

Anacondaのインストールは別途記載の「AnacondaをインストールしJUpyterNotebookを使う」を参照してください。

![toukoudata01_exceldata07_1_Jupyterinstall.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/a756d67f-2cf3-9a84-2549-c8323828cc77.jpeg)
![toukoudata01_exceldata07_2.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/c31ee4c0-01ae-7ec8-0075-f3bd6b02147e.jpeg)

アイコンをダブルクリックし起動すると、以下のGoogle ColaboratoryのようなJupyterNotebookの画面が表示されます。

![toukoudata01_exceldata07_3.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/e62e5089-ccb0-f488-37b4-da717077855e.jpeg)



以降の内容は、すでにAnacondaをインストールし、JupyterNotebookがローカルで開く環境を前提に記載しています。

# 補足事項

以降の設定手順２～手順４は、ローカルのJupyterNotebookと、ブラウザ利用のGoogle Colaboratoryを連携させるための設定です。

ですが、**「Google ColaboratoryはWebブラウザ上で簡易にWeb上のデータを使って利用」**とし、**「ローカルデータの操作はローカルのJupyterNotebookを利用」**として用途により使い分けるのであれば、以降の設定２～設定４は必要ありません。

そのため、設定２～設定４は詳細を省略します。

**後述の「ローカルのJupyterNotebookを使う」まで読み飛ばしても構いません。**

>**手順２： Jupyter 拡張機能 jupyter_http_over_ws をインストールして有効にする（1 回のみ）**

>手順に従い、「Github」の部分をクリックし、表示されたサイトから該当のファイルを入手します。
![toukoudata01_exceldata08.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/529ba25b-9164-50c9-a74f-5ca2b83c7a43.jpeg)
>入手した「 jupyter_http_over_ws 」をインストールするため、ローカルPCのJupyterの画面から手順２の以下コマンドを入力し、実行します。

>```
pip install jupyter_http_over_ws
jupyter serverextension enable --py jupyter_http_over_ws
```
>**手順３：サーバーを起動して認証する**

>手順通りにノートブックサーバーを起動してフラグの設定を行います。ポート番号は記録しておきます（最初の設定では8888となっています）。

>**手順４：ローカルランタイムに接続する**

>手順に従い、Colaboratoryで「接続」ボタンの「ローカルランタイムに接続」を選択します。表示された画面に記録しておいたポート番号を入力して「接続」ボタンをクリックします。これでローカルのJupyterNotebookとColaboratoryが接続されます。

> ※以降の説明はPCに個別にJupyterNotebookをインストール（Anacondaというディストリビューションソフトをインストールすることで利用可）して、ローカル環境のみでJupyterNotebookを操作したものです。


> 基本的にはColaboratory上での操作と変わりませんので、適宜読み替えてください。

# ローカルのJupyterNotebookを使う

現在、どのディレクトリ（フォルダ）に居るのか、表示を確認しておきます。

右側にある「NEW」メニュープルダウンから「Folder」を選択します。
![toukoudata01_exceldata09.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/fc91d519-d646-54b6-d65b-f22f1a8d2382.jpeg)

新たに「Untitled Folder」が作成されます。

フォルダ名を変更するため、左側のチェックボックスにチェックを入れて、「Rename」メニューを押します。
![toukoudata01_exceldata10.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/20bf2777-2d02-93e8-eb7c-93b8a428235d.jpeg)

任意のフォルダ名を入力して、「Rename」ボタンを押します。ここではMydataというフォルダ名にしました。
![toukoudata01_exceldata11.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/74a59b89-68a7-c309-9b9a-e882b481e144.jpeg)

フォルダをクリックしてフォルダ内を表示します。新しいフォルダですので、中身は何もありません。
![toukoudata01_exceldata12.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/a42eec05-9e92-9e27-2e29-e6c90ea72c91.jpeg)


新たに作ったこのフォルダ内に、作っておいたCSVファイルを置きます。
![toukoudata01_exceldata13.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/102eda92-56d3-ff99-9783-508467bfb887.jpeg)

新たに「NEW」メニューから「Python3」の選択して新たなJupyterNotebookを開きます。
![toukoudata01_exceldata14.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/8e92bdfb-7051-071b-aa7b-2194cb07cc2e.jpeg)
![toukoudata01_exceldata15.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/e7c8585a-36ff-5f43-5fd9-2ea6ad73620f.jpeg)


以下のコードを赤枠のセル内にコピーします（CSVファイル名は先ほど置いたファイル名に変更）。
Shiftキーを押しながらEnterキーを押して実行します。

```
import pandas as pd
data = pd.read_csv('pythondata01.csv')
data
```


以下のようにCSVデータ内容がJupyterNotebook上に表示されます。
![toukoudata01_exceldata17.jpg](https://qiita-image-store.s3.amazonaws.com/0/352396/105d0ded-d770-c2ef-30d0-f70ca772b702.jpeg)

CSVファイルをJupyterNotebook上に読み込んで表示することが出来ました。

このようにして、既存のデータをPythonのJupyterNotebookに読み込み、操作することができます。

次回は作成した表形式内のデータの操作方法を紹介します。