Mini Project)ショッピングモールの注文データを利用してデータ分析を行う-(5)ログデータを理解し、お客様がページを離れることを確認する
5.ログデータを理解し、顧客ページから離れることを確認する
データ検証
(1)Library and Data Import
import pandas as pd
import numpy as np
logs = pd.read_csv('../data/web.log',
sep='\s',
engine='python',
names=['ip', 'session_id', 'user_id', 'datetime', 'request', 'url', 'status', 'bytesize'])
logs.head()
今回のデータは、これまで4編使っていたショッピングサイトの販売データではなく、Webサーバのログデータです.Webサーバログデータは
ipセッションアイデンティティユーザ識別子(id)ビジュアルリクエストページステータスコードバイトサイズ
ログ情報の確認
log.info()
日付書式の変換
logs['datetime'] = logs['datetime'].apply(lambda date: date.replace('[', '').replace(']', ''))
logs['datetime'] = pd.to_datetime(logs['datetime'], format='%d/%b/%YT%H:%M:%S')
logs.head()
最終ステップDataFrameの作成
罰とは何ですか.
ユーザーがサービスに接続した後に商品を購入する経路を可視化し、転換と移転率を測定することで、ページの機能改善に重点を置くことが分かった.
ここでは全部で4つのステップ(商品リスト-商品詳細-ショッピングバスケット-購入済み)に分かれています.
funnel_dict = {'/product_list': 1,
'/product_detail': 2,
'/cart': 3,
'/order_complete': 4}
funnel_steps = pd.DataFrame.from_dict(funnel_dict, orient='index', columns=['step_no'])
funnel_steps
セッションとurlにグループ化
ユーザIDではなくセッションベースの理由は、同じユーザが別のセッションに接続される可能性があるため、この場合、独立したイベントと見なすべきである.
セッションIDとurlを使用してグルーブを行い、最初のイベントを抽出します.
grouped = logs.groupby(['session_id', 'url'])['datetime'].agg(np.min)
grouped = pd.DataFrame(grouped).merge(funnel_steps, left_on='url', right_index=True)
grouped
個人用テーブルの作成
ステップごとに順番に列に入るように変更
funnel = grouped.reset_index().pivot(index='session_id', columns='step_no', values='datetime')
funnel.columns = funnel_steps.index
funnel.head()
たとえば、/product detailまで時間レコードがあり、/cartのNATである場合、ユーザはproduct detailページから購入せずに終了したことを示す.
逆数計算
-ステップごとのカウント
step_values = [funnel[index].notnull().sum() for index in funnel_steps.index]
step_values
今回のデータの出力は[419,351,261,84]である.これは、最後のページが登場するにつれて、顧客数がますます少なくなっていることを意味します.最後に、ployを使用してパネルをグラフィカルに表示します.
def show_funnel(funnel_values, funnel_steps):
from plotly import graph_objects as go
fig = go.Figure(go.Funnel(
y = funnel_steps,
x = funnel_values
))
fig.show()
show_funnel(step_values, funnel_steps.index)
このように最終ステップをグラフで表示できます.ployを使用する場合は、マウスポインタで各レバーの合計パーセントを表示することもできます.ここで最後のページの割合は約20%です.
パネルあたりの平均消費時間の計算
np.mean(funnel['/product_detail'] - funnel['/product_list'])
Timedelta('0 days 00:16:50.635327635')カタログページと商品詳細ページの間の時間は約17分です.
np.mean(funnel['/cart'] - funnel['/product_detail'])
Timedelta('0 days 00:18:42.804597701')商品の詳細からショッピングバスケットまで、約19分あります.
np.mean(funnel['/order_complete'] - funnel['/cart'])
Timedelta('0 days 00:33:35.904761904')買い物かごから注文完了まで、約33分35秒.
どうしてこんなに時間がかかるんだろう…?
Mini Project)はショッピングモールの注文データを用いてデータ分析を終了する.
Reference
この問題について(Mini Project)ショッピングモールの注文データを利用してデータ分析を行う-(5)ログデータを理解し、お客様がページを離れることを確認する), 我々は、より多くの情報をここで見つけました https://velog.io/@kmnkit/Mini-Project쇼핑몰-주문-데이터를-활용한-데이터분석-5Log데이터를-파악하여-고객-이탈-페이지-확인하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol