uni farm

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

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

Google Colaboratoryとはgoogleが作った jupyter note環境をブラウザで使えるようなツールのこと

ファイルを読み込む方法について調べたのでまとめておく 各方法について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 diagram

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

# read data
import pandas as pd

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

data.head()

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

drive内のディレクトリをマウントする4(2020/06/29)

gui表示が新しくなった。また、ノートブックを再接続すると自動的にマウントするようになってる

  1. ファイルタブからgoogle driveっぽいアイコンをクリック
drive mount icon
  1. popupが出てくるので接続して認証する
drive mount popup
  1. unmountもアイコンでできる
drive unmount icon

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

画面からスクリプトを呼び出せる

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

drive gui 1

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

drive gui 2 drive gui 3

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

drive gui 4

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と認証コード入力フォームが表示される

auth cell

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

sign in

黒塗り部分に認証用のコードが表示されるのでコピペして、 先ほどの認証コード入力フォームに貼り付ける

  • データ読み込み

認証の後、以下コマンドにて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()

実際にやるとこんな感じ

  • 認証部分
auth cell
  • データ読み込み

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

load data

drive内のファイル共有設定

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

google driveにファイルをアップロードし、 該当ファイル上で右クリックして、“共有可能なリンクを取得”をクリック

spreadsheets share1 spreadsheets share2

表示される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()

実際にやるとこんな感じ

  • 認証部分
pydrive auth
  • 読み込み部分
spreadsheets load

参考

2023, Built with Gatsby. This site uses Google Analytics.