目录
- 1 生成时间
- 2 时间格式转换 .dt.strftime()
- 3 提取时间元素 .dt.year
- 4 日期索引序列 data.set_index('日期',inplace = True)
- 5 时间偏移: DateOffset对象
- 6 重采样:resample
时间序列:索引为时间
时间序列是经济学的一种统计方法,它是采用时间排序的一组随机变量。
用途:
1、生成固定跨度的时期构成时间序列
2、转化时间序列格式
3、计算序列中的相对时间
import timetime.time() #绝对值时间,当前时间,1970年到现在的秒数,10位数pd.Timestamp(time.time(),unit = 's') #转换为标准时间,0时区的时刻
1 生成时间
1.1 pd.Timestamp
只能单个转换为时间戳
#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
1.2 pd.to_datetime 最常用
既可以单个转换也可以多个时间转换
1.2.1 单个转换
pd.to_datetime('2022/2/3 13:14:24') #单个转换
1.2.2 多个时间转换
pd.to_datetime(['2022/2/3 13:14:24','2022/3/3 13:14:24']) #多个时间转换
1.2.3 日期在前 dayfirst
pd.to_datetime('12-11-2017', dayfirst = True)# 日在前
1.2.4 处理特殊格式 format
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')
format中填写的类型
类型 | 描述 |
---|---|
%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 的简写日 |
1.2.5 处理无效时间 errors
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')
1.2.6 和timestamp互转
today_now = time.time()# timestamp 转为 标准时间t = pd.to_datetime([today_now], unit = 's')t.view()# 标准时间 转为 timestampt.view('int64')
1.3 固定跨度时间的生成 pd.date_range
固定跨度时间的生成
pd.date_range('2020-3-5',freq='T',periods = 5) #periods:持续时间;freq:频率#freq: Y年;M月;D天;H小时; T分钟;S秒
2 时间格式转换 .dt.strftime()
将标准时间转化为指定字符串形式,步骤有二:
- 不规则的字符串日期 ————pd.to_datetime()————日期类型的数据
- 已经有了datetime类型的日期字段———— .dt.strftime()————字符串日期
.dt.strftime('%y/%m/%d')
3 提取时间元素 .dt.year
.dt.year #提取年份,int类型.dt.month #提取月份,int类型.dt.minute #提取分钟,int类型.dt.date #提取日期,object类型.dt.time #提取时间,object类型
4 日期索引序列 data.set_index(‘日期’,inplace = True)
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
4.1 提取时间元素 data.index.day
时间列变为索引之后,提取元素时,不用加“.dt”
#提取日data.index.day#是否为每月的第一天data.index.is_month_start
4.2 切片与索引
4.2.1 常规
data.loc['2020-04-30']#选单个data.loc['2020-04-30':'2020-07-31'] #选多个
常规操作选取符合条件的的行
4.2.2 高级 data.loc[‘’]
# 高级操作选出2020-04data.loc['2020-04']
5 时间偏移: DateOffset对象
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)
6 重采样:resample
重采样就是特殊的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
6.1 常规方法 按照年份对金额求和
#常规方法按照年份对金额求总计data['年份'] = data.日期.dt.yeardata.groupby('年份')['金额'].sum()
6.2 resample
data.resample('M')['金额'].sum() #这里面的月份包括前面的年data.resample('6M')['金额'].sum() #6个月求一次和
来源地址:https://blog.csdn.net/one_bird_/article/details/130233954