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で日本語テストデータを生成する

ピックアップ記事

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

関連記事

  1. ChatGPT

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

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

  2. Python

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

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

  3. Python

    Streamlitを使った簡単なデータアプリケーション作成ガイド

    はじめにこんにちは、エクスチュアの石原です。データサ…

  4. Python

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

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

  5. Python

    その分析、やり方あってる?記述統計と推測統計の違い

    こんにちは、小郷です。閲覧数のために挑発的なタイトルでイキりました(…

コメント

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

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

CAPTCHA


最近の記事

  1. Streamlit in SnowflakeによるStrea…
  2. Streamlitを使った簡単なデータアプリケーション作成ガ…
  3. 生成AI機能を活かしたデータカタログ製品「Secoda」を試…
  4. 回帰分析はかく語りき Part2 重回帰分析
  5. 第14回関西DB勉強会-Snowflake Summit参加…
  1. IT用語集

    セッション(Session)って何?
  2. Adobe Analytics

    Adobe Analytics: データフィードをBigQueryで集計する
  3. ヒートマップ

    【Tips】ヒートマップ機能について①~クリック・スクロール編~
  4. IT用語集

    仮想マシン(VM)って何?
  5. IT用語集

    コロケーション(Collocation)って何?
PAGE TOP