Edited at

google Colaboratoryでファイルを読み込む方法

Colaboratoryとはgoogleが作った

jupyter note環境をブラウザで使えるようなツールのこと

https://colab.research.google.com/

ファイルを読み込む方法について調べたのでまとめておく

各方法についてcsvファイルを読み込んで表示するまでの手順を書いていく

*コードの実行は全てcolaboratoryのnotebook上で行っている


ローカルのファイルを読み込む


ファイルをアップロードして、読み込む

upload用のダイアログを利用して、ファイルをアップロードして読み込む

# show upload dialog

from google.colab import files
uploaded = files.upload()

を実行すると、upload用のダイアログが表示される

ファイルをアップロードしてから、下コマンド

# read data

import pandas as pd
import io
data = pd.read_csv(io.StringIO(uploaded['sample.csv'].decode('utf-8')), header=-1)
data.head()

で中身を読み込む

実際にやるとこんな感じ

upload.png

(20180913時点)

もしくはこっちでも読み込める

# read data

import pandas as pd

data = pd.read_csv('sample.csv', encoding='utf-8', header=-1)

data.head()


google driveのファイルを読み込む


drive内のディレクトリをマウントする3(2019/06/22)

画面からスクリプトを呼び出せるようになった

coraboratory notebookの左上の>アイコンをクリックして

1.png

ファイルドライブをマウントをクリックすると、スクリプト付きのセルが作られる

2.png

3.png

あとは実行して、認証情報を入力すると、/drive/My Drive以下に、google driveのホームディレクトリがマウントされる(便利

4.png


drive内のディレクトリをマウントする2(2018/09/20)

公式のページより

https://colab.research.google.com/notebooks/io.ipynb#scrollTo=RWSJpsyKqHjH

from google.colab import drive

drive.mount('/content/gdrive')

例によって認証を行って

Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth...

Enter your authorization code:
··········
Mounted at /content/gdrive

gdriveのMy Drive以下にdriveのルートディレクトリがマウントされているっぽい

!ls ./gdrive/'My Drive'/"Colab Notebooks"


drive内のディレクトリをマウントする1

google driveの中身をディレクトリとして読み込む

パスを指定することでファイルを読み込むことができる


  • 認証部分

色々installする、実行には少し時間がかかる

(*colaboratoryではshellコマンドの実行もできるため、色々追加でインストールできるようになっている)

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools

!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

実行が終わるとURLと認証コード入力フォームが表示される

スクリーンショット 2018-03-13 17.16.50.png

URLをクリックして、読み込みたいファイルが置いてあるgoogleアカウントの認証コードを取得する

drive_auth_code.png

黒塗り部分に認証用のコードが表示されるのでコピペして、

先ほどの認証コード入力フォームに貼り付ける


  • データ読み込み

認証の後、以下コマンドにてdriveディレクトリをマウントすることで

drive内のファイルを読み込むことができる

# drive mean root directory of  google drive

!mkdir -p drive
!google-drive-ocamlfuse drive
!ls drive/"Colab Notebooks"/data

...
sample.csv

import pandas as pd

df = pd.read_csv("drive/Colab Notebooks/data/sample.csv")
df.head()

または任意のディレクトリに移動してから実行することもできる

import os

os.chdir('drive/Colab Notebooks/data')

import pandas as pd
df = pd.read_csv("sample.csv")
df.head()

実際にやるとこんな感じ


  • 認証部分

スクリーンショット 2018-03-13 17.16.50.png


  • データ読み込み

以下では、google drive内の"Colab Notebook/data"ディレクトリ内のsample.csvを読み込んでいる

スクリーンショット 2018-03-13 17.49.23.png


drive内のファイル共有設定

1ファイルずつ共有設定を行い、リンクidを取得して、drive内のファイルを読み込む

google driveにファイルをアップロードし、

該当ファイル上で右クリックして、"共有可能なリンクを取得"をクリック

drive_share_file.png

drive_share_file_url.png

表示されるurlの"id="以下をコピーしておく


実行


  • 認証部分

先ほどと同じようにURLと認証コード入力フォームが表示される

# Install the PyDrive wrapper & import libraries.

# This only needs to be done once per notebook.
!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# check auth
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)


  • 読み込み部分

1行目のidの値は"drive内のファイル共有設定"にて取得したidを設定する

downloaded = drive.CreateFile({'id':'1blX83l....'})

# Download the file to a local disk as 'sample.csv'.
downloaded.GetContentFile('sample.csv')

import pandas as pd
data = pd.read_csv('sample.csv')
data.head()

実際にやるとこんな感じ


  • 認証部分

スクリーンショット 2018-03-13 17.14.07.png


  • 読み込み部分

スクリーンショット 2018-03-13 17.49.12.png


参考