时间序列分析1——时间序列的概念及创建

时间序列分析1——时间序列的创建


前言

本文主要介绍时间序列、统计时序分析的相关概念以及Python中时间序列的创建


一、时间序列及其观察值序列

1. 时间序列的定义:

  • 一个随机事件在各时点的值所构成的序列。数学表述: { X t , t ∈ T } \left\{ X_t,t \in T \right\} {Xt,tT}
  • 注意 X t X_t Xt是一组随机变量,而非一个。

2. (序列长度为n的)观察值序列:

它表示随机序列的n个有序观察值。数学表述: { x t , t = 1 , … , n } \left\{x_t, t=1,…,n \right\} {xt,t=1,,n}

二、统计时序分析

1. 频域分析方法:

  • 任何一种无趋势的时间序列
  • 都可以分解成
  • 几个不同频率的周期波动
  • 也称为“谱分析”

2. 时域分析方法

  • 从序列自相关的角度
  • 揭示时序的发展规律
  • 事件的发展通常具有一定的惯性,这种惯性表现为序列的自相关关系

三、用Python创建时间序列

0.导入库

import pandas as pd
import numpy as np
import datetime as dt

1.pd.date_range()方法

  1. 用途:用于生成一个时间序列
  2. 使用方法:
    • 法1:可以指定开始时间、总天数和公差
    • 法2:也可以指定开始时间、终止时间和公差

代码如下:

#方法一:给定开始时间、总共天数、公差(频率)为1天
time_series1=pd.date_range('2020-09-21',periods=39,freq='d')
print(time_series1)
#方法二:给定开始时间、结束时间、公差(频率)为1天
time_series2=pd.date_range('2020-09-21','2020-10-29',freq='d')
print(time_series2)

结果如下:
结果

2.设置series或dataframe的索引为时间:

  • xxx.set_index()方法
  • pd.Series(values,index=pd.date_range())

2.1series或dataframe已存在,设置索引为时间

方法都是相同的:使用 xxx.set_index() 方法。
代码如下:

#2.1 设置dataframe对象的索引为时间:
#创建一个dataframe对象:
data=pd.DataFrame([['2','1','a'],['3','5','加油啊!']],columns=['c1','c2','c3'])
print(data)
#修改该df对象的索引为时间:df.set_index()方法
data_new=data.set_index(pd.date_range('2020-10-28','2020-10-29',freq='d'))
print(data_new)
print(type(data_new.index))

结果如下。注意现在的index是datetimes中的DatetimeIndex对象
结果

2.2 直接创建索引为时间(DatetimeIndex)的series或dataframe

  • pd.Series(values,index=pd.date_range())
  • pd.DataFrame(二维列表,columns=[‘c1’,‘c2’,‘c3’],index=pd.date_range())
values=np.random.randn(20)
time=pd.Series(values,
					index=pd.date_range(dt.datetime(2020,10,29),periods=20))
#dt.datetime(2020,10,28)与'2020-10-18'效果相同
data=pd.DataFrame([['2','1','a'],['3','5','加油啊!']],columns=['c1','c2','c3'],index=pd.date_range('2020-10-28','2020-10-29'))
print(data)

结果分别为:
在这里插入图片描述在这里插入图片描述

3.时间序列的截取——time.truncate() 方法和直接索引

  • time.truncate(before=’’,after=’’):截取从before开始到after结束的时间序列
  • 也可以使用== time[before:after] ==直接截取时间序列(before和after都包含在内)
3.1 time.truncate()方法

代码如下:

#方法1
time.truncate(before='2020-11-1',after='2020-11-17')

结果为:
在这里插入图片描述

3.2 直接索引

代码如下:

#方法2
print(time['2020-10-29'])
print('----------------------')
print(time['2020-10-29':'2020-11-17'])

结果为:
在这里插入图片描述

4.指定时间戳、时间区间、时间偏移量delta

4.1 指定时间戳

代码:

t1=pd.Timestamp('2016-07-10')
# 可以指定更多细节
t2=pd.Timestamp('2016-07-10 10')
t3=pd.Timestamp('2016-07-10 10:15')
t4=pd.Timestamp('2016-07-10 10:15:29')
print(t1)
print(t2)
print(t3)
print(t4)
print('--------------------')
print(type(t4))

结果:
在这里插入图片描述

4.2 指定时间区间

pd.period()

print(pd.Period('2016-01'))
print(pd.Period('2016-01-01'))
print('---------------')
print(type(pd.Period('2016-01')))
4.3 时间偏移量 pd.Timedelta()
delta_t=pd.Timedelta('1 day')
print(delta_t)
print('--------------------')
print(pd.Period('2016-01-01 10:10') + delta_t)
print('--------------------')
print(pd.Timestamp('2016-01-01 10:10') + pd.Timedelta('1 day'))
print('--------------------')
print(pd.Timestamp('2016-01-01 10:10') + pd.Timedelta('15 ns'))
4.4 时点序列和时域序列的区别
  • 时点序列: DatetimeIndex
  • 时域序列: PeriodIndex
p1 = pd.date_range('2016-01-01 10:10', freq = '25H', periods = 10)
p2 = pd.period_range('2016-01-01 10:10', freq = '1d1h', periods = 10)#'25H'也可以写成1d1h
print('时点序列:',p1)
print('---------------')
print('时域序列:',p2)
4.5 时间戳和时间周期的转换
ts = pd.Series(range(10), index=pd.date_range('07-10-16 8:00', periods = 10, freq = 'H'))
print(ts)
print('-------上面是时点序列,下面是时域序列:--------')
ts_period = ts.to_period()#时间戳转换为时间周期
print(ts_period)
print('-------将时域序列再转换为时点序列:--------')
print(ts_period.to_timestamp())

总结

本文主要介绍了时间序列、统计时序分析的相关概念,以及Python中时间序列创建和修改的相关语法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
目录 第一部分C#语言基础 第1章C#类型基础 1.1值类型和引用类型 1.1.1值类型 1.1.2引用类型 1.1.3简单类型 1.1.4装箱和拆箱 1.2对象判等 1.2.1 引用类型判等 1.2.2简单值类型判等 1.2.3复杂值类型判等 1.3对象复制 1.3.1 浅度复制 1.3.2深度复制 1.4不可变类型 1.4.1从类型设计谈起,Class还是Struct 1.4.2数据不一致的问题 1.4.3 常量性和原子性 1.4.4避免外部类型对类型内部的访问 1.5本章小结 第2章C#中的泛型 2.1理解泛型 2.1.1 为什么要有泛型 2.1.2类型参数约束 2.1.3泛型方法 2.2泛型与集合类型 2.2.1 避免隐式的装箱和拆箱 2.2.2编译时的类型安全 2.2.3使用泛型的一个小技巧 2.3本章小结 第3章C#中的委托和事件 3.1理解委托 3.1.1 将方法作为方法的参数 3.1.2将方法绑定到委托 3.1.3委托与接口 3.2事件的由来 3.2.1 更好的封装性 3.2.2 限制类型能力 3.3委托的编译代码 3.4.NET框架中的委托和事件 3.4.1 示例说明 3.4.2 Observer设计模式简介 3.4.3 实现示例的Observer设计模式 3.4.4.NET框架中的委托与事件 3.5委托进阶 3.5.1 为什么委托定义的返回值通常都为void 3.5.2如何让事件只允许一个客户订阅 3.5.3获得多个返回值与异常处理 3.6订阅者方法超时的处理 3.7委托和方法的异步调用 3.8不使用委托实现Observer模式 3.8.1设计思想概述 3.8.2 Observer模式的接口定义 3.8.3 Observer模式的实现 3.8.4推模式和拉模式 3.8.5推模式和拉模式的区别 3.9本章小结 第4章对象的筛选和排序 4.1对象的筛选 4.1.1基于拼装SQL的筛选 4.1.2基于对象的筛选 4.1.3事件探查器 4.2对象的排序 4.2.1 简单排序——对固定属性的默认排序 4.2.2高级排序——多个属性组合排序 4.2.3 页面调用 4.3本章小结 第5章LINQ 5.1 LINQ预备知识 5.1.1泛型和委托 5.1.2 隐式类型的局部变量 5.1.3 匿名类型 5.1.4扩展方法 5.1.5 匿名方法和Lambda表达式 5.2集合 5.2.1理解集合 5.2.2创建集合类 5.2.3实现IEnumerable< t>接口 5.3 LINQ查询 5.3.1 LINQ to Objects 5.3.2查询表达式 5.3.3延迟加载 5.3.4混合使用LINQ to Objects 5.4 LINQ查询运算符 5.4.1 返回IEnumerable< t> 5.4.2返回其他序列类型 5.4.3返回序列中元素 5.4.4返回标量值 5.4.5其他方法 5.5本章小结 第二部分.NET框架 第6章认识.NET平台 6.1引子 6.2 CIL——公共中间语言 6.3 BCL和FCL 6.3.1 BCL——基类库 6.3.2 FCL——框架类库 6.4 CTS——公共类型系统 6.5 CLS——公共语言规范 6.6 CLR——公共语言运行时 6.6.1程序集概述 6.6.2运行程序集 6.7 cLl——公共语言基础 6.8本章小结 第7章程序集 7.1程序集详探 7.1.1程序集模块 7.1.2清单和元数据 7.1.3程序集资源 7.2强名称程序集 7.2.1 非强名称程序集的问题 7.2.2强名称的定义 7.2.3为程序集赋予强名称 7.2.4 防篡改和数字签名 7.2.5全局程序集缓存 7.2.6延迟签名 7.3本章小结 第8章流和序列化 8.1文件 8.1.1 不同视角下的文件 8.1.2位、字节和字节数组 8.2流 8.2.1 关于流的类比 8.2.2使用流进行文件复制 8.2.3 流的类型体系 8.3序列化 8.3.1基本操作 8.3.2事件响应 8.3.3 自定义序列化过程 8.4本章小结 第9章.NET中的加密和解密 9.1加密和解密的相关概念 9.1.1散列运算 9.1.2对称加密 9.1.3非对称加密 9.1.4数字签名 9.1.5综合实现 9.1.6证书机制 9.2.NET对加密和解密的支持 9.2.1散列运算 9.2.2对称加密和解密 9.2.3非对称加密 9.3本章小结 第10章网络编程 10.1网络编程基本概念 10.1.1 面向连接的传输协议——TCP 10.1.2 即时通信程序的三种模式 10.2基本操作 10.2.1服务端对端口进行侦听 10.2.2客户端与服务端连接 10.2.3服务端获取客户端连接 10.3同步传输字符串 10.3.1 客户端发送,服务端接收并输出 10.3.2服务端回发,客户端接收并输出 10.3 中英文字符大小和文本边界问题 10.4.1 ASCIl、UTF8、Unicode编码下的中英文字符大小 10.4.2文本边界问题 10.5异步传输字符串 10.5.1 服务端的实现 10.5.2客户端的实现 10.5.3程序测试 10.6文件传输 10.6.1订立协议 10.6.2协议处理类的实现 10.6.3客户端发送文件 10.7本章小结 第11章.NET Remoting 11.1理解Remoting 11.1.1 应用程序域基本概念 11.1.2应用程序域的基本操作 11.1.3在默认应用程序域中创建对象 11.1.4在新建应用程序域中创建对象 11.1.5代理和封送 11.1.6传引用封送示例 11.1.7服务程序集、服务端应用程序(域)和客户端应用程序(域) 11.2 Remotin9架构 11.2.1客户端(客户应用程序域) 11.2.2服务端(宿主应用程序域) 11.2.3 Remotin9对象的三种激活方式 11.3 Remotin9程序的基本操作 11.3.1 服务程序集 11.3.2服务端应用程序 11.3.3客户端应用程序 11.3.4程序运行测试 11.4 Remotin9中的传值封送 11.5分离服务程序集元数据和代码实现 11.5.1使用接口分离服务程序集 11.5.2使用“空类”分离服务程序集 11.5.3 使用Soapsuds.exe分离程序集 11.5.4使用工厂方法实现分离 11.6 Remoting中的方法回调 11.6.1远程回调方式说明 11.6.2客户端类型和服务端类型 …… 第12章 在.NET中操作XML 第13章 .NET应用程序配置 第14章 基于角色的安全性 第15章 .NET中的反射 第16章 多线程 第17章 对象生存期与垃圾收集

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值