iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >pandas库之DataFrame滑动窗口如何实现
  • 732
分享到

pandas库之DataFrame滑动窗口如何实现

2023-07-05 19:07:46 732人浏览 薄情痞子
摘要

今天小编给大家分享一下pandas库之DataFrame滑动窗口如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。(1)

今天小编给大家分享一下pandas库之DataFrame滑动窗口如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

(1)DataFrame的滑动窗口

提供滑动窗口计算,可用于时间序列(时间和日期)数据

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, method='single')

参数:

window:int, offset, or BaseIndexer subclass
移动窗口的大小,如果是整数,代表每个窗口覆盖的固定数量;如果是offset(pandas时间序列),代表每个窗口的时间段,每个窗口的大小将根据时间段中包含的观察值而变化,仅对datetimelike索引有效。

min_periods:int, default None
窗口计算值要求至少有min_periods个观测值。窗口由时间类型指定,则min_periods默认为1,窗口为整数,则min_periods默认为窗口大小

center:bool, default False
是否将窗口中间索引设为窗口计算后的标签

win_type:str, default None
观测值的权重分布。如果为None,则所有点的权重均相等。如果是字符串,要求是 scipy.signal window function函数

on:str, optional
对于 DataFrame,计算滚动窗口所依照的列标签或索引级别,而不是 DataFrame 的索引

axis:int or str, default 0
如果是0或’index’,按行滚动;如果是1或’columns’,按列滚动

closed:str, default None
‘right’:窗口中的第一个点将从计算中排除;‘left‘:窗口中的最后一个点将从计算中排除;‘both’:窗口中没有点将从计算中排除;‘neither’:窗口中的第一个点和最后一个点将从计算中排除;默认’right’

Example

窗口大小为2的求和

>>> import pandas as pd>>> import numpy as np>>> df = pd.DataFrame({'B':[0,1,2,np.nan,4]})>>> df     B0  0.01  1.02  2.03  NaN4  4.0>>> df.rolling(2).sum()     B0  NaN1  1.02  3.03  NaN4  NaN

窗口为2s的求和

>>> df_time = pd.DataFrame({'B':[0,1,2,np.nan,4]},       index = [       pd.Timestamp('20130101 09:00:00'),   pd.Timestamp('20130101 09:00:02'),   pd.Timestamp('20130101 09:00:03'),    pd.Timestamp('20130101 09:00:05'),   pd.Timestamp('20130101 09:00:06')])                                                   >>> df_time                       B2013-01-01 09:00:00  0.02013-01-01 09:00:02  1.02013-01-01 09:00:03  2.02013-01-01 09:00:05  NaN2013-01-01 09:00:06  4.0>>> df_time.rolling('2s').sum()                       B2013-01-01 09:00:00  0.02013-01-01 09:00:02  1.02013-01-01 09:00:03  3.02013-01-01 09:00:05  NaN2013-01-01 09:00:06  4.0

有 2 个观测值的前视窗口的滚动求和(a和a+1)

# 设置前向窗口>>> indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=2)>>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})>>> df.rolling(window=indexer,min_periods=1).sum()     B0  1.01  3.02  2.03  4.04  4.0

窗口长度为 2 个观测值的滚动和,但至少需要 1 个观测值才可计算值

>>> df.rolling(2,min_periods=1).sum()     B0  0.01  1.02  3.03  2.04  4.0

滚动总和,并将结果分配到窗口索引的中心

>>> df.rolling(3, min_periods=1, center=True).sum()     B0  1.01  3.02  3.03  6.04  4.0>>> df.rolling(3, min_periods=1, center=False).sum()     B0  0.01  1.02  3.03  3.04  6.0

高斯分布窗口

>>> df.rolling(2,win_type='gaussian').sum(std=3)          B0       NaN1  0.9862072  2.9586213       NaN4       NaN

(2)pandas的窗口操作

窗口由从当前观测值回溯窗口长度组成

>>> import pandas as pd>>> s = pd.Series(range(5))>>> s0    01    12    23    34    4dtype: int64# 5个分区>>> for window in s.rolling(window=2):print(window)0    0dtype: int640    01    1dtype: int641    12    2dtype: int642    23    3Dtype: int643    34    4dtype: int64

panadas支持4种窗口操作

  • Rolling window:值的固定/变动的滑动窗口

  • Weighted window:由 scipy.signal 库提供的加权非矩形窗口

  • Expanding window:值的累积窗口

  • Exponentially Weighted window:值的累积和指数加权窗

pandas库之DataFrame滑动窗口如何实现

其中滑动窗口支持时间序列的计算

>>> s = pd.Series(range(5),index = pd.date_range('2020-01-01',periods=5,freq='1D'))>>> s2020-01-01    02020-01-02    12020-01-03    22020-01-04    32020-01-05    4Freq: D, dtype: int64>>> s.rolling(window='2D').sum()2020-01-01    0.02020-01-02    1.02020-01-03    3.02020-01-04    5.02020-01-05    7.0Freq: D, dtype: float64

部分窗口支持先分组再执行窗口操作

>>> df = pd.DataFrame({'A':['a', 'b', 'a', 'b', 'a'],'B':range(5)})>>> df   A  B0  a  01  b  12  a  23  b  34  a  4>>> df.groupby('A').expanding().sum()       BA       a 0  0.0  2  2.0  4  6.0b 1  1.0  3  4.0

Rolling window

>>> times = ['2020-01-01', '2020-01-03', '2020-01-04', '2020-01-05', '2020-01-29']>>> s = pd.Series(range(5),index = pd.DatetimeIndex(times))>>> s2020-01-01    02020-01-03    12020-01-04    22020-01-05    32020-01-29    4dtype: int64# 两个观测值的窗口>>> s.rolling(2).sum()2020-01-01    NaN2020-01-03    1.02020-01-04    3.02020-01-05    5.02020-01-29    7.0dtype: float64# 两天的窗口>>> s.rolling('2D').sum()2020-01-01    0.02020-01-03    1.02020-01-04    3.02020-01-05    5.02020-01-29    4.0dtype: float64

Centering windows

窗口计算后默认标签是窗口的最后一个,center可以使中间索引作为标签

>>> s = pd.Series(range(10))>>> s.rolling(window=5).mean()0    NaN1    NaN2    NaN3    NaN4    2.05    3.06    4.07    5.08    6.09    7.0dtype: float64>>> s.rolling(window=5, center=True).mean()0    NaN1    NaN2    2.03    3.04    4.05    5.06    6.07    7.08    NaN9    NaNdtype: float64

Rolling apply

自定义窗口计算公式

>>> import numpy as np>>> def mad(x):return np.fabs(x - x.mean()).mean()>>> s = pd.Series(range(10))>>> s.rolling(window=4).apply(mad, raw=True)0    NaN1    NaN2    NaN3    1.04    1.05    1.06    1.07    1.08    1.09    1.0dtype: float64

Weighted window

为窗口中的值添加权重

>>> s = pd.Series(range(10))>>> s.rolling(window=5, win_type="gaussian").mean(std=0.1)0    NaN1    NaN2    NaN3    NaN4    2.05    3.06    4.07    5.08    6.09    7.0dtype: float64

以上就是“pandas库之DataFrame滑动窗口如何实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: pandas库之DataFrame滑动窗口如何实现

本文链接: https://www.lsjlt.com/news/354775.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pandas库之DataFrame滑动窗口如何实现
    今天小编给大家分享一下pandas库之DataFrame滑动窗口如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。(1)...
    99+
    2023-07-05
  • pandas库之DataFrame滑动窗口的实现
    目录(1)DataFrame的滑动窗口Example(2)pandas的窗口操作Rolling windowCentering windowsRolling applyWeighte...
    99+
    2023-05-13
    pandas DataFrame滑动窗口 pandas 滑动窗口
  • pandas如何实现滑动窗口
    今天小编给大家分享一下pandas如何实现滑动窗口的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。介绍窗口函数(Window ...
    99+
    2023-07-05
  • pandas实现滑动窗口的示例代码
    目录介绍示例数据移动平均值移动总和最大值和最小值结论介绍 窗口函数(Window Function)是一种在关系型数据库中使用的函数,通常用于计算某个范围内的数据。在数据分析中,窗口...
    99+
    2023-05-13
    pandas 滑动窗口
  • Java 滑动窗口最大值的实现
    一、题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口...
    99+
    2024-04-02
  • 如何使用Pandas实现MySQL窗口函数
    今天小编给大家分享一下如何使用Pandas实现MySQL窗口函数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言环境:...
    99+
    2023-07-05
  • redis zset实现滑动窗口限流的代码
    目录限流redis zset特性滑动窗口算法java代码实现补充:Redis zSet实现滑动窗口对短信进行防刷限流前言示例代码限流 需求背景:同一用户1分钟内登录失败次数超过3次,...
    99+
    2024-04-02
  • Java C++分别实现滑动窗口的最大值
    目录1、题目2、思路3、c++代码4、java代码1、题目 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 提示: 你可以假设 k 总是有效的...
    99+
    2024-04-02
  • golang实现时间滑动窗口的示例代码
    目录一 概念二 go-zero中的滑动窗口实现1.Bucket 样本窗口2. window 滑动窗口3. RollingWindow窗口三 使用一 概念 固定窗口...
    99+
    2024-04-02
  • ASP.NET Core基于滑动窗口实现限流控制
    目录前言:二、固定窗口算法三、滑动窗口算法四、实现六、使用结论:前言: 在实际项目中,为了保障服务器的稳定运行,需要对接口的可访问频次进行限流控制,避免因客户端频繁请求导致服务器压力...
    99+
    2024-04-02
  • javascript中如何实现浮动窗口
    小编给大家分享一下javascript中如何实现浮动窗口,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • C#如何实现窗口抖动效果
    这篇文章主要介绍C#如何实现窗口抖动效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先,在窗口中添加一个按钮:C#窗口抖动图在按钮中输入一下代码:即:int recordx = th...
    99+
    2023-06-17
  • ASP.NET Core基于滑动窗口实现限流控制的方法
    今天小编给大家分享一下ASP.NET Core基于滑动窗口实现限流控制的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-06-29
  • Pandas如何实现DataFrame运算、统计与排序操作
    这篇文章主要介绍Pandas如何实现DataFrame运算、统计与排序操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!由于DataFrame的数据结构中包含了多行、多列,所以DataFrame的计算与统计可以是用行...
    99+
    2023-06-29
  • jQuery如何实现弹窗下底部页面禁止滑动效果
    小编给大家分享一下jQuery如何实现弹窗下底部页面禁止滑动效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在项目开发过程中,...
    99+
    2024-04-02
  • jQuery如何实现弹出窗口
    这篇文章主要介绍jQuery如何实现弹出窗口,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!今天讲了Jquery的弹出窗口的组成和用法:先把引用文件的代码写好:// 每个弹窗...
    99+
    2024-04-02
  • javascript如何实现窗口置顶
    这篇文章主要介绍javascript如何实现窗口置顶,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! javascript实现窗口置顶的方法:1、创建一个前...
    99+
    2024-04-02
  • java如何实现登录窗口
    本篇内容介绍了“java如何实现登录窗口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!登录窗口主类package ccnu.pai...
    99+
    2023-06-30
  • AmazeUI如何实现模态窗口
    这篇文章主要介绍AmazeUI如何实现模态窗口,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现代码如下所示:<!doctype html><html class="n...
    99+
    2023-06-09
  • javascript如何实现弹出窗口
    小编给大家分享一下javascript如何实现弹出窗口,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法:1、使用alert()实现警告框窗口,语法“alert(...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作