Google Colaboratoryで自分のGoogle Driveのマウントをするっぺ

この記事は、「NISE(南山大学 青山研究室)」のアドベントカレンダー2019の16日目の記事です。

#はじめに

Colabでプログラムを実行するときに、自分のGoogle Drive(以下ドライブ)にあるファイルを読み込みたくなるときがありますよね。(というかこれしないと何も進まない)
今回はそのやりかたをさらっと書きます。

ちなみになんでColabを使いたいかというと、WindowsやChromebookで開発環境を構築するのが普通にめんどくさいからですwww

どのPCからいつでもpythonのプログラムを実行したいときにcolabってほんっと有能ですよねえ。。。~~例えば新幹線の中で研究進めたいときとか。~~

…話題が逸れたので進めます。

# 1.マウントするプログラムを追加

下のプログラムを追加して実行しましょう。

```
from google.colab import drive
drive.mount('/content/drive')
```

これを実行するだけでマウントできちゃいます。

腰が抜けるくらい簡単ですね。

# 2.プログラムを実行

で、実行するとこうなります。

![login0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274322/3bf3d2aa-2ee1-54c6-ecaa-e7458b1b1d7b.png)

まず、`Go to this URL in a  brouser : `以下のURLに飛びます。
すると、

![login1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274322/dcd80294-4c7e-0f15-c4c4-ff8736b5c1a9.png)

googleのアカウントを選択できる画面になるので、マウントしたいドライブのフォルダがあるアカウントを選択。

諸々のデータいじりますよーの同意を求められるので、同意をすると、

![login3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274322/0ffdba11-b1d6-1e07-0c94-96024072f118.png)

コードが出てきます。

このコードをコピーしてプログラムに戻り、`Enter your authorization code : `以下のボックスに貼り付けると、

![login5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274322/c6acc1ba-b07e-d7aa-3c6c-98699f570ca2.png)

`Mounted at /content/drive`と出たらマウント成功です。

ちなみに当たり前ですが、colabの時間制限によりインスタンスが落とされると、マウントし直さなければならないので、もう一度ここまでの操作が必要です。

# (おまけ)3.使えるのかテスト

マウントしたドライブを開くにはどうしたらいいのか、テストして確かめましょう。

基本的にはローカル環境でPCを使う場合と同じようにしてファイルを開くことが出来ます。

今回使うプログラムは、csvファイルを読み込んで、同じ行内にある`datetime`型のデータの差分を取り、その差分すべての平均や中央値などを求めるプログラムです。得られたデータはtxtファイルにして保存します。

以下ソースコード

``` log_diff.py
import pandas as pd
import numpy as np
import sys
import csv
import datetime
from google.colab import files
import io

file = input("input filename : ") #ファイル名入力


#読み込んだCSVファイルをListに変換
df = pd.read_csv(file, parse_dates=['send','receive'])

df['difference'] = df['receive'] - df['send'] #差分を計算
mean = df['difference'].mean() #平均
median = df['difference'].median() #中央値
dfmax = df['difference'].max() #最大値
dfmin = df['difference'].min() #最小値
count = df['difference'].count() #データ数
std = df['difference'].std() #標準偏差

print(df)
s = str(file)+'\nmean:'+str(mean)+'\nmedian:'+str(median)+'\nmax:'+str(dfmax)+'\nmin:'+str(dfmin)+'\ncount:'+str(count)
print(s)


file = file.replace("csv", "txt")
f = open(file, 'w')
f.write(s) #textファイルに書き込み
f.close()
```

実行すると、

![test3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274322/852253b9-4fe8-5edf-c249-276a72dbf723.png)

開きたいファイルは(マイドライブをカレントディレクトリとして)`Colab Notebooks` 内の`normal_b_log.csv`です。

colabを開いたときのカレントディレクトリは、`content`になっています。

なので、上記のファイルを開くときは、`drive/My Drive/Colab Notebooks/normal_b_log.csv`

と入力するのが正解です。

ちなみに、`My drive`を忘れがちなのでココは要注意です。



![test4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274322/e7a50b11-4ebf-6669-926a-7949f46d2c65.png)

これを実行すると、`Colab Notebooks`に`normal_b_log.txt`というファイルが生成されます。

ドライブを見比べると、

![maketxt1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274322/fab2d9c0-ac5e-cd83-5df5-3459dea12824.png)
↑実行前

![test2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274322/b3120071-3d5d-af56-1823-60df3651179f.png)
↑実行後

`normal_b_log.txt`が追加されました。

ということで無事使えるようになりましたとさ。。。

# まとめ

マウントの手順
1.　プログラムを追加して実行
2.　URLに飛び、コードを取得
3.　コードを貼り付ける

マウントしたドライブを開く手順・注意点
1.　ローカル環境のPCと開き方は同様
2.　カレントディレクトリは`content`
3.　`My drive`を忘れないように注意 

## 参考文献

[google Colaboratoryでファイルを読み込む方法](https://qiita.com/uni-3/items/201aaa2708260cc790b8)
[【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory](https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935#2-%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%BE%E3%81%A7%E3%81%AE%E6%AE%8B%E6%99%82%E9%96%93%E3%81%AF90%E5%88%86%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%A812%E6%99%82%E9%96%93%E3%83%AB%E3%83%BC%E3%83%AB)

## p.s

どうにか名古屋から品川の新幹線の中で書ききりました。
明日の記事も品川から名古屋の新幹線の中で書きます。
頑張るぞ～