はじめに
日々の業務で扱う売上データや勤怠データ、アクセスログなどは、数字のままでは把握しにくいことが多いものです。
そこで有効なのが「グラフ化による見える化」です。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やデータベースから直接データを読み込み、定期的にレポートを出力する仕組みを作ると、さらに実務に役立ちます。