Pythonで複数のCSVをまとめてグラフ化|実験データを一括で読み込む方法

Pythonで複数CSVをグラフ化。3つのCSVをまとめて読み込み、PC画面の3本の線に重ねるイメージ。 Python・データ解析

実験や測定を繰り返すと、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 になります。横軸は時間、縦軸は電圧です。

3つのCSVの電圧を時間に対して重ね描きしたグラフ。run_02、run_01、run_03の順に値が高い。
同じコードで読み込んだ3回分のサンプルデータ(架空の測定値)

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

コメント

タイトルとURLをコピーしました