У меня есть список журналов пути навигации по сайту, и я хочу подсчитать, для каждой возможной пары страниц, сколько раз они появляются вместе в сеансе.
Я уже создал 2 списка, которые предоставляютвсе возможные комбинации по 2 страницы.У меня также есть список сеансов (строк), где каждая строка представляет собой последовательность страниц, разделенных запятой.
Теперь я хочу создать список, который будет подсчитывать, для каждой пары страниц, сколькосеансы они появляются вместе.Я пробовал это с циклом for, который выглядит разумным, но он слишком медленный, даже с небольшим сэмплом (он вращался часами, но еще не закончился).
# This is what I have as input data:
list1 = ['page_a','page_a','page_a','page_b','page_b','page_c']
list2 = ['page_b','page_c','page_d','page_c','page_d','page_d']
sessions = ['page_a,page_b',
'page_b,page_d,page_c',
'page_b',
'page_d,page_c,page_a,page_b,',
]
# This is the for loop I have tried, but that is way too slow:
coocurrence = []
for i in page1:
for j in page2:
counter = 0
for session in sessions:
counter += ((i in session) and (j in session))
coocurrence.append(counter)
Я ожидаю в качестве выводасписок под названием «coocurrence», где coocurrence [i] - это количество раз, когда list1 [i] и list2 [i] появляются вместе в сеансах.
В этом примере это будет:
[2,1,1,2,2,2]
Есть ли способ сделать это более эффективно?Я изначально использую PySpark, но не знаю, как это можно распараллелить ...