Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Pandas滑动窗口,揪出刷单黄牛党!

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

作者头像
double
发布于 2021-12-05 02:53:50
发布于 2021-12-05 02:53:50
61000
代码可运行
举报
文章被收录于专栏:算法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简洁教程
pandas是建立在Python编程语言之上的一种快速,强大,灵活且易于使用的开源数据分析和处理工具,它含有使数据清洗和分析⼯
程序那些事
2021/06/05
1.5K0
【无痛学Python】时间序列数据分析,看这一篇就够了!
时间序列就是按照时间顺序排列的一组数据序列,在生活中很多领域,在各个方面,时间序列都是很重要的结构化数据类型。毕竟时间对于人类来说,是很重要的东西。
Skrrapper
2025/06/11
2260
【无痛学Python】时间序列数据分析,看这一篇就够了!
数据导入与预处理-拓展-pandas时间数据处理02
数据导入与预处理-拓展-pandas时间数据处理01 数据导入与预处理-拓展-pandas时间数据处理02 数据导入与预处理-拓展-pandas时间数据处理03 备注:如果有帮助,欢迎点赞收藏评论一键三联哈~~
IT从业者张某某
2022/11/12
2.1K0
数据导入与预处理-拓展-pandas时间数据处理02
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
5120
Pandas处理时序数据(初学者必会)!
时序数据是指时间序列数据。时间序列数据是同一统一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以时点数。
Datawhale
2020/07/15
3.4K0
Pandas处理时序数据(初学者必会)!
Pandas高级教程之:时间处理
时间应该是在数据处理中经常会用到的一种数据类型,除了Numpy中datetime64 和 timedelta64 这两种数据类型之外,pandas 还整合了其他python库比如scikits.timeseries中的功能。
程序那些事
2021/10/11
1.2K0
pandas完成时间序列分析基础
pandas时间序列分析的基本操作方法 ---- ---- 文章目录 导入需要的库 时间序列 生成时间序列 truncate过滤 时间戳 时间区间 指定索引 时间戳和时间周期可以转换 数据重采样 插值方法 导入需要的库 import pandas as pd import numpy as np import datetime as dt 时间序列 时间戳(timestamp) 固定周期(period) 时间间隔(interval) 生成时间序列 可以指定开始时间与周期 H:小时 D:天
北山啦
2022/11/27
7110
pandas完成时间序列分析基础
数据导入与预处理-拓展-pandas时间数据处理01
数据导入与预处理-拓展-pandas时间数据处理01 数据导入与预处理-拓展-pandas时间数据处理02 数据导入与预处理-拓展-pandas时间数据处理03
IT从业者张某某
2022/11/12
6.9K0
数据导入与预处理-拓展-pandas时间数据处理01
时间序列建模的时间戳与时序特征衍生思路
时间序列模型在我们日常工作中应用的场景还是会很多的,比如我们去预测未来的销售单量、预测股票价格、预测期货走势、预测酒店入住等等,这也是我们必须要掌握时序建模的原因。而关于时间戳以及时序值的特征衍生,在建模过程中起到的作用是十分巨大的!之前写过一篇关于日期特征操作的文章——《关于日期特征,你想知道操作都在这儿~》,可以先回顾下,里面有关于日期特征的基础操作手法。
Sam Gor
2022/02/25
1.7K0
时间序列建模的时间戳与时序特征衍生思路
Pandas处理时间序列数据的20个关键知识点
时间序列数据有许多定义,它们以不同的方式表示相同的含义。一个简单的定义是时间序列数据包括附加到顺序时间点的数据点。
deephub
2020/09/23
3K0
Pandas处理时间序列数据的20个关键知识点
Data Science | 时期时间傻傻分不清楚
通过.asfreq(freq, method=None, how=None)方法可以将之前生成的频率转换成别的频率
咸鱼学Python
2019/10/09
5430
《利用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
7K0
《利用Python进行数据分析·第2版》第11章 时间序列11.1 日期和时间数据类型及工具11.2 时间序列基础11.3 日期的范围、频率以及移动11.4 时区处理时区本地化和转换11.5 时期及其
Pandas 2.2 中文官方教程和指南(二十一·一)
pandas 包含一组紧凑的 API,用于执行窗口操作 - 一种在值的滑动分区上执行聚合的操作。该 API 的功能类似于groupby API,Series和DataFrame调用具有必要参数的窗口方法,然后随后调用聚合函数。
ApacheCN_飞龙
2024/05/24
6160
Data Science | 这些时间序列的骚操作啊
pd.DatetimeIndex()可以直接生成时间戳索引,支持使用str、datetime.datetime。 单个时间戳的类型为Timestamp,多个时间戳的类型为DatetimeIndex,示例如下:
咸鱼学Python
2019/10/09
8290
pandas多表操作,groupby,时间操作
使用场景:有两张表left和right,一般要求它们的表格结构一致,数据量也一致,使用right的数据去填补left的数据缺漏 如果在同一位置left与right数据不一致,保留left的数据
李智
2018/08/03
4K0
pandas多表操作,groupby,时间操作
python内置库和pandas中的时间常见处理(3)
时间数据在多数领域都是重要的结构化数据形式,例如金融、经济、生态学、神经科学和物理学。在多个时间点观测或测量数据形成了时间序列。多数时间序列是固定频率的,例如每1小时或每1天等。同样,时间序列也可以是不规则的,没有固定的时间单位或单位间偏移量。我们遇到的应用可能有以下几种:
python数据可视化之路
2023/02/23
1.6K0
干货分享 | Pandas处理时间序列的数据
在进行金融数据的分析以及量化研究时,总是避免不了和时间序列的数据打交道,常见的时间序列的数据有比方说一天内随着时间变化的温度序列,又或者是交易时间内不断波动的股票价格序列,今天小编就为大家来介绍一下如何用“Pandas”模块来处理时间序列的数据
用户6888863
2021/07/19
1.9K0
pandas时间序列常用方法简介
pandas是Python数据分析最好用的第三方库,没有之一。——笛卡儿没说过这句话!
luanhz
2020/08/11
6.3K0
pandas时间序列常用方法简介
数据分析篇 | Pandas 时间序列 - 日期时间索引
DatetimeIndex 主要用作 Pandas 对象的索引。DatetimeIndex 类为时间序列做了很多优化:
龙哥
2019/12/22
5.8K0
时间序列 | 时期(Period)及其算术运算
你可以将Period('2012','A-DEC')看做一个被划分为多个月度时期的时间段中的游标。下图对此进行了说明在将高频率转换为低频率时,超时期(superperiod)是由子时期(subperiod)所属的位置决定的。
数据STUDIO
2021/06/24
1.2K0
推荐阅读
相关推荐
Pandas之:Pandas简洁教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验