在电商购物分析中,我们经常要分析用户的留存情况,本例需要根据购物记录标记每个用户购买、复购和流失行为,同样我们来用 pandas 实现。
代码如下(示例):
from io import StringIO
import pandas as pd
代码如下(示例):
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
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) # 应用函数
)
以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。