python时间序列函数_python时间日期函数与利用pandas进行时间序列处理详解
python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。
datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差。
下面我们先简单的了解下python日期和时间数据类型及工具
给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象
from datetime import datetime
from datetime import timedelta
now = datetime.now()
now
datetime.datetime(2017, 6, 27, 15, 56, 56, 167000)
datetime参数:datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
delta = now - datetime(2017,6,27,10,10,10,10)
delta
datetime.timedelta(0, 20806, 166990)
delta.days
0
delta.seconds
20806
delta.microseconds
166990
datetime模块中的数据类型
类型
说明
date
以公历形式存储日历日期(年、月、日)
time
将时间存储为时、分、秒、毫秒
datetime
存储日期和时间
timedelta
表示两个datetime值之间的差(日、秒、毫秒)
字符串和datetime的相互转换
1)python标准库函数
日期转换成字符串:利用str 或strftime
字符串转换成日期:datetime.strptime
stamp = datetime(2017,6,27)
str(stamp)
'2017-06-27 00:00:00'
stamp.strftime('%y-%m-%d')#%Y是4位年,%y是2位年
'17-06-27'
#对多个时间进行解析成字符串
date = ['2017-6-26','2017-6-27']
datetime2 = [datetime.strptime(x,'%Y-%m-%d') for x in date]
datetime2
[datetime.datetime(2017, 6, 26, 0, 0), datetime.datetime(2017, 6, 27, 0, 0)]
2)第三方库dateutil.parser的时间解析函数
from dateutil.parser import parse
parse('2017-6-27')
datetime.datetime(2017, 6, 27, 0, 0)
parse('27/6/2017',dayfirst =True)
datetime.datetime(2017, 6, 27, 0, 0)
3)pandas处理成组日期
pandas通常用于处理成组日期,不管这些日期是DataFrame的轴索引还是列,to_datetime方法可以解析多种不同的日期表示形式。
date
['2017-6-26', '2017-6-27']
import pandas as pd
pd.to_datetime(date)
DatetimeIndex(['2017-06-26', '2017-06-27'], dtype='datetime64[ns]', freq=None)
datetime 格式定义
代码
说明
%Y
4位数的年
%y
2位数的年
%m
2位数的月[01,12]
%d
2位数的日[01,31]
%H
时(24小时制)[00,23]
%l
时(12小时制)[01,12]
%M
2位数的分[00,59]
%S
秒[00,61]有闰秒的存在
%w
用整数表示的星期几[0(星期天),6]
%F
%Y-%m-%d简写形式例如,2017-06-27
%D
%m/%d/%y简写形式
pandas时间序列基础以及时间、日期处理
pandas最基本的时间序列类型就是以时间戳(时间点)(通常以python字符串或datetime对象表示)为索引的Series:
dates = ['2017-06-20','2017-06-21',\
'2017-06-22','2017-06-23','2017-06-24','2017-06-25','2017-06-26','2017-06-27']
import numpy as np
ts = pd.Series(np.random.randn(8),index = pd.to_datetime(dates))
ts
2017-06-20 0.788811
2017-06-21 0.372555
2017-06-22 0.009967
2017-06-23 -1.024626
2017-06-24 0.981214
2017-06-25 0.314127
2017-06-26 -0.127258
2017-06-27 1.919773
dtype: float64
ts.index
DatetimeIndex(['2017-06-20', '2017-06-21', '2017-06-22', '2017-06-23',
'2017-06-24', '2017-06-25', '2017-06-26', '2017-06-27'],
dtype='datetime64[ns]', freq=None)
pandas不同索引的时间序列之间的算术运算会自动按日期对齐
ts[::2]#从前往后每隔两个取数据
2017-06-20 0.788811
2017-06-22 0.009967
2017-06-24 0.981214
2017-06-26 -0.127258
dtype: float64
ts[::-2]#从后往前逆序每隔两个取数据
2017-06-27 1.919773
2017-06-25 0.314127
2017-06-23 -1.024626
2017-06-21 0.372555
dtype: float64
ts + ts[::2]#自动数据对齐
2017-06-20 1.577621
2017-06-21 NaN
2017-06-22 0.019935
2017-06-23 NaN
2017-06-24 1.962429
2017-06-25 NaN
2017-06-26 -0.254516
2017-06-27 NaN
dtype: float64
索引为日期的Series和DataFrame数据的索引、选取以及子集构造
方法:
1).index[number_int]
2)[一个可以被解析为日期的字符串]
3)对于,较长的时间序列,只需传入‘年'或‘年月'可返回对应的数据切片
4)通过时间范围进行切片索引
ts
2017-06-20 0.788811
2017-06-21 0.372555
2017-06-22 0.009967
2017-06-23 -1.024626
2017-06-24 0.981214
2017-06-25 0.314127
2017-06-26 -0.127258
2017-06-27 1.919773
dtype: float64
ts[ts.index[2]]
0.0099673896063391908
ts['2017-06-21']#传入可以被解析成日期的字符串
0.37255538918121028
ts['21/06/2017']
0.37255538918121028
ts['20170621']
0.37255538918121028
ts['2017-06']#传入年或年月
2017-06-20 0.788811
2017-06-21 0.372555
2017-06-22 0.009967
2017-06-23 -1.024626
2017-06-24 0.981214
2017-06-25 0.314127
2017-06-26 -0.127258
2017-06-27 1.919773
dtype: float64
ts['2017-06-20':'2017-06-23']#时间范围进行切片
2017-06-20 0.788811
2017-06-21 0.372555
2017-06-22 0.009967
2017-06-23 -1.024626
dtype: float64
带有重复索引的时间序列
1).index.is_unique检查索引日期是否是唯一的
2)对非唯一时间戳的数据进行聚合,通过groupby,并传入level = 0(索引的唯一一层)
dates = pd.DatetimeIndex(['2017/06/01','2017/06/02','2017/06/02','2017/06/02','2017/06/03'])
dates
DatetimeIndex(['2017-06-01', '2017-06-02', '2017-06-02', '2017-06-02',
'2017-06-03'],
dtype='datetime64[ns]', freq=None)
dup_ts = pd.Series(np.arange(5),index = dates)
dup_ts
2017-06-01 0
2017-06-02 1
2017-06-02 2
2017-06-02 3
2017-06-03 4
dtype: int32
dup_ts.index.is_unique
False
dup_ts['2017-06-02']
2017-06-02 1
2017-06-02 2
2017-06-02 3
dtype: int32
grouped = dup_ts.groupby(level=0).mean()
grouped
2017-06-01 0
2017-06-02 2
2017-06-03 4
dtype: int32
dup_df = pd.DataFrame(np.arange(10).reshape((5,2)),index = dates )
dup_df
0
1
2017-06-01
0
1
2017-06-02
2
3
2017-06-02
4
5
2017-06-02
6
7
2017-06-03
8
9
grouped_df = dup_df.groupby(level=0).mean()##针对DataFrame
grouped_df
0
1
2017-06-01
0
1
2017-06-02
4
5
2017-06-03
8
9
本文总结了以下4个知识点
1)字符串、日期的转换方法
2)日期和时间的主要python,datetime、timedelta、pandas.to_datetime等
3)以时间为索引的Series和DataFrame的索引、切片
4)带有重复时间索引时的索引,.groupby(level=0)应用
python时间序列函数_python时间日期函数与利用pandas进行时间序列处理详解相关推荐
- linux时间与日期函数,Linux时间日期函数
最近跑实验的时候需要获取函数的执行时间,因此变在网上搜集整理了,在Linux下跟时间有关的函数,保存在此,以备不时之需- asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime ...
- 聚合函数,数学、字符串、函数,时间日期函数
create database lianxi0425--创建一个名字为lianxi0425的数据库 go use lianxi0425 --使用练习0425这个数据库 go--创建一个学生xinxi1 ...
- python之日期与时间处理模块及利用pandas处理时间序列数据
文章目录 时间序列 一.日期和时间数据类型及工具 1.1字符串与datetime互相转换 二.时间序列基础 时间序列 时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域, ...
- golang 时间戳_go语言学习笔记(13)-defer函数、字符串常用函数和时间日期函数...
函数-defer 在函数中,程序员经常需要创建资源(比如:数据库连接.文件句柄.锁等),为了在函数执行完毕后,及时的释放资源,go的设计者提供defer(延时机制). 细节说明: 1:当go执行到一个 ...
- Excel中逻辑函数和时间日期函数
- python守护多线程_Python多线程Threading、子线程与守护线程实例详解
线程Threading: python中多线程需要使用threading模块 线程的创建与运行: 1.直接调用threading的Thread类: 线程的创建:线程对象=thread.Thread(t ...
- Clickhouse 时间日期函数
Clickhouse 时间日期函数 Clickhouse 时间日期函数注:所有的时间日期函数都可以在第二个可选参数中接受时区参数.示例:Asia / Yekaterinburg.在这种情况下,它们使用 ...
- python日期函数_python 时间及日期函数
本人最近新学python ,用到关于时间和日期的函数,经过一番研究,从网上查找资料,经过测试,总结了一下相关的方法. import time import datetime '''时间转化为时间戳: ...
- R语言-时间日期函数
R语言时间日期函数 1. 返回当前日期时间,有两种方式: Sys.time() date() 举例 format(Sys.time(), "%a %b %d %X %Y %Z")# ...
最新文章
- 【官宣·第一弹】2021中国肠道大会7条重要消息
- 关于MFC单选框的使用临时记录,稍后编辑
- 牛客java面试题总结版(三)
- 过年前谈个恋爱很过分吗?
- c 命令导出数据到mysql_MySQL命令行导出数据库
- system 无法以 sysdba 登录,提示:权限不足。
- 分阶段付款 学php,项目整理-支付宝的支付问题
- 好家伙!QQ正在读取你所有的浏览器历史记录?腾讯致歉后,网友评论绝了
- 列表界面脚本脚本控制精度_AE脚本编辑
- Windows Server 2012远程刷新客户端组策略及IE代理设置图文教程
- jquery 2.0.3代码结构
- zedboard linux内核下载,zedboard学习-为Linux内核打补丁
- ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码
- 2020年下半年软件设计师下午真题及答案解析
- uniapp windows 真机调试 ios iphone 踩坑指南 itunes 64位历史版本
- C#姓名与机构名称生成专用类
- 怎样把pdf转换成jpg文件
- c语言求平均值 保留三位小数,Excel求平均值时,保留小数位数与参与求平均值的个数有关...
- 给学弟学妹肝的一篇Java学习路线,保证学弟学妹们大三大四的时候顺利找到实习 Offer
- 怎么利用计算机传输文件到邮箱,电脑和电脑怎么传文件_电脑和电脑之间如何传文件-win7之家...
热门文章
- C/C++中static关键字详解
- 宽字符集(unicode)说明以及转换函数
- 自定义spring schema简化与canal集成
- linux shell 判断字符串是否在数组中
- cmake 编译文件 CMakeLists.txt 语法介绍与实例演练
- linux 交叉编译 libxml2,openssl,libssh2
- wireshark协议解析器原理与插件编写
- CentOS7使用systemctl添加自定义服务
- 用symbol来获得ShadowSSDT的原始地址和函数名
- php 随机调用文章,zblog PHP调用热门文章、随机文章和热评文章代码