为了处理数字数据,Pandas提供了几个变体,如滚动,展开和指数移动窗口统计的权重。 其中包括总和,均值,中位数,方差,协方差,相关性等。本章讨论的是在DataFrame对象上应用这些方法。

.rolling()函数

这个函数可以应用于一系列数据。指定window=n参数,并应用适当的统计函数。

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(10, 4),index = pd.date_range('1/1/2020', periods=10),columns = ['A', 'B', 'C', 'D']) print(df)
print('\n') print (df.rolling(window=3).mean())

输出结果 :

                   A         B         C         D
2020-01-01 0.517788 0.524324 0.723912 -0.316153
2020-01-02 0.553257 -0.489424 -0.942906 -0.002625
2020-01-03 -0.113628 0.291778 -1.216583 1.192297
2020-01-04 0.549378 2.526383 -1.006843 -0.209177
2020-01-05 0.646680 0.249695 -0.420748 0.502700
2020-01-06 -0.323045 -0.962962 0.035932 -1.342486
2020-01-07 -1.209534 0.138791 0.756402 0.229242
2020-01-08 -0.473912 -1.734865 0.269594 -0.293566
2020-01-09 2.144167 0.508603 0.076023 -0.246540
2020-01-10 -0.199808 0.887562 0.196244 0.831584 A B C D
2020-01-01 NaN NaN NaN NaN
2020-01-02 NaN NaN NaN NaN
2020-01-03 0.319139 0.108892 -0.478526 0.291173
2020-01-04 0.329669 0.776245 -1.055444 0.326831
2020-01-05 0.360810 1.022618 -0.881391 0.495273
2020-01-06 0.291004 0.604372 -0.463887 -0.349655
2020-01-07 -0.295300 -0.191492 0.123862 -0.203515
2020-01-08 -0.668830 -0.853012 0.353976 -0.468937
2020-01-09 0.153574 -0.362490 0.367340 -0.103622
2020-01-10 0.490149 -0.112900 0.180621 0.097159

注 - 由于窗口大小为3(window),第三个元素的值将是nn-1n-2元素的平均值。所以这样也可以应用上面提到的各种函数了。

.expanding()函数

这个函数可以应用于一系列数据。 指定min_periods = n参数并在其上应用适当的统计函数。

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2018', periods=10),
columns = ['A', 'B', 'C', 'D']) print(df)
print('\n') print (df.expanding(min_periods=3).mean())

输出结果:

                   A         B         C         D
2018-01-01 0.246692 0.511610 -0.440860 -0.241488
2018-01-02 -0.287958 1.554392 -0.870998 -0.141933
2018-01-03 -0.219975 -0.217251 3.032686 -0.800669
2018-01-04 -0.297885 0.336629 -0.313112 -0.633826
2018-01-05 -0.226151 -0.266663 0.988562 -0.424164
2018-01-06 -0.641176 -2.556270 1.907479 0.779536
2018-01-07 0.022907 -0.333231 1.784900 1.075321
2018-01-08 -1.045178 0.295636 0.127447 -1.417171
2018-01-09 1.048741 0.841395 0.104583 1.015302
2018-01-10 -0.209738 0.333223 -1.279857 -0.380164 A B C D
2018-01-01 NaN NaN NaN NaN
2018-01-02 NaN NaN NaN NaN
2018-01-03 -0.087081 0.616250 0.573609 -0.394697
2018-01-04 -0.139782 0.546345 0.351929 -0.454479
2018-01-05 -0.157056 0.383744 0.479256 -0.448416
2018-01-06 -0.237742 -0.106259 0.717293 -0.243757
2018-01-07 -0.200507 -0.138683 0.869808 -0.055318
2018-01-08 -0.306091 -0.084393 0.777013 -0.225549
2018-01-09 -0.155554 0.018472 0.702299 -0.087677
2018-01-10 -0.160972 0.049947 0.504083 -0.116926

.ewm()函数

ewm()可应用于系列数据。指定comspanhalflife参数,并在其上应用适当的统计函数。它以指数形式分配权重。

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2019', periods=10),
columns = ['A', 'B', 'C', 'D']) print(df)
print('\n') print (df.ewm(com=0.5).mean())

输出结果:

                   A         B         C         D
2019-01-01 1.204552 -0.936226 0.629811 -0.424075
2019-01-02 0.593300 -0.356715 0.313949 0.547324
2019-01-03 0.545719 -1.061298 0.578605 -0.290907
2019-01-04 -1.146018 1.585733 0.520032 -0.705019
2019-01-05 -0.773724 0.907562 0.948446 -0.427746
2019-01-06 -0.033501 -1.787833 -1.978037 0.304845
2019-01-07 0.689540 -0.457179 1.584107 1.932602
2019-01-08 1.052232 0.135262 0.246501 0.698567
2019-01-09 0.124396 -1.289378 0.279960 -0.896865
2019-01-10 -1.083088 0.399733 0.903997 -0.738203 A B C D
2019-01-01 1.204552 -0.936226 0.629811 -0.424075
2019-01-02 0.746113 -0.501593 0.392915 0.304474
2019-01-03 0.607378 -0.889081 0.521470 -0.107713
2019-01-04 -0.576164 0.781418 0.520499 -0.510895
2019-01-05 -0.708415 0.865861 0.806976 -0.455233
2019-01-06 -0.257855 -0.905698 -1.052250 0.052182
2019-01-07 0.374031 -0.606548 0.706125 1.306369
2019-01-08 0.826234 -0.111933 0.399662 0.901106
2019-01-09 0.358318 -0.896936 0.319857 -0.297602
2019-01-10 -0.602636 -0.032475 0.709290 -0.591341

窗口函数主要用于通过平滑曲线来反应数据内的趋势。如果日常数据中有很多变化,并且有很多数据点可用,那么采样和绘图就是一种方法,应用窗口计算并在结果上绘制图形是另一种方法。 通过这些方法,可以平滑曲线或趋势。

Pandas | 15 窗口函数的更多相关文章

  1. pandas处理时间序列(4): 移动窗口函数

    六.移动窗口函数 移动窗口和指数加权函数类别如↓: rolling_mean 移动窗口的均值 pandas.rolling_mean(arg, window, min_periods=None, fr ...

  2. Pandas 基础(15) - date_range 和 asfreq

    这一节是承接上一节的内容, 依然是基于时间的数据分析, 接下来带大家理解关于 date_range 的相关用法. 首先, 引入数据文件: import pandas as pd df = pd.rea ...

  3. pandas 报错:【sys:1: DtypeWarning: Columns (15) have mixed types. Specify dtype option on import or set low_memory=False.】

    错误原因 报错提示:“sys:1: DtypeWarning: Columns (15) have mixed types. Specify dtype option on import or set ...

  4. Pandas窗口函数

    为了处理数字数据,Pandas提供了几个变体,如滚动,展开和指数移动窗口统计的权重. 其中包括总和,均值,中位数,方差,协方差,相关性等. 下来学习如何在DataFrame对象上应用上提及的每种方法. ...

  5. 利用Python进行数据分析(15) pandas基础: 字符串操作

      字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join( ...

  6. @1-5使用pandas保存豆瓣短评数据

    使用pandas保存豆瓣短评数据 Python爬虫(入门+进阶)     DC学院 本节课程的内容是介绍open函数和pandas两种保存已爬取的数据的方法,并通过实际例子使用pandas保存数据. ...

  7. Python笔记 #15# Pandas: Missing Data

    10 Minutes to pandas import pandas as pd import numpy as np import matplotlib.pyplot as plt dates = ...

  8. numpy pandas matplotlib

    import numpy as np import pandas as pd import matplotlib.pyplot as plt ---------------numpy--------- ...

  9. pandas时间序列滑窗

    时间序列数据统计-滑动窗口 窗口函数 import pandas as pd import numpy as np ser_obj = pd.Series(np.random.randn(1000), ...

随机推荐

  1. RICOH C4502彩色打印机取消双面打印功能

    参考下面步骤:

  2. Python处理数据集-2

    原数据集的数据格式: 每行为:(test_User, test_Item) negativeItem1 negativeItem2 negativeItem3 …… negativeItem99 即每 ...

  3. Python 3 的 int 类型详解(为什么 int 不存在溢出问题?)

    在以前的Python2中,整型分为int和long,也就是整型和长整型, 长整型不存在溢出问题, 即可以存放任意大小的数值,理论支持无限大数字. 因此在Python3 中,统一使用长整型,用int表示 ...

  4. 缓存雪崩、穿透如何解决,如何确保Redis只缓存热点数据?

    缓存雪崩如何解决? 缓存穿透如何解决? 如何确保Redis缓存的都是热点数据? 如何更新缓存数据? 如何处理请求倾斜? 实际业务场景下,如何选择缓存数据结构 缓存雪崩 缓存雪崩简单说就是所有请求都从缓 ...

  5. 手写Spring+demo+思路

    我在学习Spring的时候,感觉Spring是很难的,通过学习后,发现Spring没有那么难,只有你去学习了,你才会发现,你才会进步 1.手写Spring思路: 分为配置.初始化.运行三个阶段如下图 ...

  6. NET/Regex 处理连续空格

    问题: 就是一个字符串呀,一个字符串,里面的话有一个空格,有可能有连续空格,你遇到连续空格,把这个连续空格变成一个空格,一个空格地不处理. 代码: /// <summary> /// 处理 ...

  7. $.ajax()方法

    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...

  8. JS基石之-----常用方法封装的js库

    解析 URL Params 为对象 let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E ...

  9. Width Height -- (2)

    上回说到,宽高对于块级元素和行内元素发生的改变,结果是块级元素会接受宽高属性所发生的改变的,而行内元素不接受宽高属性所发生的改变. 但是,事无绝对 —— CSS属性display 通过上回进行的测试我 ...

  10. javascript:void(0); 和 href = "#"

    在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#", 但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面 ...