python处理时间的标准函数库_python+pandas+时间、日期以及时间序列处理方法
先简单的了解下日期和时间数据类型及工具
python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。
datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差。
给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
总结
该篇博客主要内容:
1)字符串、日期的转换方法
2)日期和时间的主要python,datetime、timedelta、pandas.to_datetime等
3)以时间为索引的Series和DataFrame的索引、切片
4)带有重复时间索引时的索引,.groupby(level=0)应用
以上这篇python+pandas+时间、日期以及时间序列处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
本文标题: python+pandas+时间、日期以及时间序列处理方法
本文地址: http://www.cppcns.com/jiaoben/python/232470.html
python处理时间的标准函数库_python+pandas+时间、日期以及时间序列处理方法相关推荐
- python处理时间的标准函数库_使用Python的datetime库处理时间(RPA流程)
RPA流程自动化过程中,遇到时间的相关操作时,可以调用datetime库的一些方法进行处理. datetime 是 Python 处理日期和时间的标准库. 1.获取当前日期和时间 我们先看如何获取当前 ...
- python pandas 日期_python+pandas+时间、日期以及时间序列处理方法
python+pandas+时间.日期以及时间序列处理方法 先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time ...
- python pandas 日期格式_python+pandas+时间、日期以及时间序列处理方法
先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫 ...
- python类似turtle的库_Python之Turtle库与Time库知识分享
以下均为干货,更多知识视觉享受请移步微信公众号: 子奇的小屋 认识turtle库: turtle库是turtle绘图体系的Python实现,是标准库之一 标准库:随解释器操作系统中的模块直接安装到解 ...
- C标准函数库中获取时间与日期、对时间与日期数据操作及格式化
表示时间的三种数据类型[编辑] 日历时间(calendar time),是从一个标准时间点(epoch)到现在的时间经过的秒数,不包括插入闰秒对时间的调整.开始计时的标准时间点,各种编译器一般使用19 ...
- python log函数怎么打_Python的log日志功能及设置方法
python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客
- python图形界面编程库_Python支持哪些图形界面的第三方库
Python支持哪些图形界面的第三方库 发布时间:2020-11-09 10:37:56 来源:亿速云 阅读:58 作者:小新 这篇文章给大家分享的是有关Python支持哪些图形界面的第三方库的内容. ...
- python怎样快速下载库_Python如何急速下载第三方库详解
前言 pip 是一个现代的,通用的 Python 包管理工具 ,是一个安装第三方 库必备的工具,提供了对Python 包的查找.下载.安装.卸载的功能.但是在国内使用有很多因素的限制,一个3.4M的库 ...
- python 股票分析常用库_Python数据分析常用库有哪些?Python学习!
Python为什么受欢迎?因为Python简单.易懂.好用,是一门高级的编程语言;除此之外,Python提供了大量的第三方库,开箱即用,方便.免费,非常适合从事数据分析领域的工作. 大家也都知道,Py ...
最新文章
- C++中关于[]静态数组和new分配的动态数组的区别分析
- BSOJ 3899 -- 【CQOI2014】 数三角形
- Asp.net MVC开发RDLC报表
- python接口返回json处理_python 接口返回的json字符串实例
- Hive学习之路 (一)Hive初识
- 华为nova3e怎么分屏_华为手机怎么分屏?边看视频边聊微信!不是所有手机都能做到...
- java计算机毕业设计智慧校园食堂点餐系统源码+mysql数据库+系统+lw文档+部署
- PS常用快捷键操作记录
- centos7安装Memcached
- 如何用微信自动添加wifi连接服务器地址,微信WiFi一键连小程序怎么用 微信怎么连接WiFi热点...
- 偷得假期半日闲,只羡鸳鸯不羡仙
- netty之微信-IM简介(二)
- Apache Hadoop KMS 部署
- 2021年中国海上风电行业发展现状分析,双碳循环下行业飞速发展「图」
- 丛亚平:中国财富集中度超美nbsp;贫富…
- 光纤收发器的原理及应用_光纤收发器的工作原理 光纤收发器的作用介绍
- 安卓系统加速_安卓手机这样优化一下,流畅度至少能提升30%
- 著名的假设“缸中之脑”,我们怎么确定自己不是活在电脑程序中?
- 2022-2027年中国PLC光分路器芯片行业市场调研及投资战略研究报告
- 大学计算机科学的14个知识领域,课程和知识体系pdf-南京大学计算机科学与技术系.pdf...