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

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

結論:レポートは「データ→図」ではなく「意思決定→図」の順で設計します。
最短で伝わり、運用で“使い続けられる”型は次の4点です。

  1. 結論1行(意思決定の方向を最初に提示)
  2. 図3点(推移・分解・構成)+注釈・基準線
  3. 打ち手テーブル(根拠×期待効果×期限×担当)
  4. 再現性の担保(Tableau配信/Python自動PDF+CI)

迷ったら「結論→推移→分解→構成→打ち手→運用」。これで会議は10分で終わります。

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

  • 図は3点で十分

    • 推移(折れ線)/分解(棒・帯)/構成(100%積み上げ)。

    • 重要ポイントは 注釈(矢印+短文)と 基準線(平均・目標)で補強。

  • KPI定義が土台:単位・粒度・除外条件・タイムゾーンを先に固定。

  • “打ち手テーブル” で意思決定を加速:根拠×期待効果×期限×担当。

  • 再現性までセット:Tableauはサブスク配信、PythonはPDF自動出力。

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


よくある失敗と対策

失敗1:図が多すぎて、何を決めたいかがぼやける
対策:図は3点に制限。各図に“役割”を与え、注釈と基準線で文脈を明示。

失敗2:KPI定義が曖昧で、部署ごとに数値が合わない
対策:単位/粒度/除外/時点を定義書でロック。レビュー時はまず定義合わせ。

失敗3:納品で終わり、誰も見なくなる
対策配信運用(Tableauのサブスク/メール配信)と、毎週3分QCをセット。

筆者の現場知見:最小構成で“刺さる図”

10年・100件超の納品で最も意思決定が速かった構成は 「推移+分解+構成」 に、注釈と基準線 を添えた最小パッケージ。
以降はこの型を TableauMatplotlib の両輪で コピペ再現 できるよう整理します。

納品の型: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自動出力テンプレ(コピペ可)

何をするコード?(初心者向けの狙い)

  • CSVから売上データを読み込み
  • 日次に整形し、3つの図(推移/分解/構成) を作成
  • 1つのPDF に順番通りに保存 -(任意)メールにPDFを添付してチームへ送信

ディレクトリ構成(最小)

report/
  data/sales.csv
  src/make_report.py
  outputs/weekly_report_YYYYMMDD.pdf
  config.yaml
  README.md

config.yaml の例

date_col: date
value_col: sales
segment: category
freq: D

make_report.py(解説コメント付き)

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)

品質確認(毎回3分):図の順序/注釈/基準線が KPI定義と一致 しているかチェック。

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 学習術

今日やること(60分)

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

付録:初心者がつまずきやすいポイントQ&A

Q1. 移動平均の“窓”はなぜ7日?
週内の曜日変動を均すための初期値。週次ビジネスなら7、月次なら30を起点に実データで調整。

Q2. 欠損日があるとグラフがギザギザに…
asfreq('D') で日付を補完し、fillna(0) か 前方補完(ffill())で埋める。意味のある欠損は注釈で明記。

Q3. 構成比は円グラフではダメ?
比較が難しく誤読されやすい。横棒の並び替え が無難。どうしても円なら2〜4切れに制限。

Q4. TableauとPythonの役割分担は?
Tableauは“見る”(対話・配信)、Pythonは“再現”(自動化・メール連携)。両輪で安定運用。

次に読むべき記事

副業
Excel業務の自動化で月3万円:社内案件の作り方|“60分→10分”を商品化して社内受注する

毎週のExcel定型作業(集計・整形・レポート化)をPythonで自動化し、月3万円の運用費(または評価/手当)を安定的に社内受注するための実践ガイドです。鍵は以下の4点。 この記事は「業務棚卸し → ...

初案件
初案件はこの一通で決まる|返信率を上げる提案文テンプレ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基礎, キャリアチェンジ/転職