点击上方蓝色字体,关注程序员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滑动窗口,揪出刷单黄牛党!相关推荐

  1. 【LeetCode笔记】剑指 Offer 57- II. 和为 s 的连续正数序列(Java、滑动窗口、二刷)

    文章目录 题目描述 思路 & 代码 二刷 题目描述 花了不少时间来优化= =,很好的一道用来理解滑动窗口的题- 思路 & 代码 要点:为了 O(n) 复杂度,左右边界都只能往右走 滑动 ...

  2. pandas滑动窗口滑动整个dataframe

    pandas rolling官方文档:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rolling.html 使用roll ...

  3. pandas滑动窗口防止nan出现

    解决方法 在rolling()方法中添加参数min_periods即可 示例 import pandas as pd import numpy as npif __name__ == '__main_ ...

  4. 7亿美元融资是假 外卖刷单是真 美团自打脸

    对于美团而言,本周的日子并不好过.先是被点评.糯米.满座联合调戏一番,随后又被红杉资本站出来否定领投7亿美元,最后号称外卖业务单日突破150万单也被挖出刷单的证据,左一巴掌,又一耳光,再来一个劈头盖脸 ...

  5. 刷单入刑第一案追踪:庭审披露炒信细节,当事人黯然抹泪

    在庭审最后陈述环节,"零距网商联盟"网站创始人李壹(化名)情绪低落,他表示后悔自己的所作所为,希望减轻处罚,早日回归社会,回到父母孩子身边.言及此,他黯然抹泪. 6月20日,全国首 ...

  6. LeetCode刷题:滑动窗口模板以及典型例题

    作者:fuxuemingzhu 链接:https://leetcode-cn.com/problems/max-consecutive-ones-iii/solution/fen-xiang-hua- ...

  7. TCP协议中的核心知识点,SYN Flood?ISN?滑动窗口?数据重传?拆包粘包?单tcp连接多请求?拥塞管理?(个人收藏学习笔记)

    TCP协议中的核心知识点,滑动窗口?数据重传?拆包粘包?单tcp连接多请求? 1.前言 2.TCP/IP四层结构 3. TCP 3.1 TCP 协议头 3.2 TCP通信过程 3.2.1 建立连接的三 ...

  8. pandas之滑动窗口学习笔记(shift, diff, pct_change)

    窗口对象 pandas 中有3类窗口,分别是滑动窗口 rolling .扩张窗口 expanding 以及指数加权窗口 ewm . 滑窗对象 要使用滑窗函数,就必须先要对一个序列使用 .rolling ...

  9. pandas计算滑动窗口中的最小值实战(Rolling Minimum in a Pandas Column):计算单数据列滑动窗口中的最小值、计算多数据列滑动窗口中的最小值

    pandas计算滑动窗口中的最小值实战(Rolling Minimum in a Pandas Column):计算单数据列滑动窗口中的最小值.计算多数据列滑动窗口中的最小值 目录

最新文章

  1. [NC21228]货币系统
  2. bootstraptable获得所有行_郎酒领衔,2020“川酒全国行”首站香满花城
  3. 被黑客盯上了…数据都给打包带走了…
  4. 去中心化索引协议The Graph将于12月上线主网
  5. spring-test测试demo
  6. Atititi atiitt eam pam资产管理 购物表去年.xlsx
  7. python isnumberic用法_NETASST技术博客
  8. apktool+dex2jar+xjad反编译APK文件
  9. LINUX下DNS的查看和配置,Linux系统中查看和修改DNS配置的方法
  10. 黑马程序员--安卓22期毕业19天就业50人平均薪资8261
  11. Power bi 4.20 词云
  12. Python Spider入门
  13. csdn入门测试教程------mysql数据库命令大全以及常用命令 安装教程 基础知识 附【练习题】
  14. YUV YCbCr 区别
  15. cryengine3中lua脚本模块集成笔记
  16. 混合云的那些事:如何做到让公有云和私有云实现1+12
  17. 2019年第十六届中国研究生数学建模竞赛E题 全球变暖?【分享交流】
  18. 下载资料,站点汇总,别只知道去百度文库,既能找到好文档,还能获取收益
  19. 郭明祺:Face ID会否用在所有iPhone上,就看你们了!
  20. NBIOT上行与下行数据流程(基于华为电信物联网平台)

热门文章

  1. Python 图书信息管理系统(登录与注册)
  2. 前端笔记—从入门到坟墓[HTML][知识准备][1]
  3. oracle生成首字母,ORACLE获取汉字拼音首字母的函数
  4. 使用vue预览Word文件
  5. Halcon 深度学习(三):缺陷检测
  6. c语言排序算法(使用链表)
  7. C语言利用异或操作对数据进行加密和解密操作
  8. JS 计算单位 (万元, 亿元, 万亿)
  9. Auto.js抖音极速版、快手极速版,刷宝短视频、火山极速版自动刷看
  10. 常用实用电脑快捷键技巧!