中国统计网 学习Python窗口函数,对比Excel

文章图片
对Sql比较了解的同学 , 应该都听过Sql中的窗口函数 , 感觉掌握了窗口函数就可以说自己精通Sql了 , 在Python中也有类似的窗口函数 。
我们先来看个例子 , 下面是某平台一段时间内分天的销量情况表 。
熟悉业务的同学应该都有一个常识 , 就是天与天之间的数据很多时候是不可以直接比的 , 比如电商平台周一和周日订单量 。
天与天之间不可比 , 但是周与周之间大部分情况是可比的 , 因为一周7天基本覆盖了全部业务情况 。

文章图片
周与周之间比较久涉及到周应该怎么算 , 如果是按照自然周去算的话 , 一年大约也就52周 , 这对于号称大数据时代来说 , 数据肯定是有点少 , 那怎么办才能既覆盖到比较全的业务场景 , 又能够增加数据点呢?
有一个办法就是滑动相加 , 滑动7天相加 。
比如:这周二到下周一是7天 , 且覆盖了比较全的业务场景 , 再比如这周五到下周四也是7天 , 且同时覆盖了比较全的业务场景 。
我们现在有分天的数据 , 怎么做到7天滑动相加呢?
在Excel中其实还是比较简单的 , 直接在第7行写入公式前7行相加的公式 , 然后把公式下拉填充就可以做到7天滑动相加 。 如下图所示:

文章图片
如果我们要在Python中实现这种7天滑动相加的功能可以直接使用rolling函数 , rolling函数中有一个比较重要的参数是window , 该参数用来表示滑动几天 。 具体实现代码如下:
importpandasaspddf=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 , 可以通过如下方式实现:
importnumpyasnpdefdiv(x):returnnp.sum(x)+1df.rolling(window=7).agg(div)运行上面的代码就可得到如下结果:

文章图片
可以看到 , 第一个累加值是453 , 是在452的基础上加了1 。
【中国统计网 学习Python窗口函数,对比Excel】先自定义一个函数 , 然后通过agg的方式调用该函数就可以实现自定义函数的功能 。
以上就是关于Python滑动窗口函数用法的一个基本介绍 。
推荐阅读
- 保时捷|中国连续7年为最大市场!保时捷拟独立上市 欧洲史上最大IPO
- ARM|ARM中国区CEO表态:NVIDIA收购ARM失败是好事
- 韩系车|1月市场份额仅1.7% 韩系车为什么在中国越卖越少?
- 空中客车|空客A321大飞机首次在中国总装 四季度交付
- 游戏|《师父》变身MOD大杂烩:士官长蜘蛛侠奎爷耍中国功夫
- 出口|中国国产车哪些国家卖最火?第一想不到 基本没关税
- 澳大利亚|澳媒称旅游业哭喊中国游客回归:留下120亿澳元黑洞 行业近乎崩溃
- AMOLED|国货崛起!维信诺发布中国首款1Hz低功耗AMOLED显示屏
- 挪威|冬奥奖牌榜第一的国家 是中国国产电动车的试验田
- 天气|10省区气温将持续偏低 我国中国南方为何陷入持续湿冷?
