时间序列
一、获取当前时刻的时间
1.返回当前时刻的日期和时间
from datetime import datetime
#返回当前时刻的日期和时间
datetime.now()
#datetime.datetime(2020, 5, 16, 14, 13, 37, 179143),日期、时间一起显示
# 年 月 日 时 分 秒 微妙 可通过属性取出来每个部分
2.返回当前时刻的年、月、日
#返回当前时刻的年
datetime.now().year
#2020
#返回当前时刻的月
datetime.now().month
#5
#返回当前时刻的日
datetime.now().day
#16
3.返回当前时刻的周数
与当前时刻的周相关的数据有两个,一个是当前时刻是一周中的周几;一个是返回当前时刻所在的周在全年的周里面是第几周。
(1)返回周几 weekday()
weekday():
'''
功能: 当前时刻是一周中的**周几**。
参数:
返回值: 数字(表示周几)
'''
注意:Python中周几是从0开始数的(例:周日返回6,所以得在后面+1)
from datetime import datetime
datetime.now().weekday()+1
(2)返回周数
isocalendar():
'''
功能: 前时刻所在的周在**全年的周里面是第几周**。
参数:
返回值: 元组(年,第几周,日)
'''
注意:返回的是一个元组,含年、第几周、日,所以取第几周时加上索引值[1]
from datetime import datetime
datetime.now().isocalendar()[1]
二、指定日期和时间的格式
使用 now() 函数日期和时间都会显示出来,但有时我们想单独看日期,单独看时间,或者自定义日期和时间显示格式,这时就需要用到 day()、time()、strftime() 函数。
1.date() 将日期和时间设置成只显示日期
from datetime import datetime
datetime.now().date()
2.time() 将日期和时间设置成只显示时间
from datetime import datetime
datetime.now().time()
3.strftime() 自定义日期和时间的格式
datetime.now().strftime("%Y-%m-%d")
datetime.now().strftime("Y-%m-%d %H:%M:%S")
4.自己手动写入
from datetime import datetime
datetime(2020,5,19,9,46) #自己手动指定了年、月、日、时、分
三、字符串、时间格式相互转换
1.将时间格式转换为字符串格式 str()
now = datetime.now()
str(now)
type( str(now) )
2.将字符串格式转换为时间格式 parse()
str_name = "2020-5-16"
from dateutil.parser import parse #得导入一个包
parse(str_name)
type( parse(str_name) )
四、时间索引
时间索引就是根据时间来对时间格式的字段进行数据选取的一种索引方式。 Python中可以选取具体的某一时间对应的值,也可以选某一段时间内的值。 新建一个时间索引的 DataFrame,如下:
import pandas as pd
import numpy as np
#单独创建时间行索引
index = pd.DatetimeIndex(['2020-5-19','2020-5-20','2020-5-21','2020-5-22'])
#创建一个以时间为行索引,数据从1到4的 DataFrame 表格型数据。
data = pd.DataFrame(np.arange(1,5),columns=["数字"],index=index)
#ValueError: Shape of passed values is (1, 10), indices imply (1, 4) 注意索引个数和数据相同
#查看整个数据
data
#获取2020年数据
data['2020']
#获取2020年5月的数据
data['2020-5']
#获取2020年5月19日到2020年5月21日的数据
data['2020-5-19':'2020-5-21']
#获取2020年5月20日的数据
data['2020-5-20':'2020-5-20']
上述的索引方法适用于索引是时间的情况下,但是并不是所有情况下时间都可以做索引,比如订单表中订单号是索引,成交时间只是一个普通列,这时想选取某一段时间内的成交订单怎么办? 因为时间也是有大小关系的,所以可通过索引方式中的布尔索引来对非索引列的时间进行选取。
import pandas as pd
from datetime import datetime
df = pd.DataFrame({"客户姓名":["初见","思齐","小淘","齐齐"],"唯一标识码":[99,100,101,102],"年龄":[18,19,20,21],"成交时间":['2020-5-19','2020-5-20','2020-5-21','2020-5-22']},index=["A1","A2","A3","A4"])
#选取成交时间为2020-5-20的订单
df[df["成交时间"] == datetime(2020,5,20) ]
#选取成交时间为2020-5-20以后的订单
df[df["成交时间"] > datetime(2020,5,20) ]
#选取成交时间为2020-5-20以前的订单
df[df["成交时间"] < datetime(2020,5,20) ]
#选取成交时间为2020-5-20到2020-5-22之间的订单
df[(df["成交时间"] > datetime(2020,5,20)) & (df["成交时间"] < datetime(2020,5,22)) ]
#具体形式如此,这个的成交时间是对象不好使
五、时间运算
1.两个时间之差
经常会用到计算两个时间的差,比如一个用户在某一平台上的生命周期(即用最后一次登录时间 - 首次登陆时间) Python中两个时间做差会返回一个 timedelta 对象,该对象包含天数、秒、微秒三个等级,若是要获取小时、分钟,则需要进行换算。
import datetime import datetime
cha = datetime(2020,5,19,9,46) - datetime(2020,5,18,7,0) #手动输入了年月日时分
#返回 datetime.timedelta(days=1, seconds=9960) 无论是差了几年等,都只会返回天数、秒、微秒这三 个等级,这块微妙我没具体指明,所以没有。
#因为timedelta 对象包含天数、秒、微秒这三个等级,所以可通过属性获取出来
cha.days #获取天数的时间差
#1
cha.seconds #获取秒的时间差
#9960
cha.seconds/3600 #将秒换算成小时的时间差
#2.7666666666666666
2.时间偏移
时间偏移指给时间往前推或往后推一段时间(即加减一段时间)。 Python中实现时间偏移的方式有两种: 第一种借助 timedelta(该对象包含天数、秒、微秒三个等级,所以只能偏移天数、秒、微秒单位的时间) 第二种是用Pandas中的日期偏移量(date offset)
(1)timedelta
timedelta只支持 天、秒、微妙 单位的时间运算,若是其他单位的时间运算,则需要换算成天、秒、微妙三种单位的一种方可进行偏移。
from datetime import timedelta
date = datetime(2020, 5, 19, 10, 42)
#往后推一天
date + timedelta(days = 1)
#往后推10秒
date + timedelta(seconds = 10)
(2)date offset
date offset 可直接实现天、小时、分钟单位的时间偏移,不需要换算,相比timedelta更方便。
from pandas.tseries.offsets import Day,Hour,Minute
'''
功能:时间偏移
返回值:时间戳
'''
date = datetime(2020, 5, 19, 10, 42)
#往后推一天
date + Day(1)
#Timestamp('2020-05-21 10:42:00'),返回的是时间戳
#往后推一小时
date + Hour(1)
#Timestamp('2020-05-20 11:42:00')
#往后推10分钟
date + Minute(10)
#Timestamp('2020-05-20 10:52:00')
#往前推就是减
- Idea 常用快捷键
- silverlight中如何方便在多个"场景"即Xaml文件之间随意切换?
- 电子签名实现的思路、困难及解决方案
- JavaScript排序算法详解
- 事件处理需小心
- Mysql读写分离方案-MySQL Proxy环境部署记录
- Mysql读写分离方案-Amoeba环境部署记录
- linux系统终端命令提示符设置(PS1)记录
- 从MapX到MapXtreme2004[10]-根据zoom值修改显示范围
- Linq to Sql中Single写法不当可能引起的数据库查询性能低下
- 获得定长字符串
- vue2.0知识点汇总
- ie6,ie7,ff 的css兼容hack写法
- 使用子查询时应当注意的
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法