【Python】キーブレイク処理

webページのアクセス解析を実施する際に、
ページ遷移のパターンを分析することがあると思います。

その際に使える前処理としてキーブレイクというテクニックがあります!

利用シーン
同一ページの遷移を取り除き、ユーザーが1セッション中に
どのようなページに遷移したのかを分析する際に用います。
※1セッション内に訪れたページ種類のユニークを取ることとは違います。

例えば、以下のような遷移パターンがあったとしましょう。

TOP → A → A → B → C → A → C → C → D    

#単純にページ種類のユニークを取ってしまうと
[TOP,A,B,C,D]

# こんなふうに変換したい
TOP → A → B → C → A → C → D    

Googleアナリティクスのようにアクセスログがアクション単位で残されていると、
同一のページで多数のアクションが発生した場合、同一ページのログが多数格納されてしまいます。
そうすると正確な遷移パターンを抽出することが厳しくなってしまいます。

それを防ぐためにも、キーブレイク処理を実行し、
正確なページ遷移パターンを抽出できる構造にデータを変換したいと思います。

それでは、早速処理の過程を見ていきましょう。

まずはじめに

遷移データ

['top', 'A', 'A', 'B', 'C', 'C', 'A', 'D']

整形後の形

['top', 'A', 'B', 'C', 'A', 'D']

スクリプト全体像

transition = ['top', 'A', 'A', 'B', 'C', 'C', 'A', 'D']
change_list = []
before = 0
for row in transition:
    # 1回目のときのみ実行される
    if before == 0:
        add = row
        change_list.append(add)
        before = row
    # 同一種類のときは格納されずパスされる
    elif before == row:
        continue
    # 異なる種類のデータが来たときに、データが格納される
    else:
        add = row
        change_list.append(add)
        before = row
STEP1:変数にリスト型でデータを格納
transition = ['top', 'A', 'A', 'B', 'C', 'C', 'A', 'D']
STEP2:変換後のデータ格納先

変換されたデータが、以下のリストの中に格納されます。

change_list = []
STEP3:初回のみ利用する判定フラグ
before = 0
STEP4:1回目の処理のときだけ実行される
if before == 0:
    add = row
    change_list.append(add)
    before = row

初回のデータ(今回で言うとTOP)が扱われるときは、
無条件にリストに格納されます。

第1回目のデータのみに使われる条件分岐であり、2回目以降の処理では使われません。

STEP5:条件分岐①同一種類のページが来たとき
# 同一種類のときは格納されずパスされる
elif before == row:
    continue

例えば、今回のデータ(['top', 'A', 'A', 'B', 'C', 'C', 'A', 'D'])の 2つめのAまで処理が進んだとしましょう。

その時の各変数の中身をみると

before = 'A'
row = 'A'

このように同じ値が格納されております。

上記でお伝えしたとおり、同一種類のページが来たときには、
それは格納されませんでしたね。

つまり、同一種類の場合は、beforeにもrowにも同じ値が入っているので、
処理がパスされて、次のデータを見に行きます。

STEP6:条件分岐②異なる種類のページが来たとき
else:
    add = row
    change_list.append(add)
    before = row

STEP5で同一種類のページと判定されなかった場合、STEP6が実行されます。
ここでは、同一でなかったので、結果格納先のリストに rowのデータが格納されます。

また、before = rowの部分が実行されることによって、 次の条件分岐の判別データを作成してあげることが出来ます。

まとめ

①変換用のデータをリストに変換
②格納用の空のリストを作成
③同一ページと判定されなかったものは、②で作成したリストに格納

以上がPythonでキーブレイク処理を実行し、
ページ遷移分析用のデータを生成する過程でした。

次回以降では、処理したデータを実際に用いて、
ページ遷移のパス図を作成したいと思います。

そちらもお楽しみにお待ち下さい。