Python × matplotlibで業務データをグラフ化し、見える化レポートを自動生成

はじめに

日々の業務で扱う売上データや勤怠データ、アクセスログなどは、数字のままでは把握しにくいことが多いものです。
そこで有効なのが「グラフ化による見える化」です。Pythonの可視化ライブラリ matplotlib を使えば、業務データを直感的に理解できるレポートにまとめ、自動で出力することができます。

本記事では、

  • matplotlibを使った基本的なグラフ作成
  • 複数の業務データをまとめて可視化
  • 自動レポート生成(PDF出力)

を順に解説していきます。


1. matplotlibのインストールと準備

まずはmatplotlibをインストールします。

pip install matplotlib pandas

次に、Pythonコード内でインポートします。

import pandas as pd
import matplotlib.pyplot as plt

2. 業務データのサンプルを用意

ここでは「日別売上データ」を例にします。実際にはCSVやExcelから読み込む形に置き換え可能です。

data = {
    "日付": pd.date_range("2025-08-01", periods=7, freq="D"),
    "売上": [120000, 135000, 98000, 150000, 160000, 175000, 142000],
}
df = pd.DataFrame(data)
print(df)

3. matplotlibでグラフを作成

折れ線グラフで推移を確認

plt.figure(figsize=(8, 5))
plt.plot(df["日付"], df["売上"], marker="o", linestyle="-", color="b", label="売上")
plt.title("日別売上推移")
plt.xlabel("日付")
plt.ylabel("売上額(円)")
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()

このコードを実行すると、日別の売上推移が折れ線グラフで表示されます。


4. 複数の指標を可視化(棒グラフ+折れ線)

売上だけでなく「来客数」や「平均単価」を併せて分析すると、業務の改善点が見えやすくなります。

df["来客数"] = [50, 60, 45, 70, 75, 80, 65]
df["平均単価"] = df["売上"] / df["来客数"]

fig, ax1 = plt.subplots(figsize=(8, 5))

# 棒グラフ(来客数)
ax1.bar(df["日付"], df["来客数"], color="skyblue", label="来客数")
ax1.set_ylabel("来客数", color="blue")

# 折れ線グラフ(平均単価)
ax2 = ax1.twinx()
ax2.plot(df["日付"], df["平均単価"], color="red", marker="o", label="平均単価")
ax2.set_ylabel("平均単価(円)", color="red")

plt.title("来客数と平均単価の関係")
fig.tight_layout()
plt.show()

このように、棒グラフと折れ線を組み合わせることで、売上を支える要因を視覚的に把握できます。


5. レポートを自動生成(PDF出力)

matplotlibで作成したグラフは、レポートとして自動保存できます。

# 売上推移のグラフを保存
plt.figure(figsize=(8, 5))
plt.plot(df["日付"], df["売上"], marker="o", color="green")
plt.title("日別売上推移")
plt.savefig("sales_report.pdf")

複数の図をまとめてPDFに出力したい場合は、matplotlib.backends.backend_pdf.PdfPages を使います。

from matplotlib.backends.backend_pdf import PdfPages

with PdfPages("業務レポート.pdf") as pdf:
    # 売上グラフ
    plt.figure()
    plt.plot(df["日付"], df["売上"], marker="o", color="blue")
    plt.title("日別売上推移")
    pdf.savefig()
    plt.close()

    # 来客数と平均単価
    fig, ax1 = plt.subplots()
    ax1.bar(df["日付"], df["来客数"], color="skyblue")
    ax2 = ax1.twinx()
    ax2.plot(df["日付"], df["平均単価"], color="red", marker="o")
    plt.title("来客数と平均単価の関係")
    pdf.savefig()
    plt.close()

これで「日別売上」「来客数と単価」をまとめたPDFレポートが自動生成されます。


まとめ

本記事では、Python × matplotlibによる業務データの見える化を解説しました。

  • matplotlibでグラフ化 → データを直感的に理解
  • 複数指標を組み合わせ → 改善ポイントが見える
  • PdfPagesで自動レポート生成 → 定期報告に活用可能

定期的なデータ分析を自動化することで、業務効率化と意思決定のスピード向上につながります。

👉 次のステップとして、Excelやデータベースから直接データを読み込み、定期的にレポートを出力する仕組みを作ると、さらに実務に役立ちます。

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