前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Pandas滑动窗口,揪出刷单黄牛党!

Pandas滑动窗口,揪出刷单黄牛党!

作者头像
double
发布于 2021-12-05 02:53:50
发布于 2021-12-05 02:53:50
57500
代码可运行
举报
文章被收录于专栏:算法channel算法channel
运行总次数:0
代码可运行

你好,我是 zhenguo

今天这篇文章是一个关于好玩实用的小案例,使用Pandas的滑动窗口方法确定是否存在刷单行为,给予黄牛党致命一击。

滑动窗口可能是你应用没那么多的方法,但是在处理事件序列的场景中,滑动窗口的价值凸显!

批量随机生成时间戳

实现方法

如下批量生成时间戳,random_timestamp函数中,hour传入小时(24小时制)ymd表示年月日,默认为2021-12-01

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import random
import pandas as pd

def 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()]
调用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
series = random_timestamp(9)

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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方法,求出固定滑动窗口长度的序列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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,生成随机时间戳序列,调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
series = random_timestamp(9) # hour 等于9print(series)

result = is_outlier(pd.Series(series))
print(result)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
pandas完成时间序列分析基础
pandas时间序列分析的基本操作方法 ---- ---- 文章目录 导入需要的库 时间序列 生成时间序列 truncate过滤 时间戳 时间区间 指定索引 时间戳和时间周期可以转换 数据重采样 插值方法 导入需要的库 import pandas as pd import numpy as np import datetime as dt 时间序列 时间戳(timestamp) 固定周期(period) 时间间隔(interval) 生成时间序列 可以指定开始时间与周期 H:小时 D:天
北山啦
2022/11/27
6690
pandas完成时间序列分析基础
数据导入与预处理-拓展-pandas时间数据处理02
数据导入与预处理-拓展-pandas时间数据处理01 数据导入与预处理-拓展-pandas时间数据处理02 数据导入与预处理-拓展-pandas时间数据处理03 备注:如果有帮助,欢迎点赞收藏评论一键三联哈~~
用户2225445
2022/11/12
2K0
数据导入与预处理-拓展-pandas时间数据处理02
Pandas之:Pandas简洁教程
pandas是建立在Python编程语言之上的一种快速,强大,灵活且易于使用的开源数据分析和处理工具,它含有使数据清洗和分析⼯
程序那些事
2021/06/05
1.4K0
时间序列建模的时间戳与时序特征衍生思路
时间序列模型在我们日常工作中应用的场景还是会很多的,比如我们去预测未来的销售单量、预测股票价格、预测期货走势、预测酒店入住等等,这也是我们必须要掌握时序建模的原因。而关于时间戳以及时序值的特征衍生,在建模过程中起到的作用是十分巨大的!之前写过一篇关于日期特征操作的文章——《关于日期特征,你想知道操作都在这儿~》,可以先回顾下,里面有关于日期特征的基础操作手法。
Sam Gor
2022/02/25
1.7K0
时间序列建模的时间戳与时序特征衍生思路
数据导入与预处理-拓展-pandas时间数据处理01
数据导入与预处理-拓展-pandas时间数据处理01 数据导入与预处理-拓展-pandas时间数据处理02 数据导入与预处理-拓展-pandas时间数据处理03
用户2225445
2022/11/12
6.7K0
数据导入与预处理-拓展-pandas时间数据处理01
Python 数据分析(PYDA)第三版(五)
对数据集进行分类并对每个组应用函数,无论是聚合还是转换,都可能是数据分析工作流程的关键组成部分。加载、合并和准备数据集后,您可能需要计算组统计信息或可能需要为报告或可视化目的计算数据透视表。pandas 提供了一个多功能的groupby接口,使您能够以自然的方式切片、切块和总结数据集。
ApacheCN_飞龙
2024/05/24
2790
Python 数据分析(PYDA)第三版(五)
Pandas-21.时间
Pandas-21.时间 now print(pd.datetime.now()) # 2019-04-03 23:06:58.992842 Timestamp print(pd.Timestamp("2020-1-1")) # 2020-01-01 00:00:00 print(pd.Timestamp(1588686880, unit='s')) # 2020-05-05 13:54:40 date_range print(pd.date_range("12:00", "14:30",freq="30m
悠扬前奏
2019/05/29
4880
Pandas处理时序数据(初学者必会)!
时序数据是指时间序列数据。时间序列数据是同一统一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以时点数。
Datawhale
2020/07/15
3.3K0
Pandas处理时序数据(初学者必会)!
《利用Python进行数据分析·第2版》第11章 时间序列11.1 日期和时间数据类型及工具11.2 时间序列基础11.3 日期的范围、频率以及移动11.4 时区处理时区本地化和转换11.5 时期及其
时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学、经济学、生态学、神经科学、物理学等。在多个时间点观察或测量到的任何事物都可以形成一段时间序列。很多时间序列是固定频率的,也就是说,数据点是根据某种规律定期出现的(比如每15秒、每5分钟、每月出现一次)。时间序列也可以是不定期的,没有固定的时间单位或单位之间的偏移量。时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(timestamp),特定的时刻。 固定时期(period),如2007年1月或201
SeanCheney
2018/04/24
6.7K0
《利用Python进行数据分析·第2版》第11章 时间序列11.1 日期和时间数据类型及工具11.2 时间序列基础11.3 日期的范围、频率以及移动11.4 时区处理时区本地化和转换11.5 时期及其
Pandas高级教程之:时间处理
时间应该是在数据处理中经常会用到的一种数据类型,除了Numpy中datetime64 和 timedelta64 这两种数据类型之外,pandas 还整合了其他python库比如scikits.timeseries中的功能。
程序那些事
2021/10/11
1.1K0
时间序列 | 时期(Period)及其算术运算
你可以将Period('2012','A-DEC')看做一个被划分为多个月度时期的时间段中的游标。下图对此进行了说明在将高频率转换为低频率时,超时期(superperiod)是由子时期(subperiod)所属的位置决定的。
数据STUDIO
2021/06/24
1.2K0
pandas多表操作,groupby,时间操作
使用场景:有两张表left和right,一般要求它们的表格结构一致,数据量也一致,使用right的数据去填补left的数据缺漏 如果在同一位置left与right数据不一致,保留left的数据
李智
2018/08/03
3.9K0
pandas多表操作,groupby,时间操作
Pandas处理时间序列数据-入门
在pandas中,时间戳(Timestamp,通常指的是自1970年1月1日(UTC)以来的秒数)是用于表示特定时间点的数据类型。它是pandas库中用于时间序列分析的一个重要组成部分,基于Python的datetime模块但提供了更丰富的功能。时间戳不仅包含日期(年、月、日),还包含时间(时、分、秒,以及可选的毫秒、微秒和纳秒)。
皮大大
2024/09/05
3000
pandas时间序列常用方法简介
pandas是Python数据分析最好用的第三方库,没有之一。——笛卡儿没说过这句话!
luanhz
2020/08/11
5.9K0
pandas时间序列常用方法简介
Pandas处理时间序列数据的20个关键知识点
时间序列数据有许多定义,它们以不同的方式表示相同的含义。一个简单的定义是时间序列数据包括附加到顺序时间点的数据点。
deephub
2020/09/23
2.8K0
Pandas处理时间序列数据的20个关键知识点
Pandas DateTime 超强总结
对于 Pandas 来说,可以处理众多的数据类型,其中最有趣和最重要的数据类型之一就是时间序列数据。时间序列数据无处不在,它在各个行业都有很多应用。患者健康指标、股票价格变化、天气记录、经济指标、服务器、网络、传感器和应用程序性能监控都是时间序列数据的应用方向
周萝卜
2022/05/22
5.6K0
Pandas DateTime 超强总结
python内置库和pandas中的时间常见处理(3)
时间数据在多数领域都是重要的结构化数据形式,例如金融、经济、生态学、神经科学和物理学。在多个时间点观测或测量数据形成了时间序列。多数时间序列是固定频率的,例如每1小时或每1天等。同样,时间序列也可以是不规则的,没有固定的时间单位或单位间偏移量。我们遇到的应用可能有以下几种:
python数据可视化之路
2023/02/23
1.5K0
Pandas 2.2 中文官方教程和指南(二十一·三)
这种切片方式也适用于具有DatetimeIndex的DataFrame。由于部分字符串选择是一种标签切片的形式,端点将被包括在内。这将包括在包含日期上匹配时间:
ApacheCN_飞龙
2024/05/24
2630
Data Science | 时期时间傻傻分不清楚
通过.asfreq(freq, method=None, how=None)方法可以将之前生成的频率转换成别的频率
咸鱼学Python
2019/10/09
5230
软件测试|数据处理神器pandas教程(八)
前面的文章中,我们讲解了pandas处理时间的功能,本篇文章我们来介绍pandas时间序列的处理。
霍格沃兹测试开发Muller老师
2023/04/10
1.3K0
推荐阅读
相关推荐
pandas完成时间序列分析基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验