実験や測定を繰り返すと、1回目、2回目、3回目……とCSVファイルが増えていきます。1つずつ読み込み用のコードを書くより、同じ処理をまとめて繰り返せると便利です。
この記事のゴールは、同じ形式の複数CSVを読み込み、1枚のグラフに重ねて表示することです。Google Colabで3つのサンプルを使い、順番に試していきます。
CSVの意味やColabの基本操作が初めての方は、先にPythonで初めてのグラフ作成|CSVの意味からGoogle Colabでの操作までをご覧ください。今回は1ファイルの表示から複数ファイルの表示へと進みます。
1. 同じ形式のCSVを3つ用意する
時間と電圧を3回測定した、という設定のサンプルです。説明用の架空データであり、実測値ではありません。3ファイルとも、列名は time_s(秒)と voltage_v(V)で統一しています。
次の3ファイルをパソコンへ保存してください。リンクを開くと文字が表示される場合は、リンクを右クリックして「リンク先を別名で保存」などを選び、末尾を .csv のまま保存します。
・run_01.csv
・run_02.csv
・run_03.csv
例えば、run_01.csv の中身は次のとおりです。
time_s,voltage_v
0,0.20
1,0.85
2,1.40
3,1.85
4,2.15
5,2.35
1,0.85 は「1秒のとき0.85 V」という意味です。残り2ファイルも同じ時間を使い、電圧の値だけが少し異なります。
2. Colabのdataフォルダへアップロードする
Google Colabで新しいノートブックを開き、最初のコードセルに次の2行を貼り付け、左の実行ボタンを押します。
from pathlib import Path
Path("data").mkdir(exist_ok=True)
これは、CSVを入れる data フォルダを作るコードです。すでに同じフォルダがあっても、そのまま使えます。
左端のフォルダアイコン「ファイル」を開きます。data が表示されなければ、ファイル欄の更新ボタンを押してください。data を右クリックし、「アップロード」から先ほどの3つのCSVを選びます。
アップロード後に data を開き、次のようにフォルダの中に3件入っていることを確認します。sample_data や data の外側へ入れないようにします。
data/
├── run_01.csv
├── run_02.csv
└── run_03.csv
※Colabのセッションが終了すると、アップロードしたファイルは消えることがあります。元のCSVはパソコンにも残してください。次回ファイルが消えていたら、フォルダ作成とアップロードからやり直します。
3. 複数CSVを1枚のグラフに重ねる
「+コード」で新しいセルを追加し、次のコードをまとめて貼り付けて実行します。
import pandas as pd
import matplotlib.pyplot as plt
from pathlib import Path
files = sorted(Path("data").glob("*.csv"))
plt.figure(figsize=(6, 4))
for file in files:
df = pd.read_csv(file)
plt.plot(
df["time_s"],
df["voltage_v"],
marker="o",
label=file.stem
)
plt.xlabel("Time (s)")
plt.ylabel("Voltage (V)")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
3つのCSVに対応した3本の線が表示されたら成功です。次のように、凡例は run_01、run_02、run_03 になります。横軸は時間、縦軸は電圧です。

plt.figure() で最初に1枚のグラフを用意し、その中へ順番に線を追加しています。plt.show() は、すべての線を描いた後に1回だけ実行します。
4. ファイルを探して、順番に処理する仕組み
files = sorted(Path("data").glob("*.csv"))
Path("data") は探すフォルダ、glob("*.csv") はその中の .csv で終わるファイルを探す指定です。* は名前が異なっていてもよい部分を表します。今回は data の直下を対象にします。
sorted() でファイル名順に並べます。名前を run_01、run_02 のように桁数をそろえておくと、件数が増えても順番が分かりやすくなります。
for file in files:
df = pd.read_csv(file)
for は、見つかったファイルを1つずつ file に入れて、字下げした処理を繰り返します。毎回 pd.read_csv(file) でそのCSVを読み、続く plt.plot() で線を追加します。
label=file.stem は、拡張子を除いたファイル名を凡例に使う指定です。例えば run_01.csv なら run_01 になります。for文の内側の字下げは、コピーしたコードのまま残してください。
5. CSVが増えても、同じコードを使う
まず run_03.csv をパソコン上で複製し、名前を run_04.csv に変えて、同じ data フォルダへアップロードしてみてください。グラフのセル全体を再実行します。
凡例に run_04 が追加されれば、4件目も処理できています。今回は複製なので、線は run_03 と重なります。ファイルが増えても、グラフのコードを書き足す必要はありません。
実際の測定でも、同じ2列のCSVを追加すれば同じ手順を使えます。追加後は files = ... の行を含めて再実行し、新しいファイル一覧を取得してください。
6. うまくいかないときの確認
線が出ない・ファイル一覧が空になる
新しいセルで次を実行し、見つかったファイルを確認します。
files = sorted(Path("data").glob("*.csv"))
print(files)
[] なら、対象が見つかっていません。フォルダ名が data か、その中にCSVがあるか、拡張子が .csv かを確認します。Colabでは .CSV と .csv は区別されます。この glob は、フォルダがない場合も通常は空の一覧になります。
FileNotFoundError
読み込もうとしたファイルがありません。ファイル一覧を取得した後に移動・名前変更した場合などに起こります。配置を確認し、グラフのセル全体を再実行してください。
KeyError: ‘time_s’ または ‘voltage_v’
必要な列が見つかっていません。CSVの1行目が time_s,voltage_v になっているか確認します。大文字・小文字や余分な空白にも注意してください。data に別形式のCSVが混ざっていないかも確認します。
IndentationError・最後の1本しか出ないpd.read_csv() と plt.plot() が for の内側にあるか、字下げを確認します。plt.figure() はループの前、plt.show() はループの後です。
できたことと、次の一歩
今回は、フォルダからCSVをまとめて探し、順番に読み込んで、1枚のグラフに重ねることができました。ファイル名を凡例に使うので、どの線がどの測定なのかも確認できます。
次のテーマは「複数CSVから平均・標準偏差を求める」です。重ねて眺めた測定データを、代表値とばらつきで整理する方法へ進みます。
参考・動作確認環境
Google Colabで動作確認(2026年9月12日):Python 3.13.15/pandas 2.2.3/Matplotlib 3.10.0。画面やライブラリの更新により、表示が多少異なる場合があります。
Google Colab公式FAQ / Python公式:pathlib / pandas公式:read_csv / Matplotlib公式:plot


コメント