1. はじめに
この記事では、Google Colab の .ipynb ファイルからCSVファイルを読み込もうとしたときのエラーとその解決策について述べる。
Google Drive 上で同じディレクトリにあるCSVファイル(stocks.csv)を、.ipynb ファイルから読み込もうとしたときに次のようなエラーがでた。
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
/tmp/ipykernel_303/4057209512.py in <cell line: 0>()
2 import pulp
3
----> 4 stock_df = pd.read_csv('stocks.csv')
5 stock_df
4 frames
/usr/local/lib/python3.12/dist-packages/pandas/io/common.py in get_handle(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)
871 if ioargs.encoding and "b" not in ioargs.mode:
872 # Encoding
--> 873 handle = open(
874 handle,
875 ioargs.mode,
FileNotFoundError: [Errno 2] No such file or directory: 'stocks.csv'
同じディレクトリに CSV ファイルがあるため、相対パスで指定すれば読み込めると考えた。
しかし、Google Colab の実行環境はローカル環境とは異なるため、同じディレクトリにあるように見えても相対パスでは参照できない場合がある。
2. エラーの解消
2.1. 解決策1
Google Drive 上のファイルを読み込む場合は、
まず Google Drive を Colab 環境にマウントする必要がある。
次のコードを実行する。
from google.colab import drive
drive.mount('/content/drive')
これを実行すると、次のような画面がでる。
ここから Google ドライブに接続を押すと、ログイン画面が出るのでログインを行う。
これが完了したあと、.ipynb ファイルの左側からディレクトリファイルを選択する。

図2-2. Colab のサイドバーからファイルパネルを開く
そこから Drive > MyDrive と選択する。

図2-3. Google Drive をマウントした後のディレクトリ構造
そうすると、自分の Google Drive 上にあるすべてのファイルが表示されるので、そこから現在のディレクトリを選択し該当するCSVファイルのパスをコピーする。

図2-4. SampleDirectory 配下にある stocks.csv
このとき、CSVファイルのパスは、/content/drive/MyDrive/{your_directory}/{your_file} となる。今回は SampleDirectory 配下にある、CSVファイル(stocks.csv)を読み込みたいので、コードは次のようになる。
import pandas as pd
# 読み込みたいCSVファイルのパス
PATH = "/content/drive/MyDrive/SampleDirectory/stocks.csv"
# CSVファイルの読み込み
stock_df = pd.read_csv(PATH)
stock_df
これでエラーは解消された。
毎回フルパスを記述するのは、冗長なので %cd コマンドを使って、CSVがあるディレクトリに直接移動する方法もある。
これにより、先頭にディレクトリを宣言すれば、以降はファイル名だけで読み込むことができる。
コードは次のようになる。
import os
# 先にディレクトリを移動しておく
%cd /content/drive/MyDrive/SampleDirectory/
# 移動後はファイル名だけで読み込める
import pandas as pd
stock_df = pd.read_csv('stocks.csv')
stock_df
2.2. 解決策2
この方法は Google Drive 上のファイルを直接読み込む方法ではなく、ローカル環境からファイルをアップロードして読み込む方法である。
コードは次のようになる。
from google.colab import files
import pandas as pd
# ファイルのアップロード
files.upload()
# CSVファイルの読み込み
df = pd.read_csv("stocks.csv")
df
これを実行すると、次のような結果になる。

図2-5. files.upload() 実行後に表示されるファイルアップロード画面
ここから「ファイル選択」を押すと、ローカルディレクトリが表示される。そこから読み込みたいファイルをアップロードする。
アップロードをすると、次のような実行結果になりファイルが読み込めたことが確認できる。

図2-6. CSV ファイルが読み込まれたことを示す実行結果
Python で files.upload() コードを書かずに、ローカル環境から直接ドラッグ&ドロップでアップロードをすることもできる。解決策1で提示したように、ファイルアイコンからカレントディレクトリを開いた状態にする。(図2-4)
そしてローカルファイルから、ドラッグ&ドロップをしてファイルをアップロードする。
アップロード以降は、通常のようにファイルを読み込めばよい。
いずれの方法もローカル環境からアップロードできる利点はあるが、毎回の実行毎にファイルをアップロードする必要がある。
3. まとめ
この記事では、Google Colab の .ipynb ファイルからCSV ファイルを読み込もうとした際に発生するFileNotFoundError の原因と、その解決方法について紹介した。
Google Colab ではローカル環境とはディレクトリ構造が異なるため、Google Drive をマウントする方法や、ローカル環境から直接アップロードする方法を理解しておくと便利である。
| 解決策 | メリット | デメリット |
|---|---|---|
| 1. Google Drive | 大容量・保存が永続的 | 初回の認証が必要 |
| 2. 直接アップロード | 認証不要 | 大容量に不向き・実行毎にアップロードする必要がある |
