对比Excel,学习Python窗口函数

张俊红 | 作者

俊红的数据分析之路 | 来源


对Sql比较了解的同学,应该都听过Sql中的窗口函数,感觉掌握了窗口函数就可以说自己精通Sql了,在Python中也有类似的窗口函数。

我们先来看个例子,下面是某平台一段时间内分天的销量情况表。

熟悉业务的同学应该都有一个常识,就是天与天之间的数据很多时候是不可以直接比的,比如电商平台周一和周日订单量。

天与天之间不可比,但是周与周之间大部分情况是可比的,因为一周7天基本覆盖了全部业务情况。

周与周之间比较久涉及到周应该怎么算,如果是按照自然周去算的话,一年大约也就52周,这对于号称大数据时代来说,数据肯定是有点少,那怎么办才能既覆盖到比较全的业务场景,又能够增加数据点呢?

有一个办法就是滑动相加,滑动7天相加。

比如:这周二到下周一是7天,且覆盖了比较全的业务场景,再比如这周五到下周四也是7天,且同时覆盖了比较全的业务场景。

我们现在有分天的数据,怎么做到7天滑动相加呢?

Excel中其实还是比较简单的,直接在第7行写入公式前7行相加的公式,然后把公式下拉填充就可以做到7天滑动相加。如下图所示:

如果我们要在Python中实现这种7天滑动相加的功能可以直接使用rolling函数,rolling函数中有一个比较重要的参数是window,该参数用来表示滑动几天。具体实现代码如下:

import pandas as pd
df = pd.read_csv(r''python_rolling.csv')
df.rolling(window = 7).sum()

运行上面的代码会得到如下结果:

可以看到与Excel中得到的结果是完全一致的。

如果只对df执行rolling的话,df只会滑动指定天数,但是并不会对滑动后的天数做任何运算,再对滑动后的数据调用sum函数就表示对滑动的数据执行求和运算。

对df进行rolling以后除了求和以外还可以进行其他运算,比较常用的运算有:

  • 计数:count()

  • 求均值:men()

  • 求最值:min()、max()

  • 求方差:var()

  • 求标准差:std()

除了常用的这些汇总运算以外,还可以使用自定义函数,比如对滑动7天的值先求和再加1,可以通过如下方式实现

import numpy as np
def div(x):
    return np.sum(x) + 1
 df.rolling(window = 7).agg(div)

运行上面的代码就可得到如下结果:

可以看到,第一个累加值是453,是在452的基础上加了1。

先自定义一个函数,然后通过agg的方式调用该函数就可以实现自定义函数的功能。

以上就是关于Python滑动窗口函数用法的一个基本介绍。

用Python把朋友头像变表情包?

取数,取数,取个屁啊!

后台回复“入群”即可加入小z数据干货交流群
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值