首页 > 解决方案 > 在 Pandas 中计算独特的广告展示次数

问题描述

我正在使用一个相当大的数据框,其中包括三个主要列:

df = pd.DataFrame({
         'ad_id': [2441, 102, 133, 102, 102, 2441, 105, 301],
         'user_id': [665, 152, 12, 665, 11, 238, 665, 12],
         'view_time': ['09/12/2017 10:11', '11/12/2017 10:22', '1/12/2017 10:22', '11/12/2017 10:35', '11/12/2017 13:01', '11/12/2017 14:11', '11/12/2017 14:38', '11/12/2017 14:52'],
})

whereview_time似乎与 Pandas 兼容datetime

我的目标是识别并打印 4 个具有最高唯一视图数量的广告(即,特定用户在 24 小时窗口内的视图,其中在初始唯一视图之后记录的视图不计为唯一),或者,如果失败,则获得nview_time个非重复(任何给定用户的不同值)观看次数最多的广告。

我尝试使用以下内容:

df = df.groupby(by=['ad_id'], as_index=False).agg({'user_id': pd.Series.nunique, 'view_time': pd.Series.nunique})

但这似乎在计算正确的唯一视图或根据视图计数对ad_id值进行排序方面几乎没有帮助,无论它可能多么粗略。

标签: pythonpandasdatetimedataframeanalytics

解决方案


d = df.assign(
    view_time=
    pd.to_datetime(df.view_time).dt.date
).drop_duplicates()

d.groupby('ad_id').size().nlargest(4)

推荐阅读