前提
お客様の回遊情報を集計し、どこのお店からどこのお店へ移動する経路が多いのかを可視化したいです。
実現したいこと
pythonで回遊情報の集計をし、経路分析を実現したいです。
発生している問題・エラーメッセージ
現状、Excelにて頑張っています。
SUBPRODUCT関数でお客様ごとにお店の順番までは出せたんですが
各お店同士の経路関係を集計する方法がわからずスタックしました。。。
■下データ
下記のようなお客様別の時系列データが数万行あります。
CustomerID | Time | store |
---|---|---|
1 | 10 | A store |
1 | 11 | B store |
1 | 12 | C store |
1 | 14 | A store |
2 | 10 | D store |
2 | 11 | A store |
3 | 19 | C store |
3 | 20 | A store |
4 | 10 | C store |
■欲しい結果
経路ごとにパターンを洗い出し、人数集計を出したいです。
spot1 | spot2 | spot3 | spot4 | value |
---|---|---|---|---|
A store | - | - | - | 10 |
A store | B store | - | - | 30 |
A store | B store | C store | - | 50 |
A store | B store | C store | D store | 50 |
他のパターンも同様に集計したいです。
試したこと
ExcelのSubproduct関数を用いて
CustomerID別に各お店の順番を算出し下記のデータまでは作れています。
CustomerID | Time | store | order |
---|---|---|---|
1 | 10 | A store | 1 |
1 | 11 | B store | 2 |
1 | 12 | C store | 3 |
1 | 14 | A store | 4 |
2 | 10 | D store | 1 |
2 | 11 | A store | 2 |
3 | 19 | C store | 1 |
3 | 20 | A store | 2 |
4 | 10 | C store | 1 |
サンキーダイヤグラムはおそら下記でも作れるかなと思っています。
各お店間の相互方向と人数の集計さえできれば描画出来そうと思います。
python
1import pandas as pd 2 3data = [ 4 ["A store", "B store", 8], 5 ["A store", "C store", 4], 6 ["A store", "D store", 2], 7 ["B store", "C store", 8], 8 ["B store", "D store", 4], 9 ["C store", "D store", 2], 10] 11 12df = pd.DataFrame(data).rename( 13 {0: "from", 1: "to", 2: "value"}, 14 axis="columns", 15) 16 17 18import holoviews as hv 19hv.extension('bokeh') 20from holoviews import opts, dim 21 22basic_sankey = hv.Sankey( 23 df, 24 kdims=["from", "to"], 25 vdims=["value"], 26 label="Basic Sankey Diagram", 27).opts( 28 edge_color=dim("from").str(), 29) 30 31# Display the diagram in Jupyter. 32hv.ipython.display(basic_sankey)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。