Я загрузил CSV с 3 столбцами: метка времени, идентификатор пользователя и идентификатор кампании.
У каждого пользователя есть> 1 идентификатор кампании с отметкой времени. Необработанные данные выглядят следующим образом:
date user_id ad_campaign
0 2018-01-10 0:21:09 151312395 Search - Special
1 2018-01-10 0:21:19 151312395 Display - Branding
2 2018-01-10 0:21:32 151312395 Display - Branding
3 2018-01-10 0:21:09 151312395 Search - Special
4 2018-01-10 0:21:19 151312395 Display - Branding
5 2018-01-10 0:21:32 151312395 Display - Branding
6 2018-01-30 19:18:37 158490415 Display
7 2018-01-30 19:19:03 158490415 Display
8 2018-01-31 1:36:12 158490415 Branding
Моя цель - отобразить порядок различных идентификаторов кампании для каждого пользователя, чтобы проанализировать, какая кампания часто идет первой, второй, последней и так далее.
Я удалил дубликаты, заказал временную метку, сгруппировал по userID и поместил кампанию за пользователя в массиве.
Теперь я хочу создать цикл, который выполняет итерации по массиву каждого пользователя, а затем назначает каждой кампании для каждого пользователя «место», например 1-е, 2-е, 3-е (шаг после этого будет приписывать баллы каждой кампании в соответствии с тем, где в userjourney они, чтобы сделать мою цель более ясной). Это код, который я сейчас имею:
import pandas as pd
import numpy as np
import datetime
import os
import matplotlib.pyplot as plt
columnnames = ['date','user_id', 'ad_campaign']
df=pd.read_csv(r'C:\Users\L\Desktop\Data.csv' ,
sep='\t',names = columnnames, usecols=[0,1,4],
parse_dates=True)
df=df.drop_duplicates(subset=['user_id','date', 'ad_campaign'])
df=df.set_index('date').sort_index()
df=(df.groupby(['user_id'])['ad_campaign'].apply(list))
print(df)
Данные теперь выглядят следующим образом:
user_id
151312395 [Search - Special, Display - Branding, Display...
158490415 [Display, Display, Branding, Display, Display,...
176204518 [Display, Display, Display, Display, Pathfinde...
182053572 [Branding, Branding, Branding, Display]
Я пытался зацикливаться с помощью iterrows, itertuples, itervalues и т. Д., Но мне кажется, что я что-то упускаю из-за способа хранения этих данных, потому что я продолжаю получать разные ошибки. Какой цикл я должен использовать?