pandas 产品分析根据购买得到配对
pandas products analysis getting pairs according to purchases
这是我的数据框示例:
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),这是一对。然后计算平均间隔。
我需要你的帮助来找到最佳方法以实现我已经解释过的内容,以及显示输出的最佳方式以计算这些对之间的平均间隔和可视化的库 it.Thank你提前。
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:])
这是我的数据框示例:
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),这是一对。然后计算平均间隔。
我需要你的帮助来找到最佳方法以实现我已经解释过的内容,以及显示输出的最佳方式以计算这些对之间的平均间隔和可视化的库 it.Thank你提前。
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:])