
“いい分析”より“伝わる納品”。副業や実務で評価されるのは、意思決定に効く1枚と再現できるパッケージを期限通り出せること。
本記事は、未経験〜初学者が 週10時間×2〜3週 で、要件定義 → データ受領 → ETL → 検証 → 可視化 → Excel/PDF納品 → 引き継ぎ を回せるように作成した“納品の型”。
そのまま使える メール文面/質問票/Excelひな形/Pythonスクリプト を付けています。
この記事で身に付く力
- 失注しないレポート納品の型(要件定義〜引き継ぎまで)
- 再現可能なパッケージ(README/版管理/実行手順)
- 現場で刺さる1枚スライドの作り方と配布テンプレ
よくある“炎上”パターンと対処の方向性
- 目的が曖昧:誰が何を決めるためのレポートか不明→指標選定がブレる。
- データの前提不足:粒度・期間・欠損/重複の扱いが曖昧→「後から数が合わない」。
- 一度きりの手作業:次月の再現に1時間以上→毎回ミス・属人化。
- 納品パッケージが雑:READMEなし・依存不明→引き継ぎ不可、信用ダウン。
解決策は、要件定義→ETL→検証→可視化→配布→引き継ぎの“型”を固定すること。
以降、現場10年で磨いた最短ルートをテンプレ付きで共有します。
筆者について(信頼性)
筆者(ふみと)は大手企業のデータ/マーケティングサイエンティスト歴10年。
役員会資料、営業ダッシュボード、月次レビューなどのべ1,000枚超を納品。
評価された共通点は、読み手の負担が小さいことと、翌月も同じ品質で出ること。
本記事はその再現に必要な雛形一式を公開します。
納品ワークフロー:10ステップ(テンプレ付き)
1. 要件定義(質問票テンプレ)
まず、誰が/いつ/何を決めるために/どの指標を/どの粒度で を固定します。
ここが曖昧だと、以降すべてがズレます。
質問票(コピペ用)
【目的】(例:翌月の販促計画の意思決定)【読み手】(例:営業Mgr・商品Mgr) 【意思決定項目】(例:重点店舗・重点カテゴリ・在庫発注) 【主要指標】(例:売上、客数、単価、CVR、粗利率) 【期間/粒度】(例:直近12ヶ月、月次/週次/日次) 【対象データ】(例:POS、在庫、広告、Web行動) 【除外/前提】(例:社販除外、欠品は0扱い、返品はマイナス) 【納品形態/期日】(例:Excel1冊+PDF1枚、毎月5営業日目) 【関係者/承認プロセス】
やりがちミス
目的欄に「分析」や「可視化」と書くのはNG。
意思決定のための道具であることを明記しましょう。
2. フォルダ構成&命名規則
再現性と引き継ぎは、構造化された箱から。以下をひな形にします。
client_xyz_report/
├─ data/
│ ├─ raw/ # 受領CSV/Excel(書換禁止)
│ └─ warehouse/ # SQLite DB
├─ src/ # スクリプト
├─ docs/ # README/要件/仕様
└─ deliverables/ # 納品(Excel/PDF/画像)
命名規則:YYYYMM_クライアント_レポート名_v1.0.xlsx(日付 → クライアント → 名称 → 版)
ポイント
data/raw は絶対に上書きしない。
ETLは常に元データから再実行できる状態を保ちます。
3. データ受領→整合チェック(チェックリスト)
受け取ったら最初の30分で粗チェックします。
- 行粒度(1行=何?)が合意済み
- 期間の欠番(祝日/閉店日)を把握
- 欠損・重複・異常値の率を算出
- 参照マスタのキー一意性を検査(
validate="many_to_one") - 前月との差分(件数/売上)の粗チェック
Tips(pandas例)
# 主要カラムの欠損・重複
df["order_id"].isna().mean(), df["order_id"].duplicated().mean()
# マスタ結合の一意性検査(カテゴリマスタ)
df.merge(cat_master, on="category", how="left", validate="many_to_one")
4. ETL(SQLite×pandasの最短パターン)
考え方:重い整形はSQLで、配布や加工柔軟性はpandasで持たせる。
コード例(最小構成)
# 1) 取り込み(例)
import sqlite3, pandas as pd
con = sqlite3.connect("data/warehouse/retail.sqlite")
df = pd.read_csv("data/raw/sales_2025-08.csv")
df.to_sql("sales", con, if_exists="append", index=False)
# 2) 月次×店舗の集計(SQLで)
q = """
WITH m AS (
SELECT strftime('%Y-%m', order\_date) AS ym, store,
SUM(qty\*price) AS sales, SUM(qty) AS qty
FROM sales WHERE qty>0 AND price>0 GROUP BY ym, store
)
SELECT \* FROM m;
"""
monthly = pd.read\_sql\_query(q, con)
con.close()
初心者向け解説
to_sqlは DataFrame → DBテーブル への書き込み。if_exists="append"で追加挿入。
strftime('%Y-%m', order_date)は 日付をYYYY-MMに丸める。月次集計の基本。
WHERE qty > 0 AND price > 0は 欠品や返品を除外する簡易な品質フィルタ。
- SQLで集約 → pandasで整形が、速度と可読性の折衷点。
5. 検証(“数合わせ”の型)
- 二重計算:全体 → 内訳合計 が一致するか
- 期間漏れ:カレンダー表に結合し 穴がないか
- 差分表:前月/前年同月比の 変化点 を抽出
- レビュー観点:
dtype明示、欠損方針コメント
コード例(差分抽出)
# 全社合計の前月差
s = (monthly.groupby("ym", as_index=False)["sales"].sum()
.assign(mom=lambda d: d["sales"].diff()))
# 変化点(しきい値は要件に合わせて調整)
alerts = s.loc[s["mom"].abs() > s["sales"].median()*0.1]
6. 可視化(伝わる1枚の型)
詳細は別記事に譲りますが、ここでは1枚スライドの配置テンプレを提示します。
- 結論1行
- 根拠図(大):月次売上トレンド+移動平均+注釈
- 補助図(小×2):上位店舗横棒/カテゴリ構成比
- 打ち手:仮説A/B(KPIの期待インパクトを明記)
ポイント
図は3つまで。注釈は「なぜそう言えるか」に集中。色は2〜3色+強調1色。
7. Excel納品の雛形(テンプレ配布)
推奨シート構成:README/Summary/Charts/Pivot/Data/Notes
import pandas as pd
from pathlib import Path
from datetime import date
path = Path("deliverables/202509\_ClientX\_月次レポート\_v1.0.xlsx")
with pd.ExcelWriter(path, engine="xlsxwriter") as xw:
\# Data
monthly.to\_excel(xw, sheet\_name="Data", index=False)
```
# Summary(例)
summary = (
monthly.groupby("ym", as_index=False)["sales"].sum()
.tail(2).assign(diff=lambda d: d["sales"].diff())
)
summary.to_excel(xw, sheet_name="Summary", index=False, startrow=2)
wb = xw.book; ws = xw.sheets["Summary"]
ws.write(0, 0, f"月次サマリ(作成日: {date.today()})")
fmt = wb.add_format({"num_format": "#,##0", "align": "right"})
ws.set_column("A:A", 10); ws.set_column("B:D", 14, fmt)
ws.freeze_panes(3, 0)
# README
ws2 = xw.book.add_worksheet("README")
ws2.write(0,0,"目的:翌月の販促計画の意思決定を支援")
ws2.write(1,0,"指標:売上、客数、単価、粗利率(定義はNotes参照)")
初心者向け解説
ExcelWriterは 複数シートに書き出すための文脈管理。withを抜けると保存されます。set_columnやfreeze_panesで 読みやすさ を先に作ると、レビューが速い。READMEシートは 目的・定義 を固定する場所。仕様書の最小単位と捉えてください。
表記ルール:桁区切り、日付はYYYY-MM、単位は万円/千円で統一。色は2〜3色+強調1色。
8. PDF化&配布(メール文面テンプレ)
メール件名:[納品] 2025年8月度_月次レポート_v1.0(Excel/PDF)
本文(コピペ可)
◯◯株式会社 ◯◯様
いつもお世話になっております。ふみとです。
以下、月次レポートの納品です。
* Excel:202509\_ClientX\_月次レポート\_v1.0.xlsx(README/定義/データ含む)
* PDF:202509\_ClientX\_月次レポート\_v1.0.pdf(1枚サマリ)
【要点】
1. 上位店舗の前年比 -12%(4月以降)。来店数の低下が主因。
2. 新商品X導入後、カテゴリYの粗利率 +2.1pt。
3. 次月の打ち手案:A) 在庫調整、B) クーポン施策。
ご確認の上、修正点があれば本メールへご返信ください。
(差分のみで結構です)
ポイント
本文に要点3つを書いておくと、関係者の合意形成が速い。
9. 修正依頼の受け方(フォーマット)
修正は1往復で終わる運用をデフォルトに。
テンプレ
【修正対象シート/セル】
【現状】
【期待する状態】
【根拠/資料】
【優先度】(高/中/低)
【希望納期】(◯/◯ 18:00まで)
運用ルール:修正〆切 と 版管理(v1.1→v1.2→v2.0) を明記します。
10. 引き継ぎ/再現性(READMEテンプレ)
環境:Python 3.10 / pandas 2.x / SQLite3(標準)
実行手順:
1) src/etl.py の init_db → load_csv_to_db → fetch_monthly
2) src/report.py の export_report を実行
3) deliverables/ に Excel/PDF 出力
データ定義:Notes シート参照
再学習・更新頻度:毎月 第5営業日
伴走の提案(短期で“毎月回る”仕組みを構築)
独学でも可能ですが、要件定義〜レビュー〜自動化までを短期で仕上げるなら、質問対応とレビューのあるスクール併用が近道。6ヶ月ロードマップに沿い、ポートフォリオに納品テンプレを組み込むのが最短です。
- 株式会社キカガク:業務再現型の課題設計と出口支援。転職直結に◎。
- Tech Academy:質問の速さ×短時間運用で継続しやすい。副業/在宅に◎。
各スクールの価格・キャンペーンは時期で変動します。最新情報をご確認ください。
TechAcademy データサイエンスコース(受講料:174,600円~ ※更に割引あり)

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

クライアント対応
Q. 前提が変わったら? → Notesに変更履歴を残し、版を上げて再納品。
Q. 数が合わない? → 粒度/期間/除外条件/基準線を一緒に確認(README参照)。
Q. ダッシュボード化したい → 同じKPI定義でPlotly/BIへ移植。
>>【保存版】可視化入門:Matplotlib/Plotlyの使い分けと“伝わるグラフ設計”10ステップ
この記事から次に読むべきもの(内部リンク)
-
-
【保存版】SQLite×Pythonで作る“ローカルDWH”|ETL・集計・レポート自動化の最短手順
ローカルでゼロ構築、ファイル1つで完結、サーバ不要。 本記事はSQLite×Pythonで“毎日回る”ETL・集計・レポート自動化を最短で作るための完全ガイドです。データ設計→DB作成→ETL(取り込 ...
-
-
はじめてのSQL:SELECT/WHERE/GROUP BYを最短で理解【コピペOK】
データ分析・自動レポート・簡易アプリの土台はSQLです。Pythonだけで押し切るより、前処理の7割をDB側で完結させる方が速く・安定します。本記事は、未経験〜初 学者が週10時間×2〜3週で、SEL ...
-
-
【実務で差がつく】pandas実践:欠損処理・結合・ウィンドウ関数・時系列・品質保証まで“読みやすく速い”型を習得
基礎文法の次は、実務で毎回出る処理を“型”として覚える段階です。 本記事は、pandas 2.x を前提に、欠損・外れ値・結合・ウィンドウ関数・時系列・カテゴリ処理・集計の自動化・大規模データの分割処 ...
-
-
【保存版】可視化入門:Matplotlib/Plotlyの使い分けと“伝わるグラフ設計”10ステップ
結論:可視化は「きれいに描く」ことではなく、意思決定を動かすための設計です。 本稿では、未経験〜初学者が 週10時間×1〜2週 で、Matplotlib/Plotlyを軸に “伝わるグラフ”の設計と実 ...
-
-
【保存版】データ職のポートフォリオ完全ガイド|再現性・評価・LTまで
ポートフォリオって「作ったものの置き場」でしょ? いいえ。採用側が見たいのは「意思決定に効いた証拠」と「再現性」です。 本ガイドは、未経験〜初学者が週10時間×4〜6週で、テーマ選定→要件定義→データ ...
最近のコメント