004—pandas 标记用户购买复购和流失行为

前言

在电商购物分析中,我们经常要分析用户的留存情况,本例需要根据购物记录标记每个用户购买、复购和流失行为,同样我们来用 pandas 实现。


需求:

如果用户上月有购物

  • 此月也有购物,标识为:复购
  • 此月无购物,标识为:流失

如果上月无购物

  • 此月有购物,标识为:购买
  • 此月无购物,标识为:「-」

使用步骤

1.引入库

代码如下(示例):

from io import StringIO
import pandas as pd

2.读入数据

代码如下(示例):

data = '''
user_id,2019-10,2019-11,2019-12,2020-01,2020-02
9794320,0,1,0,0,0
10079204,1,1,0,0,0
10280338,1,1,0,1,1
12055855,0,0,1,0,0
12936739,0,0,0,1,0
'''

df  = pd.read_csv(StringIO(data), index_col=0)
df

004—pandas 标记用户购买复购和流失行为_第1张图片

  • 一行为一个用户在不同月的购物情况,值为 1 表示用户此月有购物。
def func(some_case: tuple):
    match some_case:
        case (1, 1):
            return '复购'
        case (1, 0):
            return '流失'
        case (_, 1):
            return '购买'
        case _:
            return '-'

这个函数采用了 Python 3.10 的新语法结构化模式匹配来编写,它会判断元组的结构来进行分支运算,当两个值全为 1 是返回「复购」,当分别是 1 和 0 时返回「流失」,除以上情况外当最后一个值是 1 时返回「购买」,以上均不是时返回连字符。

# 我们将这个函数逐元素应用到数据中:
(
    pd.concat([df.shift(1, axis=1), df])
    .groupby(level=0).agg(tuple)
    .applymap(func) # 应用函数
)

004—pandas 标记用户购买复购和流失行为_第2张图片

  • 将原数据向右移一位,每个单元格构造一个元组,值为 (上月,本月),然后编写一个函数来对需求中的情况进行判断。
  • 这个函数可以用结构化模式匹配语句(match case)来完成,根据元组的模式来执行相应的填充值。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(pandas,实战案例大全,pandas)