ノック26:利用履歴データから定期利用フラグを作成しよう
|
◯ポイント
・weekday( )は、週ナンバーを計算する。0から6が付与され、それぞれ月曜から日曜に相当する
・groupby( )では、顧客・年月・週ナンバー毎にlog_id数を集計
・rename( )で、log_idをcountへカラム名変更している
|
uselog["weekday"] = uselog["usedate"].dt.weekday
uselog_weekday = uselog.groupby(["customer_id","年月","weekday"], as_index=False).count()[["customer_id","年月","weekday","log_id"]]
uselog_weekday.rename(columns={"log_id":"count"}, inplace=True)
uselog_weekday.head()
|
|
customer_id
|
年月
|
weekday
|
count
|
0
|
AS002855
|
201804
|
5
|
4
|
1
|
AS002855
|
201805
|
2
|
1
|
2
|
AS002855
|
201805
|
5
|
4
|
3
|
AS002855
|
201806
|
5
|
5
|
4
|
AS002855
|
201807
|
1
|
1
|
|
◯ポイント
・groupby( )で、顧客毎に月内に特定の曜日で最も利用した回数を取得
・uselog_weekday["routine_flg"] = 0は、当データフレームに列を追加している。初期値に0を設定
・where( )で、条件がTrueだと元のデータを保持し、Falseの場合、other(カンマの右側)で指定された処理を実行するか値を代入します
・routine_flgは、顧客毎に月内に特定の曜日に利用している回数が4週以上の顧客は「1:定期的に利用しているユーザー」を設定
|
uselog_weekday = uselog_weekday.groupby("customer_id", as_index=False).max()[["customer_id", "count"]]
uselog_weekday["routine_flg"] = 0
uselog_weekday["routine_flg"] = uselog_weekday["routine_flg"].where(uselog_weekday["count"]<4, 1)
uselog_weekday.head()
|
|
customer_id
|
count
|
routine_flg
|
0
|
AS002855
|
5
|
1
|
1
|
AS008805
|
4
|
1
|
2
|
AS009013
|
2
|
0
|
3
|
AS009373
|
5
|
1
|
4
|
AS015233
|
5
|
1
|
|