Python基礎 キャリアチェンジ/転職

データ可視化レポート納品の型:Tableau/Matplotlib|“図3点+結論1行+運用”で伝わる・続く・刺さる

結論:レポートは「データ→図」ではなく「意思決定→図」の順で設計します。最短で伝わり、運用で続く“型”は、(1) 結論1行、(2) 図3点(推移・分解・構成)、(3) 打ち手(閾値/費用対効果)、(4) 再現性(make all/CI)です。

この記事の要点(ここだけ読めばOK)

  • 図は3点で十分:推移・分解・構成に注釈と基準線を添える。
  • KPI定義が土台:単位/粒度/除外条件を先に固定。
  • “打ち手テーブル”で意思決定を加速:根拠×期待効果×期限×担当。
  • 再現性までセット:Tableauはサブスク配信、PythonはPDF自動出力。

関連記事:
>>【保存版】可視化入門:Matplotlib/Plotlyの使い分けと“伝わるグラフ設計”10ステップ
>>Python副業の案件種類と相場:自動化/可視化/スクレイピング|“納品の型×見積根拠×契約リスク”をひとまとめ
>>Excel業務の自動化で月3万円:社内案件の作り方|“60分→10分”を商品化して社内受注する
>>初案件はこの一通で決まる|返信率を上げる提案文テンプレ45選【コピペ可/検収基準・見積り付き】


よくある失敗:図が多い・KPIが曖昧・納品で終わる

現場で“伝わらない”原因はシンプルです。図を増やすほど目的がぼやけ、KPIの定義が揺れると関係者で数字が再現できません。さらに配信や改善の運用設計がないと、次第に使われなくなります。まずは「結論1行→図3点→打ち手→運用」の順で設計を固定しましょう。

筆者の経験談:10年で学んだ“刺さる図”の最小構成

筆者(ふみと)はデータ/マーケティングサイエンティストとして10年、定例会議や経営報告、広告/在庫の実務で100件超のレポートを納品してきました。最も意思決定が速かったのは、推移(折れ線)+分解(棒/帯)+構成(100%積み上げ)注釈と基準線を添える“最小構成”です。本記事はその型を、TableauとMatplotlibの両輪でコピペ再現できるように落とし込みます。

納品の型:KPI定義→図3点→打ち手→運用(テンプレ付き)

KPI定義書テンプレ(コピペ可)

# KPI定義書(例:売上・在庫)
## 目的
- 欠品率を前年同週比で-1.0pt改善し、粗利最大化。
## 指標
- 売上:税抜、返品除外。単位:円。粒度:日/店舗。
- 欠品率:販売機会損失数/需要見込数。推定方法を別紙。
## 集計ルール
- タイムゾーン:JST。営業日定義:土日祝含む。
- 除外:社内購買/テストデータ。
## データソース
- DWH: bigquery.project.dataset.sales_daily
- カレンダー: calendar_master(祝日/セール)
## 更新
- 日次 7:00 JST。遅延>30分でアラート。
## 所有者/変更管理
- Owner:Analytics部 ◯◯。PRテンプレ/差し戻し率を運用。

図3点のストーリー(例)

  • 図1:推移(折れ線)—「今週の売上は前週比+8%前年同週比+5%
  • 図2:分解(棒/帯)—媒体別/カテゴリ別の寄与度を提示
  • 図3:構成(100%積上げ)上位セグメントの構成比変化で打ち手を示唆
  • 注釈:異常点に矢印+短文基準線に平均/目標

詳細は[内部リンク:可視化ベストプラクティス集(図選択・注釈・配色の実務)]

打ち手(意思決定表)テンプレ

| 打ち手 | 根拠 | 期待効果 | コスト | 期限 | 担当 |
|---|---|---:|---:|---|---|
| セグメントBに予算+15% | ROAS +0.4、在庫余裕 | 粗利 +120万 | +30万 | 今週 | 広告A |
| 在庫補充 +1日 | 欠品アラート増加 | 欠品率 -0.8pt | +10万 | 即日 | 物流B |

Tableau:設計→実装→配信(再現性まで担保)

1画面1意思決定を原則に、KPI→推移→分解→構成の順に並べます。フィルタは最小限、注釈・基準線・参考線で文脈を補いましょう。

  • 実装要点:データ接続の統一、前年同週/寄与度/構成比の計算フィールド、1200×900px目安のダッシュボード、ストーリーは3枚
  • 配信運用:Server/Cloudのサブスクで毎朝PDF配信、件名テンプレ [週次KPI] ${date}、閲覧/ダウンロードの役割管理、ログの月次レビュー

Matplotlib:PDF自動出力(コピペ可)

Tableauの“見る”に対して、Pythonは“再現と配信”を受け持ちます。以下をコピペで使えます。

report/
  data/sales.csv
  src/make_report.py
  outputs/weekly_report_YYYYMMDD.pdf
  config.yaml
  README.md
date_col: date
value_col: sales
segment: category
freq: D
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
import yaml, pathlib

cfg = yaml.safe\_load(open('config.yaml', 'r', encoding='utf-8'))
path = pathlib.Path('data/sales.csv')
df = pd.read\_csv(path, parse\_dates=\[cfg\['date\_col']])

# 前処理

s = (df.set\_index(cfg\['date\_col'])\[cfg\['value\_col']]
.asfreq(cfg\['freq']).fillna(0))
seg = (df.pivot\_table(index=cfg\['date\_col'], columns=cfg\['segment'],
values=cfg\['value\_col'], aggfunc='sum')
.asfreq(cfg\['freq']).fillna(0))

with PdfPages('outputs/weekly\_report.pdf') as pdf:
\# 図1:推移
plt.figure(figsize=(10,5))
s.rolling(7).mean().plot()
plt.title('売上推移(7日移動平均)'); plt.xlabel('日付'); plt.ylabel('売上')
plt.axhline(s.mean(), linestyle='--')
pdf.savefig(); plt.close()

```
# 図2:分解(上位カテゴリ)
top = seg.iloc[-30:].sum().sort_values(ascending=False).head(5).index
plt.figure(figsize=(10,5))
seg[top].iloc[-30:].plot(kind='bar', stacked=True)
plt.title('直近30日のカテゴリ別売上'); plt.xlabel('日付'); plt.ylabel('売上')
pdf.savefig(); plt.close()

# 図3:構成比(直近週)
last = seg.iloc[-7:].sum()
plt.figure(figsize=(8,6))
(last/last.sum()).sort_values().plot(kind='barh')
plt.title('直近7日の構成比'); plt.xlabel('構成比')
pdf.savefig(); plt.close()

```

import smtplib, ssl
from email.message import EmailMessage

msg = EmailMessage()
msg\['Subject'] = '\[週次KPI] レポート'
msg\['From'] = '[noreply@example.com](mailto:noreply@example.com)'
msg\['To'] = '[team@example.com](mailto:team@example.com)'
msg.set\_content('結論1行:売上+8%、欠品-1.2pt。詳細はPDF参照。')

with open('outputs/weekly\_report.pdf', 'rb') as f:
msg.add\_attachment(f.read(), maintype='application', subtype='pdf',
filename='weekly\_report.pdf')

with smtplib.SMTP\_SSL('smtp.example.com', 465, context=ssl.create\_default\_context()) as s:
s.login('user','pass'); s.send\_message(msg)

QCポイント:PDFの図順/注釈/基準線がKPI定義と一致しているか、毎回3分レビューを実施。

QCチェックリスト(受託/社内共通)

  • KPI定義一致:単位/粒度/除外条件
  • 図3点+結論1行:順序は「結論→推移→分解→構成」
  • 注釈/基準線:異常点/閾値/平均線
  • 表記統一:桁区切り/小数/%、凡例/軸ラベルの冗長削減
  • アクセシビリティ:色弱対応(明度差/パターン)、代替テキスト
  • 再現性:requirements.txt/Makefile/README、最小限のテスト
  • 命名・版管理:YYYYMMDD_Report_v1.pdfCHANGELOG.md更新
  • 配信テスト:宛先/時刻を実データで検証

「やりがちNG」→こう直す

  • 3D/多色/グラデ:2–3色+強調1色に。注釈/基準線で伝える。
  • 軸カット/二重軸:スモールマルチプルや比率で置換。
  • 凡例だらけ:直接ラベリングと並び順で可読化。
  • PDFだけ配布:Tableauリンクと再現手順も同梱。

詳細は[内部リンク:可視化ベストプラクティス集(図選択・注釈・配色の実務)]

契約/受入れ:SOWと検収のひな形(レポート専用)

# SOW(レポート納品)
目的:経営会議の意思決定を迅速化(所要10分)
成果物:PDF 1本(結論1行+図3点)、Tableauダッシュボード1本
検収:KPI定義一致/PDF生成≤3分/図の禁じ手なし
納期:YYYY-MM-DD(営業日10日)
運用:Tableauサブスク配信/Python自動出力のREADME
変更:指標/定義変更はChange Requestで合意

価格・ROIの伝え方(提案文に添付)

  • 初期構築:8〜18万円(定義書/設計/実装/QC/引継)
  • 月次運用:1.5〜5万円(配信/軽微改修/監視)
  • ROI例:会議準備60→10分×週1×5人=月20h削減

→ 提案文は[内部リンク:初案件獲得のための提案文テンプレ【コピペ可】]

無料カウンセリングで“伝わる1枚”へ

レビューが丁寧な環境ほど、レポートは速く洗練されます。まずはKPI定義と図3点を一緒にレビューし、1枚で意思決定できる雛形を作りましょう。

株式会社キカガク:業務再現型の課題×具体レビュー。ダッシュボード設計/レポートQCまで相談しやすい。
Tech Academy:質問初動の速さ×時間帯の柔軟性。朝活/夜活でも詰まりを早期解消。

TechAcademy データサイエンスコース(受講料:174,600円~ ※更に割引あり)

TechAcademy 無料相談

株式会社キカガク AI人材長期育成コース(受講料:237,600円~)

キカガク 無料相談

読者タイプ別ロードマップ(目的に合わせて)

  • 社会人(転職):Tableau作品+Python自動PDFの二刀流でポートフォリオ化 → [内部リンク:ポートフォリオ完全ガイド]
  • 副業目的:初期構築+月次運用のセットで継続収益化 → [内部リンク:継続案件化のコツ:改善提案・レポート運用]
  • 主婦/夫(在宅):サブスク配信で深夜運用を避け、朝活/夜活で改善を回す → [内部リンク:在宅×Python:子育てと両立する1日1時間学習術]

今日やること(60分)

  1. KPI定義書テンプレをコピーし、自社用に記入
  2. 図3点のラフ(紙/ホワイトボードOK)と結論1行を書く
  3. Tableauで原型→PDFエクスポート。Pythonで同じ図を自動出力
  4. QCチェック→配信設定まで通す

次に読むべき記事

  • [内部リンク:Excel業務の自動化で月3万円:社内案件の作り方]
  • [内部リンク:初案件獲得のための提案文テンプレ【コピペ可】]
  • [内部リンク:継続案件化のコツ:改善提案・レポート運用]
  • [内部リンク:ポートフォリオ完全ガイド]
副業
Excel業務の自動化で月3万円:社内案件の作り方|“60分→10分”を商品化して社内受注する

結論:社内のExcel定型作業(集計・整形・レポート化)をPythonで自動化し、月3万円の運用費(または評価/手当)を安定的に獲得するポイントは、①時間削減の定量化(ROI)、②納品の型(再現性と検 ...

初案件
初案件はこの一通で決まる|返信率を上げる提案文テンプレ45選【コピペ可/検収基準・見積り付き】

初案件の提案、何を書けば“選ばれる”の? 長文は読まれないし、自己PRだけだと響かない…今すぐ使える“型”が欲しい! 提案は自己紹介ではなく、「相手のKPIを上げる約束」です。本記事では、現場で磨いた ...

継続案件化
単発を“毎月継続契約”に変える|週次10分レポートと改善バックログの型

単発納品を“毎月の継続契約(リテイナー)”に変えたい。結局、何から整えればいい? 毎週のレポート会って長くなりがち…。10分で意思決定まで持っていくコツは? この記事で身に付く力 単発納品をリテイナー ...

ポートフォリオ
【保存版】データ職のポートフォリオ完全ガイド|再現性・評価・LTまで

ポートフォリオって「作ったものの置き場」でしょ? いいえ。採用側が見たいのは「意思決定に効いた証拠」と「再現性」です。 本ガイドは、未経験〜初学者が週10時間×4〜6週で、テーマ選定→要件定義→データ ...

最近のコメント

    • この記事を書いた人
    • 最新記事

    ふみと

    このブログでは、データサイエンティストとして市場価値を上げる方法を独自にまとめて発信しています。

    【プロフィール】
    ・大手企業データサイエンティスト/マーケティングサイエンティスト(10年、年収900万円台)/案件100件以上
    ・資格:JDLA E資格(日本ディープラーニング協会主催)/JDLA Community(CDLE会員)/Advanced Marketer/ビジネス統計スペシャリスト/統計検定2級/TOEIC 805
    ・スキル:Python/Tableau/SQL/機械学習/Deep Learning/RPA

    -Python基礎, キャリアチェンジ/転職