Pandas之datetime数据基础详解!
- 一、日期和时间数据类型
- 1.利用datetime模块构建时间和日期数据
- 2.日期和时间的结合体(datetime类型数据)
- 3.datetime与字符串
- 二、pandas时间序列基础
- 1.使用date_range函数创建日期范围
- 2.在数据种索引和切片时间序数据
- 3.to_datetime将字符串类型的日期转换成时间类型的日期
一、日期和时间数据类型
🔥工作中难免会处理一些和时间打交道的数据,所以好好看看这篇文章吧!
🔥
1.利用datetime模块构建时间和日期数据
📃date类型的使用:(年月日)
#导入datetime模块
import datetime
#创建日期类型数据
date = datetime.date(2022,11,8)
#获取年
print(date.year)
#获取月
date.month
#获取日
date.day
🍰time类型的使用:(时分秒)
#导入datetime模块
import datetime
#创建时间数据类型
time = datetime.time(16,31,30)
#获取时间
print(time)
#获取小时
time.hour
#获取分钟
time.minute
#获取秒
time.second
2.日期和时间的结合体(datetime类型数据)
📒datetime类型的使用:(年月日时分秒)
#导入datetime模块
import datetime
#创建日期和时间结合体数据类型
datetime =datetime.datetime(2022,11,8,16,38,30)
#获取日期和时间结合体
datetimne #这个会连带数据类型输出
print(datetime)#两个获取输出格式不同
#获取年
print(datetime.year)
#获取月
print(datetime.month)
#获取日
print(datetime.day)#获取时分秒与年月日类似,不在此一一展示
📔获取当前时间
#导入datetime模块
import datetime
#获取当前时间
datetime.datetime.now()
print(datetime,datetime.now())
3.datetime与字符串
📢使用强制类型转换为字符串:
#导入datetime模块
import datetime
#创建日期和时间
datetime =datetime.datetime(2022,11,8,16,38,30)
#查看datetime的类型
print(type(datetime)) #输出类型为<class 'datetime.datetime'>
#使用强制类型转换为字符串类型
str_datetime = str(datetime)
print(str_datetime)
print(type(str_datetime)) #输出显示为 <class 'str'>,但是字符串样式不能改变
🔔使用strftime函数转换为指定样式字符串:
#导入datetime模块
import datetime
#创建日期和时间
datetime =datetime.datetime(2022,11,8,16,38,30)
#使用strftime转换指定格式字符串
new_datetime=datetime.strftime('%d/%m/%y %H:%M')#填入相应的占位符
new_datetime
print(type(new_datetime))#类型也是<calss 'str'>
💖使用strptime将字符串转换为datetime类型:
#导入datetime模块
import datetime
datetime = datetime.datetime.strptime('Mar-17-22 19:33','%b-%d-%y %H:%M')
print(datetime)
print(type(datetime))
二、pandas时间序列基础
处理和时间打交道的数据我们不妨先把他们设置为以时间序列为索引的数据,先利用时间筛选出我们想要的数据
1.使用date_range函数创建日期范围
😜date_range函数参数含义:
date_range():
start:日期范围的开始
end:日期范围的结束
periods:固定日期的个数
freq:日期的便宜了,类型为string,默认值为‘D’,意思为一天为日期的偏移量
#用到了pandas
import pandas as pd
#date_rang快速创建日期范围
date =pd.date_range(start='20220312',end='20220331')#使用了start和end两个参数
date
#使用start、end、freq三个参数,频率为10天
date2= pd.date_range(start='20220317',end='20220606',freq='10D')
date2
#使用start、end、periods三个参数,频率为默认1天
date3= pd.date_range(start='20220317',periods=10,freq='D')
date3
2.在数据种索引和切片时间序数据
#将时间设置为数据的索引值
import pandas as pd
import numpy as np
#生成365个时间序列
time_index = pd.date_range('2022-01-01',periods=365)
#创建365个随机数序列
time_data = np.random.randint(100,size=365)
#创建以时间为索引的Series
date_time = pd.Series(data=time_data,index=time_index)
date_time
📌根据时间进行索引:
#根据年份进行索引
date_time['2022'] #会显示2022年所有数据
#根据年和月进行索引取值
date_time['2022-04']#会显示2022年4月全部数据
#根据一个时间范围(时间戳)进行切片取值
date_time['2022-03-17':'2022-03-30'] #这个如下图所示
3.to_datetime将字符串类型的日期转换成时间类型的日期
🔓to_datetime参数含义:
pd.to_datetime(arg,format=None)
arg:需要修改的数据
format:数据格式
#将字符串类型的时间转换成时间戳类型 Timestamp
import pandas as pd
data= '2022-03-17'
date1 = pd.to_datetime(data)
date1 #输出:Timestamp('2022-03-17 00:00:00')
#时间戳转为datetime类型 用 to_pydatetime()
date2 = date1.to_pydatetime()
date2 #输出:datetime.datetime(2022, 3, 17, 0, 0)
#2022年11月8日,如何转换,利用 format参数
date3 =pd.to_datetime('2022年11月8日',format='%Y年%m月%d日')
date3 #输出:Timestamp('2022-11-08 00:00:00')