У меня есть данные на уровне пользователя и просмотра страницы, и я пытаюсь разработать матрицу, в которой процент времени просмотра двух элементов одним и тем же пользователем. Неудивительно, что разработанный мной вложенный цикл чрезвычайно неэффективен. Я знаю, что здесь должна использоваться лямбда-функция, но у меня возникают проблемы с получением функции, которая на самом деле вычисляет то, что мне нужно:
data = [['tom', '1'], ['nick', '1'], ['julie', '1'], ['tom', '2'], ['julie', '2'], ['tom', '3'], ['julie', '3']]
visits_comb = pd.DataFrame(data, columns = ['USER_ID', 'PAGE_CLICKED'])
visits_comb
page_id=pd.DataFrame(visits_comb.PAGE_CLICKED.unique(),columns=['PAGE_CLICKED'])
page_id
sim_mat=np.zeros(shape=(len(page_id),len(page_id)))
for index, row in page_id.iterrows():
base_page=row['PAGE_CLICKED']
for index2, row2 in page_id.iterrows():
comparison_page=row2['PAGE_CLICKED']
if base_page<comparison_page:
sessions=visits_comb[visits_comb['PAGE_CLICKED'].map(lambda x: x in [base_page,comparison_page])].groupby('USER_ID')['PAGE_CLICKED'].apply(lambda x: x.unique().shape[0])
sim_mat[index][index2]=sessions.value_counts(2)[2]
print(sim_mat)