python时间序列分析(一)

用pandas中的rolling函数计算时间窗口数据

pandas.DataFrame.rolling参数详解

pandas中提供了pandas.DataFrame.rolling这个函数来实现滑动窗口值计算,下面是这个函数的原型:
DataFrame.rolling(window,min_periods=None,center=False,win_type=None,on=None, axis=0, closed=None)

window: 也可以省略不写。表示时间窗的大小,注意有两种形式(int or offset)。如果使用int,则数值表示计算统计量的观测值的数量即向前几个数据。如果是offset类型,表示时间窗的大小。

min_periods: 每个窗口最少包含的观测值数量,小于这个值的窗口结果为NA。值可以是int,默认None。offset情况下,默认为1。
center: 把窗口的标签设置为居中。布尔型,默认False,居右
win_type: 窗口的类型。截取窗的各种函数。字符串类型,默认为None。
on: 可选参数。对于dataframe而言,指定要计算滚动窗口的列。值为列名。
axis: int、字符串,默认为0,即对列进行计算
closed: 定义区间的开闭,支持int类型的window。对于offset类型默认是左开右闭的即默认为right。可以根据情况指定为left both等。
通过代码看效果:
首先看下数据结构类型:
在这里插入图片描述

import pandas as pd
import matplotlib as mpl
from matplotlib import pyplot as plt

#解决中文
mpl.rcParams['font.sans-serif']=['SimHei'] 
data=pd.read_csv('platVolume.csv')
data.index=pd.to_datetime(data['date']) #数据类型转成时间类型,赋值给索引
data1=data[data['wdzjPlatId']==59] #取出公司为59的数据
data1['amount'].rolling(window=50,min_periods=20).mean().plot(label='五十日均线').legend()  #取出amount成交量数据,窗口设为50,label是为legend图列设置的。
data1['amount'].rolling(window=50,min_periods=1).mean().plot(label='五十日均线').legend()  #取出amount成交量数据,窗口设为1,label是为legend图列设置的。
plt.xlabel('X轴')
plt.ylabel('Y轴')

在这里插入图片描述
由图中可以看出,min_periods=20时,前面有空白的地方,是因为前20为空,取不到,当min_periods=1时,前面就不会有空白的地方,因为最小区域设为1,当值小于窗口五十,但最小区域值是一,所以小于五十的数字就会以当前个数为数量就平均值给予赋值。
成交量与均线图交互分析

  data1['amount'].rolling(window=50,min_periods=1).mean().plot(label='五十日均线').legend()  #取出amount成交量数据,窗口设为1,label是为legend图列设置的
    data1['amount'].plot(label='2016下半年到2017上半年成交量').legend()
    plt.xlabel('X轴')
    plt.ylabel('Y轴')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值