Google Colaboratory

はじめての Google Colab

Google Colaboratory(グーグル・コラボラトリー、略称 Google Colab(コラブ))を使えば Web 上で Python が使えます。ただし、Google のアカウントが必要です。無料です(有料版もあります)。Python だけでなく R も使えます

古いブラウザでは使えなかったり Shift + Enter がうまくいかなかったりするようです。最新の Chrome か Safari か Firefox を使いましょう。

Google Colaboratory にアクセスしてください。上にオレンジ色の帯のあるポップアップが出れば、一番下の「ノートブックを新規作成」をクリックします。ポップアップが出なかったら、左上の「ファイル」メニューから「ノートブックを新規作成」を選びます。

コードセル(カーソルの点滅しているところ)に何か計算式を入れてみましょう。例えば

2+3

と打ち込んで、Shift + Enter します。答え(上の計算の場合は 5)が現れ、その下に新しいコードセルが出ます。

ブラウザによっては Shift + Enter がうまく効かないことがあるようです。その場合は ● ▷ のボタンをクリックすれば実行されます。ただ、新しいコードセルが出ませんので、「+ コード」ボタンを押してコードセルを追加します。

あとはPythonの初歩を見ながらいろいろ試してください。

ノートブックとして使う

Google Colaboratory は Jupyter Notebook(ジュピター・ノートブック)をベースに作られたもので、コード(プログラム)とテキスト(マークダウン形式の文書)を織り交ぜて、作業内容を記述できます。

セルのほんの少し上、または一番下のセルのすぐ下にマウスを乗せると、細い横線が現れ、中央に

————+ コード——+ テキスト————

という二つのボタンが現れます。これを使って、好きな位置に新しいセルを追加できます。

ここでは一番上のセルの上で + テキスト をクリックして、テキストセルを追加してみましょう。小さいワープロのような枠が現れます。この中に、コード中のコメントだけでは表せない説明を書き込みます。特に、一番上のテキストセルの最初の行は、このノートブックの題名を書きます。その際、次の例のような「マークダウン」(Markdown)と呼ばれる記法を使います:

# 日本の出生率の推移

以下では厚労省のデータをもとに日本の出生率の推移を考察する。

セルの右側にプレビューが現れます。頭に # を付けた行だけ題名用の大きなフォントで表示されます。このような記法がマークダウン記法です。同様に、## を付けた行(節見出し)は、題名よりもやや小さく本文より大きいフォントになります。

頭に # を付けなかった行は、普通の本文です。空の行を挟むと、そこで段落が区切られます。

TeX 形式の数式も使えます。本文中に アインシュタインは $E=mc^2$ と言った。 のように数式を挿入したり、独立した行に

$$ \int_0^\infty f(x)dx $$

のように中央揃えの数式を挿入したりできます。

テキストセルは、ダブルクリックすると、再編集できます。

どのセルも、↑ ↓ ボタンで上下に移動できます。

データの読み込ませ方

Web で提供されているデータなら、URL 指定で読み込めるので簡単です:

import pandas as pd

df = pd.read_csv("https://okumuralab.org/~okumura/python/data/pop2020.csv")

Web で提供されていないファイルを読み込ませるには、まずそのファイルを Google Colaboratory の仮想マシンに転送しなければなりません。左端にあるフォルダーマーク 🗂 をクリックすれば、Google Colaboratory のカレントディレクトリ /content の中身が見えます。sample_data というフォルダーがあり、練習用データがいくつか入っています。この中(sample_data の中ではなく、それと同じレベルの場所)にドラッグ&ドロップでファイルを転送すれば、Python から簡単に読めます:

df = pd.read_csv("filename.csv")

sample_data の中のものは、例えば次のようにして読めます:

df = pd.read_csv("sample_data/california_housing_train.csv")

Google Colaboratory の中身

Google Colaboratory は一つの仮想マシンの上で実行されています。他人にじゃまされずに一つのマシンを無料で使うことができるので、たいへんありがたいサービスです。

ちなみに、動いている OS や Python のバージョンは次のようにして確かめられます。2023年6月現在、Ubuntu 22.04.2 の Python 3.10.12 のようです。

!cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
import sys

sys.version
3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]

GPUがあれば次のコマンドでわかります。

!nvidia-smi

インストールされている Python のパッケージは !pip list でわかります。2023年9月現在の出力を挙げておきます。

Package                          Version
-------------------------------- ---------------------
absl-py                          1.4.0
aiohttp                          3.8.5
aiosignal                        1.3.1
alabaster                        0.7.13
albumentations                   1.3.1
altair                           4.2.2
anyio                            3.7.1
appdirs                          1.4.4
argon2-cffi                      23.1.0
argon2-cffi-bindings             21.2.0
array-record                     0.4.1
arviz                            0.15.1
astropy                          5.3.2
astunparse                       1.6.3
async-timeout                    4.0.3
attrs                            23.1.0
audioread                        3.0.0
autograd                         1.6.2
Babel                            2.12.1
backcall                         0.2.0
beautifulsoup4                   4.11.2
bleach                           6.0.0
blinker                          1.4
blis                             0.7.10
blosc2                           2.0.0
bokeh                            3.2.2
bqplot                           0.12.40
branca                           0.6.0
build                            1.0.3
CacheControl                     0.13.1
cachetools                       5.3.1
catalogue                        2.0.9
certifi                          2023.7.22
cffi                             1.15.1
chardet                          5.2.0
charset-normalizer               3.2.0
chex                             0.1.7
click                            8.1.7
click-plugins                    1.1.1
cligj                            0.7.2
cloudpickle                      2.2.1
cmake                            3.27.4.1
cmdstanpy                        1.1.0
colorcet                         3.0.1
colorlover                       0.3.0
colour                           0.1.5
community                        1.0.0b1
confection                       0.1.2
cons                             0.4.6
contextlib2                      21.6.0
contourpy                        1.1.0
convertdate                      2.4.0
cryptography                     41.0.3
cufflinks                        0.17.3
cvxopt                           1.3.2
cvxpy                            1.3.2
cycler                           0.11.0
cymem                            2.0.7
Cython                           0.29.36
dask                             2023.8.1
datascience                      0.17.6
db-dtypes                        1.1.1
dbus-python                      1.2.18
debugpy                          1.6.6
decorator                        4.4.2
defusedxml                       0.7.1
distributed                      2023.8.1
distro                           1.7.0
dlib                             19.24.2
dm-tree                          0.1.8
docutils                         0.18.1
dopamine-rl                      4.0.6
duckdb                           0.8.1
earthengine-api                  0.1.367
easydict                         1.10
ecos                             2.0.12
editdistance                     0.6.2
eerepr                           0.0.4
en-core-web-sm                   3.6.0
entrypoints                      0.4
ephem                            4.1.4
et-xmlfile                       1.1.0
etils                            1.4.1
etuples                          0.3.9
exceptiongroup                   1.1.3
fastai                           2.7.12
fastcore                         1.5.29
fastdownload                     0.0.7
fastjsonschema                   2.18.0
fastprogress                     1.0.3
fastrlock                        0.8.2
filelock                         3.12.2
Fiona                            1.9.4.post1
firebase-admin                   5.3.0
Flask                            2.2.5
flatbuffers                      23.5.26
flax                             0.7.2
folium                           0.14.0
fonttools                        4.42.1
frozendict                       2.3.8
frozenlist                       1.4.0
fsspec                           2023.6.0
future                           0.18.3
gast                             0.4.0
gcsfs                            2023.6.0
GDAL                             3.4.3
gdown                            4.6.6
geemap                           0.26.0
gensim                           4.3.2
geocoder                         1.38.1
geographiclib                    2.0
geopandas                        0.13.2
geopy                            2.3.0
gin-config                       0.5.0
glob2                            0.7
google                           2.0.3
google-api-core                  2.11.1
google-api-python-client         2.84.0
google-auth                      2.17.3
google-auth-httplib2             0.1.0
google-auth-oauthlib             1.0.0
google-cloud-bigquery            3.10.0
google-cloud-bigquery-connection 1.12.1
google-cloud-bigquery-storage    2.22.0
google-cloud-core                2.3.3
google-cloud-datastore           2.15.2
google-cloud-firestore           2.11.1
google-cloud-functions           1.13.2
google-cloud-language            2.9.1
google-cloud-storage             2.8.0
google-cloud-translate           3.11.3
google-colab                     1.0.0
google-crc32c                    1.5.0
google-pasta                     0.2.0
google-resumable-media           2.5.0
googleapis-common-protos         1.60.0
googledrivedownloader            0.4
graphviz                         0.20.1
greenlet                         2.0.2
grpc-google-iam-v1               0.12.6
grpcio                           1.57.0
grpcio-status                    1.48.2
gspread                          3.4.2
gspread-dataframe                3.3.1
gym                              0.25.2
gym-notices                      0.0.8
h5netcdf                         1.2.0
h5py                             3.9.0
holidays                         0.32
holoviews                        1.17.1
html5lib                         1.1
httpimport                       1.3.1
httplib2                         0.22.0
humanize                         4.7.0
hyperopt                         0.2.7
idna                             3.4
imageio                          2.31.3
imageio-ffmpeg                   0.4.8
imagesize                        1.4.1
imbalanced-learn                 0.10.1
imgaug                           0.4.0
importlib-metadata               6.8.0
importlib-resources              6.0.1
imutils                          0.5.4
inflect                          7.0.0
iniconfig                        2.0.0
intel-openmp                     2023.2.0
ipyevents                        2.0.2
ipyfilechooser                   0.6.0
ipykernel                        5.5.6
ipyleaflet                       0.17.3
ipython                          7.34.0
ipython-genutils                 0.2.0
ipython-sql                      0.5.0
ipytree                          0.2.2
ipywidgets                       7.7.1
itsdangerous                     2.1.2
jax                              0.4.14
jaxlib                           0.4.14+cuda11.cudnn86
jeepney                          0.7.1
jieba                            0.42.1
Jinja2                           3.1.2
joblib                           1.3.2
jsonpickle                       3.0.2
jsonschema                       4.19.0
jsonschema-specifications        2023.7.1
jupyter-client                   6.1.12
jupyter-console                  6.1.0
jupyter_core                     5.3.1
jupyter-server                   1.24.0
jupyterlab-pygments              0.2.2
jupyterlab-widgets               3.0.8
kaggle                           1.5.16
keras                            2.13.1
keyring                          23.5.0
kiwisolver                       1.4.5
langcodes                        3.3.0
launchpadlib                     1.10.16
lazr.restfulclient               0.14.4
lazr.uri                         1.0.6
lazy_loader                      0.3
libclang                         16.0.6
librosa                          0.10.1
lightgbm                         4.0.0
linkify-it-py                    2.0.2
lit                              16.0.6
llvmlite                         0.39.1
locket                           1.0.0
logical-unification              0.4.6
LunarCalendar                    0.0.9
lxml                             4.9.3
Markdown                         3.4.4
markdown-it-py                   3.0.0
MarkupSafe                       2.1.3
matplotlib                       3.7.1
matplotlib-inline                0.1.6
matplotlib-venn                  0.11.9
mdit-py-plugins                  0.4.0
mdurl                            0.1.2
miniKanren                       1.0.3
missingno                        0.5.2
mistune                          0.8.4
mizani                           0.9.3
mkl                              2023.2.0
ml-dtypes                        0.2.0
mlxtend                          0.22.0
more-itertools                   10.1.0
moviepy                          1.0.3
mpmath                           1.3.0
msgpack                          1.0.5
multidict                        6.0.4
multipledispatch                 1.0.0
multitasking                     0.0.11
murmurhash                       1.0.9
music21                          9.1.0
natsort                          8.4.0
nbclassic                        1.0.0
nbclient                         0.8.0
nbconvert                        6.5.4
nbformat                         5.9.2
nest-asyncio                     1.5.7
networkx                         3.1
nibabel                          4.0.2
nltk                             3.8.1
notebook                         6.5.5
notebook_shim                    0.2.3
numba                            0.56.4
numexpr                          2.8.5
numpy                            1.23.5
oauth2client                     4.1.3
oauthlib                         3.2.2
opencv-contrib-python            4.8.0.76
opencv-python                    4.8.0.76
opencv-python-headless           4.8.0.76
openpyxl                         3.1.2
opt-einsum                       3.3.0
optax                            0.1.7
orbax-checkpoint                 0.3.5
osqp                             0.6.2.post8
packaging                        23.1
pandas                           1.5.3
pandas-datareader                0.10.0
pandas-gbq                       0.17.9
pandocfilters                    1.5.0
panel                            1.2.2
param                            1.13.0
parso                            0.8.3
partd                            1.4.0
pathlib                          1.0.1
pathy                            0.10.2
patsy                            0.5.3
pexpect                          4.8.0
pickleshare                      0.7.5
Pillow                           9.4.0
pip                              23.1.2
pip-tools                        6.13.0
platformdirs                     3.10.0
plotly                           5.15.0
plotnine                         0.12.3
pluggy                           1.3.0
polars                           0.17.3
pooch                            1.7.0
portpicker                       1.5.2
prefetch-generator               1.0.3
preshed                          3.0.8
prettytable                      3.8.0
proglog                          0.1.10
progressbar2                     4.2.0
prometheus-client                0.17.1
promise                          2.3
prompt-toolkit                   3.0.39
prophet                          1.1.4
proto-plus                       1.22.3
protobuf                         3.20.3
psutil                           5.9.5
psycopg2                         2.9.7
ptyprocess                       0.7.0
py-cpuinfo                       9.0.0
py4j                             0.10.9.7
pyarrow                          9.0.0
pyasn1                           0.5.0
pyasn1-modules                   0.3.0
pycocotools                      2.0.7
pycparser                        2.21
pyct                             0.5.0
pydantic                         1.10.12
pydata-google-auth               1.8.2
pydot                            1.4.2
pydot-ng                         2.0.0
pydotplus                        2.0.2
PyDrive                          1.3.1
PyDrive2                         1.6.3
pyerfa                           2.0.0.3
pygame                           2.5.1
Pygments                         2.16.1
PyGObject                        3.42.1
PyJWT                            2.3.0
pymc                             5.7.2
PyMeeus                          0.5.12
pymystem3                        0.2.0
PyOpenGL                         3.1.7
pyOpenSSL                        23.2.0
pyparsing                        3.1.1
pyperclip                        1.8.2
pyproj                           3.6.0
pyproject_hooks                  1.0.0
pyshp                            2.3.1
PySocks                          1.7.1
pytensor                         2.14.2
pytest                           7.4.1
python-apt                       0.0.0
python-box                       7.1.1
python-dateutil                  2.8.2
python-louvain                   0.16
python-slugify                   8.0.1
python-utils                     3.7.0
pytz                             2023.3.post1
pyviz_comms                      3.0.0
PyWavelets                       1.4.1
PyYAML                           6.0.1
pyzmq                            23.2.1
qdldl                            0.1.7.post0
qudida                           0.0.4
ratelim                          0.1.6
referencing                      0.30.2
regex                            2023.6.3
requests                         2.31.0
requests-oauthlib                1.3.1
requirements-parser              0.5.0
rich                             13.5.2
rpds-py                          0.10.2
rpy2                             3.4.2
rsa                              4.9
scikit-image                     0.19.3
scikit-learn                     1.2.2
scipy                            1.10.1
scooby                           0.7.2
scs                              3.2.3
seaborn                          0.12.2
SecretStorage                    3.3.1
Send2Trash                       1.8.2
setuptools                       67.7.2
shapely                          2.0.1
six                              1.16.0
sklearn-pandas                   2.2.0
smart-open                       6.3.0
sniffio                          1.3.0
snowballstemmer                  2.2.0
sortedcontainers                 2.4.0
soundfile                        0.12.1
soupsieve                        2.5
soxr                             0.3.6
spacy                            3.6.1
spacy-legacy                     3.0.12
spacy-loggers                    1.0.4
Sphinx                           5.0.2
sphinxcontrib-applehelp          1.0.7
sphinxcontrib-devhelp            1.0.5
sphinxcontrib-htmlhelp           2.0.4
sphinxcontrib-jsmath             1.0.1
sphinxcontrib-qthelp             1.0.6
sphinxcontrib-serializinghtml    1.1.9
SQLAlchemy                       2.0.20
sqlparse                         0.4.4
srsly                            2.4.7
statsmodels                      0.14.0
sympy                            1.12
tables                           3.8.0
tabulate                         0.9.0
tbb                              2021.10.0
tblib                            2.0.0
tenacity                         8.2.3
tensorboard                      2.13.0
tensorboard-data-server          0.7.1
tensorflow                       2.13.0
tensorflow-datasets              4.9.2
tensorflow-estimator             2.13.0
tensorflow-gcs-config            2.13.0
tensorflow-hub                   0.14.0
tensorflow-io-gcs-filesystem     0.33.0
tensorflow-metadata              1.14.0
tensorflow-probability           0.20.1
tensorstore                      0.1.41
termcolor                        2.3.0
terminado                        0.17.1
text-unidecode                   1.3
textblob                         0.17.1
tf-slim                          1.1.0
thinc                            8.1.12
threadpoolctl                    3.2.0
tifffile                         2023.8.30
tinycss2                         1.2.1
toml                             0.10.2
tomli                            2.0.1
toolz                            0.12.0
torch                            2.0.1+cu118
torchaudio                       2.0.2+cu118
torchdata                        0.6.1
torchsummary                     1.5.1
torchtext                        0.15.2
torchvision                      0.15.2+cu118
tornado                          6.3.2
tqdm                             4.66.1
traitlets                        5.7.1
traittypes                       0.2.1
triton                           2.0.0
tweepy                           4.13.0
typer                            0.9.0
types-setuptools                 68.2.0.0
typing_extensions                4.5.0
tzlocal                          5.0.1
uc-micro-py                      1.0.2
uritemplate                      4.1.1
urllib3                          2.0.4
vega-datasets                    0.9.0
wadllib                          1.3.6
wasabi                           1.1.2
wcwidth                          0.2.6
webcolors                        1.13
webencodings                     0.5.1
websocket-client                 1.6.2
Werkzeug                         2.3.7
wheel                            0.41.2
widgetsnbextension               3.6.5
wordcloud                        1.9.2
wrapt                            1.15.0
xarray                           2023.7.0
xarray-einstats                  0.6.0
xgboost                          1.7.6
xlrd                             2.0.1
xyzservices                      2023.7.0
yarl                             1.9.2
yellowbrick                      1.5
yfinance                         0.2.28
zict                             3.0.0
zipp                             3.16.2

新しいパッケージをインストールするには例えば次のようにします:

!pip install japanize-matplotlib