Python

pythonを使ったダミーデータ生成

最初に

なにか発見したことを総合研究所で発表したり、デモ資料を作ったりする時に顧客の実データを持ち出すわけにはいきません。
そのようなときにダミーのデータをつくれると大変便利です。
ただ、データ分析において完全に適当なデータを用いてデモをしても実用性に乏しいと考えられるのでできる限り実データに近いものを生成できるように試行錯誤してみました。
また、記事を書くにあたってPythonのNumPyとFakerパッケージを使ってダミーデータを作成するを参考にさせていただいております。

目標

渋谷区に存在する小売店Extureのダミーデータをつくります。
Extureは購買層の男女比6:4,購入額の中央値¥6000,顧客10万人の小規模商業施設です。
年齢層は18-60まで一様分布で存在しているものとします。

試行錯誤

まず必要なものをインポートします

まずはidです。たんに1から順にidを振ってあげてもよいのですが、少し寂しいのでハッシュ化しておきます。
次にメールアドレスです。こちらもハッシュ化するべきなのでしょうが、今回はFakerのデモも兼ねているということでそのままで放置しておきます。
メールデータが入手出来ているのはそれほど多くないだろうと考えられるので(そういう設定なので)だいたい14%ぐらいしかデータが入っていないことにします。
また、IDが一括管理されていないかもしれません。Exture社は会員の加入率90%を誇る独自アプリをもっており、それぞれの顧客はアプリのIDも持っているものとします。こちらは数字で適当に振ってやりますが、5桁で0埋めしてやることにします。(‘00001’のようにするということです)

次に、顧客の住所を市区町村の単位で振り分けてやります。
Fakerを使えばダミーの郵便番号や住所を作ることも一発でできるのですが、今回はExture社は渋谷区に一店舗しかなく、関東以外の顧客のデータは持っていないものとします。
前回までに作った関東の市区町村一覧を利用します。
関東の市区町村一覧のテーブルは以下のようになっています。


city_sizeが0のものは普通の市町村、1のものは政令指定都市、3のものは23区で割り振られているので(詳しくは該当記事をご覧ください)それぞれ適当な割合で割り振ってやります。
性別は6:4で割り振ってやります。
フラグやダミー変数はrandomで振り分けてやってもよいですがウエイトを付けて割り振る方法をとっています。

最後に購入額です。Extureは客単価(年)の中央値は6000円ほどです。
ただ、購入額は正規分布ではなく、平均値と中央値にずれがあり、一部の太客が平均値を吊り上げている分布で作ります。
このような分布は対数正規分布で作成できます。対数正規分布とは下図のようなものです。

年収の分布に何となく似ていそうだということは分かってもらえるかと思います。
今回は中央値¥6000で作成します。

ちなみにこのデータだと中央値6000,平均8000となっておりまさに狙い通りのデータが作れています。
最終的に作成したデータがこちらです。

考えているより”詰まっている”感じがしました。こんなにきれいにデータが取れていることは少ないのでもう少し空行を増やせばよかったと思います。
実際にデモデータとしてダミーを作成するときは実データの分布やカラム数を確認して作りましょう。
なにはともあれこれで完成です!
次回は前回までに作成したExtureまでのドライブ時間のTableauとこのデータを組み合わせてドライブ時間による顧客の分析を行いたいと思います。
それでは。

参照サイト

PythonのNumPyとFakerパッケージを使ってダミーデータを作成する
Pythonのfakerで日本語テストデータを生成する

DirectionAPI+Tableauでドライブ時間の可視化(後編)前のページ

Looker: エンジニアがBIで分析ダッシュボードを作る次のページ

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Python

    回帰分析はかく語りき Part1 単回帰分析

    こんにちは、小郷です。回帰と言えばフリードリヒ・ニーチェの永劫回帰を…

  2. Python

    わかりやすいPyTorch入門②(ニューラルネットワークによる分類)

    ニューラルネットワークを使ってワインの種類を分類する今回はsciki…

  3. Python

    市区町村一覧・自治体の一覧を取得する

    最初に顧客マスタには郵便番号や市区町村をデータを持っていることが多い…

  4. ChatGPT

    LangChainって何?: 次世代AIアプリケーション構築 その2

    こんにちは、エクスチュアの石原です。こちらは第2回の記事にな…

  5. Python

    わかりやすいPyTorch入門①(学習と評価)

    Google ColabでPyTorchを触ってみるまずはGoogl…

  6. Python

    わかりやすいPyTorch入門⑤(CNNとデータの拡張)

    CNNとデータの拡張データの拡張とは今回は前回学んだCNNの練習に…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


カテゴリ
最近の記事
  1. dbt Projects on SnowflakeをTASK…
  2. AWS発のAIエージェントIDE「Kiro」を使用した仕様駆…
  3. AWS発のAIエージェントIDE「Kiro」を使用した仕様駆…
  4. TableauとSnowflakeを接続する方法
  5. 【dbts25】Snowflake×PostgreSQLのニ…
  1. コンバージョンファネル

    【Tips】ファネル機能について
  2. Mouseflow

    Mouseflow:ヒートマップ表示の仕様
  3. Adobe Analytics

    リアルタイムとは-Adobe Analyticsの指標説明
  4. GA 360 Suite

    BigQuery: Google Analytics 360のネストされたデータ…
  5. Tableau

    Tableau:KPI達成状況を把握出来るグラフを作る
PAGE TOP