Help us understand the problem. What is going on with this article?

ドシロウトがGoogle Colaboratoryをさわってみた

More than 1 year has passed since last update.

0.初めに

私はエンジニアではないただのドシロウトです。

Googleが機械学習の教育や研究用に提供しているGoogle Colaboratoryを試してみました。

以下の記事で詳しく説明されています。

Google Colaboratoryを使えばブラウザ上でPythonの実行環境が簡単に手に入る
http://tadaken3.hatenablog.jp/entry/first-step-colabratory

よくわからないのでとりあえずコードスニペットをほぼパクって動いた物を自分用にまとめました。以下スニペットになります。


1.ファイルを生成してローカルにダウンロード

  • 生成したファイルは仮想マシンのローカルに作成される
  • 仮想マシンなので90分未操作だとファイルも含め、消える

 90分の元ネタ→ 
 【秒速で無料GPUを使う】TensorfFow/Keras/PyTorch/Chainer環境構築 on Colaboratory
 https://qiita.com/tomo_makes/items/f70fe48c428d3a61e131

  • 多分一時ファイル的な使い方だと思われる
  • ダウンロード先はローカルなのでファイルを取得できる
c001.py
from google.colab import files

with open('example.txt', 'w') as f:
  f.write('some content')

files.download('example.txt')

2.CSVの読み書き

  • 生成したCSVは仮想マシンのローカルに作成される
  • 仮想マシンなので90分未操作だとCSVも含め、消える
  • 多分一時ファイル的な使い方だと思われる
  • 注意するのは改行コード程度
c002.py
from google.colab import files

with open('example.csv', 'w') as z:
  z.write('\
都道府県,平成22年,平成27年,平成28年\n\
東京都,13159 ,13515 ,13624\n\
神奈川県,9048 ,9126 ,9145\n\
大阪府,8865 ,8839 ,8833\n\
愛知県,7411 ,7483 ,7507\n\
千葉県,7195 ,7267 ,7289\
')

with open('example.csv', 'r') as f:
  aaa = f.read()

print(aaa)

3.CSVをPandasで表示

  • 仮想マシン上のCSVを表示
c003.py
import pandas as pd
pd.read_csv("example.csv", encoding="UTF-8")

4.Google スプレッドシートライブラリのアップグレード(コマンド)

  • コマンドもGoogle Colaroratory上で利用できる
!pip install --upgrade -q gspread

5.Google スプレッドシートを読込Pandasで表示

  • スプレッドシート自体はGoogle Driveに存在
c004.py
from google.colab import auth
auth.authenticate_user()

import gspread
from oauth2client.client import GoogleCredentials

gc = gspread.authorize(GoogleCredentials.get_application_default())

worksheet = gc.open('パラメータデータベース').sheet1

# get_all_values gives a list of rows.
rows = worksheet.get_all_values()
print(rows)

# Convert to a DataFrame and render.
import pandas as pd
pd.DataFrame.from_records(rows)

6.スプレッドシートを新規につくってデータを書き込む

  • スプレッドシートはGoogle Driveに作成される
  • gc.createで同名のファイルを2つ作ると別ファイルとなる
c005.py
from google.colab import auth
auth.authenticate_user()

import gspread
from oauth2client.client import GoogleCredentials

gc = gspread.authorize(GoogleCredentials.get_application_default())

sh = gc.create('Colaboratoryテスト1')

# Open our new sheet and add some data.
worksheet = gc.open('Colaboratoryテスト1').sheet1

cell_list = worksheet.range('A1:C2')

import random
for cell in cell_list:
  cell.value = random.randint(1, 10)
  print(cell,cell.value)

worksheet.update_cells(cell_list)
# Go to https://sheets.google.com to see your new spreadsheet.

7.既存のスプレッドシートのデータを更新する

  • 6.からgc.createをコメントアウトしただけ
c006.py
from google.colab import auth
auth.authenticate_user()

import gspread
from oauth2client.client import GoogleCredentials

gc = gspread.authorize(GoogleCredentials.get_application_default())

# sh = gc.create('Colaboratoryテスト1')

# Open our new sheet and add some data.
worksheet = gc.open('Colaboratoryテスト1').sheet1

cell_list = worksheet.range('A1:C2')

import random
for cell in cell_list:
  cell.value = random.randint(1, 10)
  print(cell,cell.value)

worksheet.update_cells(cell_list)
# Go to https://sheets.google.com to see your new spreadsheet.

8.既存のスプレッドシートを読み込んでPandasで表示

  • コメントは特になし
c007.py
from google.colab import auth
auth.authenticate_user()

import gspread
from oauth2client.client import GoogleCredentials

gc = gspread.authorize(GoogleCredentials.get_application_default())

worksheet = gc.open('Colaboratoryテスト1').sheet1

# get_all_values gives a list of rows.
rows = worksheet.get_all_values()
print(rows)

# Convert to a DataFrame and render.
import pandas as pd
pd.DataFrame.from_records(rows)

9.OSのバージョン確認(コマンド)

  • 実行時はUbuntu 17.10でした。
!cat /etc/issue

また、以下のコマンド類も普通につかえました。

!ls -l
!pwd 
!cat example.csv

10.Googleドライブのルート直下のテキストファイルを表示

  • スニペットのまんまです。
c008.py
# 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

# Authenticate and create the PyDrive client.
# This only needs to be done once per notebook.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# List .txt files in the root.
#
# Search query reference:
# https://developers.google.com/drive/v2/web/search-parameters
listed = drive.ListFile({'q': "title contains '.txt' and 'root' in parents"}).GetList()
for file in listed:
  print('title {}, id {}'.format(file['title'], file['id']))

11.Google Driveに新規でテキストファイルを作る

  • Googleドライブに作られるのでファイルが消えません。
  • ファイルIDがファイル毎に振られる
c009.py
# Create & upload a text file.
uploaded = drive.CreateFile({'title': 'testcolab002.txt'})
uploaded.SetContentString('\
テストテストテスト\n\
\n\
Google Colaroratoryのテストです\n\
\n\
以上\n\
\n\
')
uploaded.Upload()
print('Uploaded file with ID {}'.format(uploaded.get('id')))

12.Googleドライブのテキストファイルの内容表示

  • downloadedだけだとID情報
  • downloaded.GetContentString()でファイルの中身
c010.py
# Download a file based on its file ID.
#
# A file ID looks like: laggVyWshwcyP6kEI-y_W3P8D26sz
file_id = '(ファイルID)'
downloaded = drive.CreateFile({'id': file_id})
print(downloaded)
print('------------')
print(downloaded.GetContentString())
print('------------')
print('Downloaded content "{}"'.format(downloaded.GetContentString()))

以上です。なかなか便利かも。

basictomonokai
プログラミングにハマってしまったただのおじーさんです。Qiitaにはふさわしくない内容かもしれませんが お気楽プログラミングの記事を投稿して行きたいと思います。 ※BASIC!は残念ながらプレイストア非公開となった為2019年7月をもってBASIC!関連の活動を終了しました
http://basic.amsstudio.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away