python学习——时间序列

目录

  • 1 生成时间
    • 1.1 pd.Timestamp
    • 1.2 pd.to_datetime 最常用
      • 1.2.1 单个转换
      • 1.2.2 多个时间转换
      • 1.2.3 日期在前 dayfirst
      • 1.2.4 处理特殊格式 format
      • 1.2.5 处理无效时间 errors
      • 1.2.6 和timestamp互转
    • 1.3 固定跨度时间的生成 pd.date_range
  • 2 时间格式转换 .dt.strftime()
  • 3 提取时间元素 .dt.year
  • 4 日期索引序列 data.set_index('日期',inplace = True)
    • 4.1 提取时间元素 data.index.day
    • 4.2 切片与索引
      • 4.2.1 常规
      • 4.2.2 高级 data.loc['']
  • 5 时间偏移: DateOffset对象
  • 6 重采样:resample
    • 6.1 常规方法 按照年份对金额求和
    • 6.2 resample

时间序列:索引为时间
时间序列是经济学的一种统计方法,它是采用时间排序的一组随机变量。
用途:
1、生成固定跨度的时期构成时间序列
2、转化时间序列格式
3、计算序列中的相对时间

import time
time.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

python学习——时间序列_第1张图片

1.2 pd.to_datetime 最常用

既可以单个转换也可以多个时间转换

1.2.1 单个转换

pd.to_datetime('2022/2/3 13:14:24')  #单个转换

python学习——时间序列_第2张图片

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)# 日在前

python学习——时间序列_第3张图片

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')

python学习——时间序列_第4张图片
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')

python学习——时间序列_第5张图片

1.2.6 和timestamp互转

today_now = time.time()
# timestamp 转为 标准时间
t = pd.to_datetime([today_now], unit = 's')
t.view()
# 标准时间 转为 timestamp
t.view('int64')

python学习——时间序列_第6张图片

1.3 固定跨度时间的生成 pd.date_range

固定跨度时间的生成

pd.date_range('2020-3-5',freq='T',periods = 5) #periods:持续时间;freq:频率
#freq: Y年;M月;D天;H小时; T分钟;S秒

python学习——时间序列_第7张图片

2 时间格式转换 .dt.strftime()

将标准时间转化为指定字符串形式,步骤有二:

  1. 不规则的字符串日期 ————pd.to_datetime()————日期类型的数据
  2. 已经有了datetime类型的日期字段———— .dt.strftime()————字符串日期
.dt.strftime('%y/%m/%d')

python学习——时间序列_第8张图片

3 提取时间元素 .dt.year

.dt.year #提取年份,int类型
.dt.month #提取月份,int类型
.dt.minute #提取分钟,int类型
.dt.date #提取日期,object类型
.dt.time #提取时间,object类型

python学习——时间序列_第9张图片
python学习——时间序列_第10张图片

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

python学习——时间序列_第11张图片

4.1 提取时间元素 data.index.day

时间列变为索引之后,提取元素时,不用加“.dt”

#提取日
data.index.day
#是否为每月的第一天
data.index.is_month_start 

python学习——时间序列_第12张图片

4.2 切片与索引

4.2.1 常规

data.loc['2020-04-30']#选单个
data.loc['2020-04-30':'2020-07-31'] #选多个

python学习——时间序列_第13张图片
常规操作选取符合条件的的行
python学习——时间序列_第14张图片

4.2.2 高级 data.loc[‘’]

# 高级操作选出2020-04
data.loc['2020-04']

python学习——时间序列_第15张图片

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天

python学习——时间序列_第16张图片

#东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

python学习——时间序列_第17张图片

6.1 常规方法 按照年份对金额求和

#常规方法按照年份对金额求总计
data['年份'] = data.日期.dt.year
data.groupby('年份')['金额'].sum()

python学习——时间序列_第18张图片

6.2 resample

data.resample('M')['金额'].sum() #这里面的月份包括前面的年
data.resample('6M')['金额'].sum() #6个月求一次和

python学习——时间序列_第19张图片

python学习——时间序列_第20张图片

你可能感兴趣的:(python基础知识,python,学习,数学建模)