今天讲一下:
扩展时间窗口函数
先回顾一下:
上篇讲了使用shift方法进行时间序列的偏移,并基于偏移进行相应的计算。
今天讲另一个时间窗口函数,扩展时间窗口,所谓扩展时间窗口,即窗口的大小不是固定的,它根据时间序列的长度,可以自动扩展窗口大小,即使计算功能能匹配到某个阶段的整个时间序列。
1、需要用到模块
pandas
先引入这个武器:
import pandas as pd
2、准备工作:
我们继续使用那个test009.xlsx文件,不再另外准备数据表了。
3、先导入费用表
df = pd.read_excel("d:\\data\\test009.xlsx",sheet_name="费用")
4、我们要计算一下费用表中,从第一个日期开始,截止到每一个时间点的费用报销累计值,当然在pandas中有另一个单独的方法可以实现这个功能,不过我们今天采用expanding扩展时间窗口配合sum求和的方法来实现。
5、由于原数据中,某天可能有多个报销记录,我们把它聚合一下:
dd = df.groupby(by="报销日期",sort=True).sum()
结果如下:
6、我们在这个聚合数据的基础上,再造一列数据"cumsum",它用来存放累计报销金额:
dd["cumsum"] = dd["报销金额"].expanding().sum()
结果如下:
下面也用plot方法画个简单的折线图,
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
dd.plot()
在这里,要特别感谢知乎上的“郅知之”朋友,指出我上上篇笔记中的一个错误的武断,我在那里说:“pandas的plot绘图方法对中文显示支撑不好”。这是不对的,其实是我对pandas的绘图功能掌握得不够好,研究得不够仔细,@郅知之不仅指出了我的谬误,还给出了修正的路径,我参考他的方法,通过搜索和实验,通过增加上面的前两条语句,那么使用pandas的plot方法直接绘图时,就能很好地显示中文了。
知之为知之,不知为不知。需得时刻提醒自己:在学习和工作中,一定要时时保持谦虚谨慎的态度,对不清楚的事情,要小心求证,不能妄下论断!