【问题标题】:pandas products analysis getting pairs according to purchases熊猫产品分析根据购买获得对
【发布时间】:2021-09-03 03:16:46
【问题描述】:

这是我的数据框的一个示例:

df.head(10) 

 , customer_id  order_id,        product,         purchased_at
 0,   2,        2000,               B,         2021-05-01 21:51:13
 1,   1,        1996,               A,         2021-04-06 13:02:37
 2,   1,        2540,               B,         2021-05-06 16:02:37
 3,   4,        4514,               C,         2021-04-05 10:55:18
 4,   4,        4560,               D,         2021-04-10 11:56:18
 5,   5,        6899,               Y,         2021-04-07 09:53:45
 6,   2,        7891,               A,         2021-04-07 09:59:21
 7,   2,        8120,               B,         2021-06-04 09:19:41
 8,   3,        9423,               Z,         2021-03-28 15:34:29
 9,   3,        9423,               X,         2021-03-28 15:34:29
           ...            ...              ....

我想为每个客户获取哪个产品导致另一个产品,然后计算对之间的间隔,例如: 客户 1 在他的第一个订单中购买了产品 A,然后在他的第二个订单中购买了产品 B。所以产品 A 导致产品 B (A-> B) 是一对。然后计算平均间隔。

我需要您的帮助来找到最佳方法,以实现我已经解释过的内容,以及显示输出的最佳方法,以便计算这些对之间的平均间隔以及一个库以将其可视化。提前致谢。

【问题讨论】:

    标签: python pandas numpy data-science


    【解决方案1】:
    result= pd.DataFrame()
    df.purchase_at = pd.to_datetime(df.purchase_at)
    df = df.sort_values(by='purchase_at')
    unique_customers = df.customer_id.unique()
    result = pd.DataFrame()
    for customer in unique_customers:
        temp = df[df.customer_id == customer].copy()
        if len(temp) > 1:
            temp['previous_sale'] = temp['product'].shift()
            temp['previous_order_id'] = temp['order_id'].shift()
            temp['previous_sale_date'] = temp['purchase_at'].shift()
            temp['time_diff'] = temp.purchase_at.diff()
            result = result.append(temp[1:]) 
    

    【讨论】:

    • 有没有办法把previous_sale_date和order_id放在一起?
    • 我根据您的评论更改了代码。
    • 非常感谢,但还有一件事是相同的 order_id 在当前和以前的购买之间重复,导致时间差异 = 0 天 00:00:00
    • 我的代码中没有重复。我不确定你的意思。
    • 我的意思是我不希望来自同一个 order_id 的产品在同一行,就像客户 2 在订单 1 中购买产品 A 并且在订单 2 中购买产品 b 和 c由同一客户。所以客户 2 产品 b,之前销售的产品 a。和客户 2 产品 c 以前销售的产品 a。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2021-03-17
    • 1970-01-01
    相关资源
    最近更新 更多