Competition


Titanic


ノック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