import time
time.time() #绝对值时间,当前时间,1970年到现在的秒数,10位数
pd.Timestamp(time.time(),unit = 's') #转换为标准时间,0时区的时刻
只能单个转换为时间戳
#Timestamp 只能单个转换时间戳
pd.Timestamp(time.time(),unit = 's')
pd.Timestamp(year = 2022,month = 2,day = 5,hour = 13,minute = 14,second = 25) #关键字参数
pd.Timestamp(2022,2,5,13,14,25) #位置参数
pd.Timestamp('2022-2-3') #时分秒不写默认为0
既可以单个转换也可以多个时间转换
pd.to_datetime('2022/2/3 13:14:24') #单个转换
pd.to_datetime(['2022/2/3 13:14:24','2022/3/3 13:14:24']) #多个时间转换
pd.to_datetime('12-11-2017', dayfirst = True)# 日在前
pd.to_datetime('2034',format = '%y%m%d')
pd.to_datetime('220304',format = '%y%m%d')
pd.to_datetime('2022.03.4',format = '%Y.%m.%d')
类型 | 描述 |
---|---|
%Y | 四位的年份 |
%y | 两位的年份 |
%m | 两位的月份 |
%d | 两位的日期号 |
%H | 小时,24小时制00-23 |
%l | 小时,12小时制01-12 |
%M | 两位的分钟 00-59 |
%S | 秒00-61,其中60,61是闰秒 |
%w | 星期日期0-6,其中0表示星期日 |
%U | 一年中的星期数00-53。以星期天为每周第一天,一年中第一个星期天前的日期作为第“0”周 |
%W | 一年中的星期数00-53。以星期一为每周第一天,一年中第一个星期一前的日期作为第“0”周 |
%z | 格式为+HHMM或者-HHMM 的UTC时区偏移;若没有时区则为空 |
%F | %Y-%m-%d 的简写 |
%D | %m%d%y 的简写日 |
pd.to_datetime(['2017-01-01','2017-10-32'], errors = 'ignore')# error忽略(将错就错:生成的日期为错误的日期)
pd.to_datetime(['2017-01-01','2017-10-32'], errors = 'coerce')# error强迫(让错误内容显示为'NaT')
today_now = time.time()
# timestamp 转为 标准时间
t = pd.to_datetime([today_now], unit = 's')
t.view()
# 标准时间 转为 timestamp
t.view('int64')
固定跨度时间的生成
pd.date_range('2020-3-5',freq='T',periods = 5) #periods:持续时间;freq:频率
#freq: Y年;M月;D天;H小时; T分钟;S秒
将标准时间转化为指定字符串形式,步骤有二:
.dt.strftime('%y/%m/%d')
.dt.year #提取年份,int类型
.dt.month #提取月份,int类型
.dt.minute #提取分钟,int类型
.dt.date #提取日期,object类型
.dt.time #提取时间,object类型
data = pd.DataFrame({'日期':pd.date_range('2020-3-5',freq='M',periods = 5) ,
'订单量':[23,45,76,23,67],'金额':[23.434,2343.54,23.23,45.21,4356.54]})
#将日期设置为索引
data.set_index('日期',inplace = True)
data
时间列变为索引之后,提取元素时,不用加“.dt”
#提取日
data.index.day
#是否为每月的第一天
data.index.is_month_start
data.loc['2020-04-30']#选单个
data.loc['2020-04-30':'2020-07-31'] #选多个
# 高级操作选出2020-04
data.loc['2020-04']
d - pd.DateOffset(years = 1) #减1年
d + pd.DateOffset(years = 1,months = 5) #加1年5个月
d + pd.DateOffset(years = 1,days = 10) #加1年10天
#东8区时间(0时区时间+8小时)
pd.Timestamp(time.time(),unit = 's') + pd.DateOffset(hours = 8)
重采样就是特殊的groupby
data = pd.DataFrame({'日期':pd.date_range('2020-3-5',freq='M',periods = 15) ,
'订单量':np.random.randint(50,100,15),'金额':np.random.randint(50,100,15)*100})
data
#常规方法按照年份对金额求总计
data['年份'] = data.日期.dt.year
data.groupby('年份')['金额'].sum()
data.resample('M')['金额'].sum() #这里面的月份包括前面的年
data.resample('6M')['金额'].sum() #6个月求一次和