Skip to content

pandasのクロス集計を実行します。

架空データの作成

python
import random
import datetime
import pandas as pd

# 架空の行動履歴作成
def make_probe(_list, s, e):
    for _id in range(s, e):
        # 立ち寄りスポット数
        spot_num = random.randint(1, 5)
        for i in range(spot_num):
            spot1 = random.randint(1, 5)
            spot2 = random.randint(1, 5)
            _list.append([_id+1, f'spot_{spot1}', f'spot_{spot2}'])
    return _list

# 行動履歴作成
probe_list = 
probe_list = make_probe(probe_list, 0, 400)

# データフレーム化
df = pd.DataFrame(probe_list, columns=['id', 'o_spot', 'd_spot'])
df.head()
ido_spotd_spot
01spot_5spot_2
11spot_3spot_3
21spot_3spot_2
31spot_3spot_1
42spot_5spot_1

pandasのクロス集計

python
# クロス集計
df_crosstab = pd.crosstab(df['o_spot'], df['d_spot'])
df_crosstab
o_spot/d_spotspot_1spot_2spot_3spot_4spot_5
spot_15354534440
spot_25448404455
spot_33738574856
spot_44742426240
spot_55350644445

まとめ

pandasのクロス集計を実行しました。

参考サイト