技巧26: 使用滑动窗口找出频繁刷单用户
需求
定义在20分钟连续下单为:刷单
给你一批交易数据,类型为pd.Series
,确定这批数据是否存在频繁刷单的行为。
使用滑动窗口
Pandas的rolling
方法,求出固定滑动窗口长度的序列。
import pandas as pd
def is_outlier(time_series: pd.Series, outlier_duration=20, outlier_count=5):
"""
outlier_duration分钟内连续交易outlier_count次认为是异常
:param time_series:
:param outlier_duration:
:param outlier_count:
:return:
"""
# 排序
time_series2 = time_series.sort_values()
# 基于最早时间的时间跨度
time_delta = (time_series2 - time_series2.iloc[0]) / np.timedelta64(1, 's') / 60.
# 求得长度为outlier_count的滑动窗口的时间跨度
time_cumsum = time_delta.rolling(outlier_count).sum()
# 若outlier_count次交易的时间小于outlier_duration,就是所定义的刷单,返回True
if (time_cumsum <= outlier_duration).any():
return True
# 不存在刷单
return False
调用
使用小技巧25,生成随机时间戳序列,调用
series = random_timestamp(9) # hour 等于9点
print(series)
result = is_outlier(pd.Series(series))
print(result)
大家在看
AI安装教程
AI本地安装教程
微软AI大模型通识教程
微软AI大模型通识教程
AI大模型入门教程
AI大模型入门教程
Python入门教程
Python入门教程
Python进阶教程
Python进阶教程
Python小例子200道练习题
Python小例子200道练习题
Python练手项目
Python练手项目
Python从零在线练习题
Python从零到一60题