顧客数が多い地域は、人口そのものが多い地域かもしれません。商圏を考えるときは、自社の顧客・売上と、地域の人口や世帯などを同じ単位で比べる必要があります。このページではを使う入口として、統計と行政区域を選び、地域コードで結合し、結果を確認する流れを示します。実在地域の需要予測ではなく、架空データで検証方法を学ぶためのサンプルです。
人口・世帯などの地域統計はe-Stat、地域の範囲を地図で扱うには国土数値情報の行政区域などが候補です。両者と自社データの地域・年次・単位を合わせ、結合できなかった行も別に確認します。
比較から実装の判断まで進められるよう、提供元・入力と出力・保存する情報・確認が必要なケースを共通の順序でまとめています。まず 架空データのサンプル一式をダウンロードして、処理の結果を確かめることもできます。
目的に合うデータを選ぶ
最初に決めるのは、どのデータを買うかではなく、何を比較したいかです。既存店の商圏を見直すなら顧客の分布と周辺人口、配送拠点を考えるなら訪問先と移動時間、観光需要を読むなら季節や滞在者の違いが必要になります。人口だけであらゆる商圏を説明しようとせず、今回の判断に関係する分母と対象期間を一つずつ選びます。
e-Statには人口、世帯、事業所などの統計がありますが、全てが同じ年次・地域の細かさでそろうわけではありません。統計表の調査名、対象年、単位、分類、秘匿の扱いを確認します。ダウンロードできる表が全て同じAPIで取得できるとも限らないため、目的の表を画面で確認してから取得方法を選びます。アプリケーションIDが必要な場合は公開コードに埋め込みません。
行政区域の図形は、地域の形を示すための材料です。人口を含む統計表とは別に取り込み、対応する地域コードでつなぎます。境界の基準日と統計の対象年が違うと、合併や区割り変更の影響が出る場合があります。データが結合できたことだけで正しい比較と判断せず、地域の意味と時点が一致するかを確認する工程を設けましょう。
| 知りたいこと | データ候補 | 取得方法 | 注意点 |
|---|---|---|---|
| 地域の人口・世帯・事業所 | e-Statの該当統計表 | 表のダウンロード/対象表はAPIで取得。APIは登録・IDが必要 | 統計名、年次、地域単位、単位、秘匿値を確認 |
| 地域の位置・形 | 国土数値情報・行政区域 | 対象年の地理データをダウンロード | 人口は別途結合。自治体境界に未確定・暫定の箇所がある |
| 自社顧客の分布 | 社内の顧客・取引台帳 | 必要な項目だけ抽出し、地域単位で集計 | 顧客数と購入回数を混同しない。対象期間をそろえる |
| 時間帯による需要の違い | 適切な人流・来訪者データ | 提供元ごとに対象と契約・利用条件を確認 | 居住人口とは異なる。人口比だけで代替しない |
入力と出力をサンプルで確かめる
3つの架空地域について、人口と顧客数を地域コードで結合します。顧客数÷人口×1,000で指標を出し、人口がゼロなら算出対象外にします。地図画像は結果の模式図であり、実在地域の形・人口・来訪者を示すものではありません。
全て架空データです。Python 3があれば、APIキー・追加ライブラリ・外部通信なしで実行できます。ZIPを展開し、そのフォルダで下のコマンドを実行してください。入力はinput.jsonにあります。結果は画面に出るだけで、自動保存・送信はしません。
python3 example.py# 結果をローカルファイルに保存する場合python3 example.py > result.jsonimport jsonfrom pathlib import Path
# 全て架空。人口と顧客集計を地域コードで結合する検証です。data = json.loads(Path(__file__).with_name("input.json").read_text(encoding="utf-8"))areas = {row["area_code"]: row for row in data["areas"]}counts = {}for row in data["customers"]: counts[row["area_code"]] = counts.get(row["area_code"], 0) + row["count"]result = []for code, area in areas.items(): count = counts.get(code, 0) population = area["population"] rate = round(count / population * 1000, 1) if population > 0 else None result.append({"area_code": code, "population": population, "customers": count, "customers_per_1000_residents": rate, "status": "ok" if rate is not None else "no_denominator"})unmatched = sorted(set(counts) - set(areas))print(json.dumps({"areas": result, "unmatched_codes": unmatched}, ensure_ascii=False, indent=2)){ "areas": [ { "area_code": "DEMO-A", "population": 1000, "customers": 20, "customers_per_1000_residents": 20.0, "status": "ok" }, { "area_code": "DEMO-B", "population": 2000, "customers": 10, "customers_per_1000_residents": 5.0, "status": "ok" }, { "area_code": "DEMO-C", "population": 0, "customers": 0, "customers_per_1000_residents": null, "status": "no_denominator" } ], "unmatched_codes": [ "DEMO-X" ]}地域Aは顧客20人・人口1,000人なので人口千人あたり20人、地域Bは顧客10人・人口2,000人なので5人になります。地域Cは人口ゼロのためnullです。地域コードDEMO-Xの顧客2人は結合できず、未対応コードとして出力します。分母がない値をゼロに置き換えたり、結合できない顧客を集計から黙って消したりしないことを確認できます。
この比率は売上、シェア、出店の成功率を表しません。顧客が地域外から来訪する業態では、居住人口を分母にすること自体が目的に合わない可能性があります。実データでは顧客の重複、購入の対象期間、店舗間での重複計上も確認します。計算式が動いた後に、その指標を意思決定に使ってよいかを現場の担当者と確かめることが必要です。
何をどこに保存するか
| 情報 | 本実装での保存先の例 | 残すべき状態 |
|---|---|---|
| 元の統計・境界情報 | 取得した版ごとの保存領域 | 出典、利用条件、対象年、取得日時を残す |
| 地域コードと集計値 | 分析用の集計表 | 地域コードは文字列。母数ゼロ・秘匿・未対応を区別 |
| 顧客住所などの原票 | 権限を絞った社内領域 | 公開する図やダウンロード物には含めない |
実際の地図を作るときは、まず数地域の値を表と地図の両方で照合します。色が濃いことを良い結果と決めつけず、色の意味、単位、対象年、未集計の地域を凡例に表示します。更新時に色の区切りが毎回変わると時系列の比較が難しくなるため、比較の目的に合わせて表示基準を固定するかどうかも決めます。模式図はその説明用で、位置の正確さを検証するものではありません。
取り込みでは、地域コードの桁や先頭のゼロ、政令市と区の扱い、自治体名変更などを確認します。人口表と顧客集計の両方に複数行がある状態で結合すると、件数が膨らむことがあります。対象の分類と年度を絞って地域ごとに一行にし、結合前後の件数と合計値を照合します。未対応地域を確認リストに出すことも、分析画面と同じくらい重要です。
本格的な試作では、取り込む統計表と対象地域、更新の間隔、比較指標、表示する地図、出力する集計表を先に決めます。顧客住所を外部の変換サービスへ送る必要がある場合は、送信範囲や保存条件も確認します。最初は社内で集計した地域別の件数だけでも、どんな図や指標が役に立つかを相談できます。小さな地域や少人数の集計を公開する場合は、個人が推測されないかも確認します。
導入前に確認する制約
- 対象年・地域範囲・単位が異なる表をそのまま比較しない
- 欠損・秘匿・分母ゼロを同じゼロとして塗りつぶさない
- 公的統計と自社データはそれぞれの利用条件・権限に従う。一律に同じ条件になるとは限らない
- 行政界と実際の来店圏は異なる。出店判断や需要予測を保証しない
自社の業務で試すには
「人口と顧客データを重ねた商圏分析を試作したい」という段階から相談できます。入力する項目、期待する出力、更新頻度、使う人、確認待ちになった場合の操作を整理すると、必要な試作範囲を具体的にできます。実データや秘密鍵をフォームに貼る必要はありません。まず匿名化した項目と困っている作業を教えてください。
この記事のテーマで相談する — 内容を確認して進め方を検討します。フォームを開いたり送信したりするだけで有料発注になることはありません。
関連する実装ガイド
確認した一次資料
比較の確認日は2026年10月11日です。提供元の利用条件・項目・認証・制限は変更されることがあるため、実装開始時にも公式資料を確認してください。このページのサンプルは結合や例外処理の動きを確かめるためのもので、外部APIの接続成功、実データの精度、事業成果を示すものではありません。