Pandas滑动窗口,揪出刷单黄牛党!
点击上方蓝色字体,关注程序员zhenguo
你好,我是 zhenguo
今天这篇文章是一个关于好玩实用的小案例,使用Pandas的滑动窗口方法确定是否存在刷单行为,给予黄牛党致命一击。
滑动窗口可能是你应用没那么多的方法,但是在处理事件序列的场景中,滑动窗口的价值凸显!
批量随机生成时间戳
实现方法
如下批量生成时间戳,random_timestamp
函数中,hour
传入小时(24小时制)ymd
表示年月日,默认为2021-12-01
import random
import pandas as pddef random_timestamp(hour, ymd='2021-12-01'):"""生成年月日固定,分秒随机的时间戳:param ymd::param hour: 传入小时:return:"""def tstr():tms = set([random.randrange(1, 59, 2) for _ in range(20)])return [f'2020-12-01 {hour}:{ms}:{ms}' for ms in tms]return [pd.Timestamp(ws) for ws in tstr()]
调用
series = random_timestamp(9)
结果:
[Timestamp('2020-12-01 09:01:01'), Timestamp('2020-12-01 09:35:35'), Timestamp('2020-12-01 09:05:05'), Timestamp('2020-12-01 09:07:07'), Timestamp('2020-12-01 09:09:09'), Timestamp('2020-12-01 09:11:11'), Timestamp('2020-12-01 09:13:13'), Timestamp('2020-12-01 09:19:19'), Timestamp('2020-12-01 09:53:53'), Timestamp('2020-12-01 09:55:55'), Timestamp('2020-12-01 09:23:23'), Timestamp('2020-12-01 09:21:21'), Timestamp('2020-12-01 09:29:29'), Timestamp('2020-12-01 09:31:31')]
使用滑动窗口找出频繁刷单用户
需求
定义在20分钟连续下单为:刷单
给你一批交易数据,类型为pd.Series
,确定这批数据是否存在频繁刷单的行为。
使用滑动窗口
Pandas的rolling
方法,求出固定滑动窗口长度的序列。
import pandas as pddef 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,就是所定义的刷单,返回Trueif (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)
zhenguo原创精华PDF,倾情奉献给你,后台回复对应关键词下载,给文章点个赞:
Python专题 | 数据分析手册 | 算法刷题100
Pandas滑动窗口,揪出刷单黄牛党!相关推荐
- 【LeetCode笔记】剑指 Offer 57- II. 和为 s 的连续正数序列(Java、滑动窗口、二刷)
文章目录 题目描述 思路 & 代码 二刷 题目描述 花了不少时间来优化= =,很好的一道用来理解滑动窗口的题- 思路 & 代码 要点:为了 O(n) 复杂度,左右边界都只能往右走 滑动 ...
- pandas滑动窗口滑动整个dataframe
pandas rolling官方文档:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rolling.html 使用roll ...
- pandas滑动窗口防止nan出现
解决方法 在rolling()方法中添加参数min_periods即可 示例 import pandas as pd import numpy as npif __name__ == '__main_ ...
- 7亿美元融资是假 外卖刷单是真 美团自打脸
对于美团而言,本周的日子并不好过.先是被点评.糯米.满座联合调戏一番,随后又被红杉资本站出来否定领投7亿美元,最后号称外卖业务单日突破150万单也被挖出刷单的证据,左一巴掌,又一耳光,再来一个劈头盖脸 ...
- 刷单入刑第一案追踪:庭审披露炒信细节,当事人黯然抹泪
在庭审最后陈述环节,"零距网商联盟"网站创始人李壹(化名)情绪低落,他表示后悔自己的所作所为,希望减轻处罚,早日回归社会,回到父母孩子身边.言及此,他黯然抹泪. 6月20日,全国首 ...
- LeetCode刷题:滑动窗口模板以及典型例题
作者:fuxuemingzhu 链接:https://leetcode-cn.com/problems/max-consecutive-ones-iii/solution/fen-xiang-hua- ...
- TCP协议中的核心知识点,SYN Flood?ISN?滑动窗口?数据重传?拆包粘包?单tcp连接多请求?拥塞管理?(个人收藏学习笔记)
TCP协议中的核心知识点,滑动窗口?数据重传?拆包粘包?单tcp连接多请求? 1.前言 2.TCP/IP四层结构 3. TCP 3.1 TCP 协议头 3.2 TCP通信过程 3.2.1 建立连接的三 ...
- pandas之滑动窗口学习笔记(shift, diff, pct_change)
窗口对象 pandas 中有3类窗口,分别是滑动窗口 rolling .扩张窗口 expanding 以及指数加权窗口 ewm . 滑窗对象 要使用滑窗函数,就必须先要对一个序列使用 .rolling ...
- pandas计算滑动窗口中的最小值实战(Rolling Minimum in a Pandas Column):计算单数据列滑动窗口中的最小值、计算多数据列滑动窗口中的最小值
pandas计算滑动窗口中的最小值实战(Rolling Minimum in a Pandas Column):计算单数据列滑动窗口中的最小值.计算多数据列滑动窗口中的最小值 目录
最新文章
- [NC21228]货币系统
- bootstraptable获得所有行_郎酒领衔,2020“川酒全国行”首站香满花城
- 被黑客盯上了…数据都给打包带走了…
- 去中心化索引协议The Graph将于12月上线主网
- spring-test测试demo
- Atititi atiitt eam pam资产管理 购物表去年.xlsx
- python isnumberic用法_NETASST技术博客
- apktool+dex2jar+xjad反编译APK文件
- LINUX下DNS的查看和配置,Linux系统中查看和修改DNS配置的方法
- 黑马程序员--安卓22期毕业19天就业50人平均薪资8261
- Power bi 4.20 词云
- Python Spider入门
- csdn入门测试教程------mysql数据库命令大全以及常用命令 安装教程 基础知识 附【练习题】
- YUV YCbCr 区别
- cryengine3中lua脚本模块集成笔记
- 混合云的那些事:如何做到让公有云和私有云实现1+12
- 2019年第十六届中国研究生数学建模竞赛E题 全球变暖?【分享交流】
- 下载资料,站点汇总,别只知道去百度文库,既能找到好文档,还能获取收益
- 郭明祺:Face ID会否用在所有iPhone上,就看你们了!
- NBIOT上行与下行数据流程(基于华为电信物联网平台)