当前位置:   article > 正文

python学习——时间序列_python 时间序列

python 时间序列


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

import time
time.time() #绝对值时间,当前时间,1970年到现在的秒数,10位数
pd.Timestamp(time.time(),unit = 's')  #转换为标准时间,0时区的时刻
  • 1
  • 2
  • 3

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
  • 3
  • 4
  • 5

在这里插入图片描述

1.2 pd.to_datetime 最常用

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

1.2.1 单个转换

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

在这里插入图片描述

1.2.2 多个时间转换

pd.to_datetime(['2022/2/3 13:14:24','2022/3/3 13:14:24'])  #多个时间转换
  • 1

在这里插入图片描述

1.2.3 日期在前 dayfirst

pd.to_datetime('12-11-2017', dayfirst = True)# 日在前
  • 1

在这里插入图片描述

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')
  • 1
  • 2
  • 3

在这里插入图片描述
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

在这里插入图片描述

1.2.6 和timestamp互转

today_now = time.time()
# timestamp 转为 标准时间
t = pd.to_datetime([today_now], unit = 's')
t.view()
# 标准时间 转为 timestamp
t.view('int64')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 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秒
  • 1
  • 2

在这里插入图片描述

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

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

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

在这里插入图片描述

3 提取时间元素 .dt.year

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

在这里插入图片描述
在这里插入图片描述

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
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

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

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

#提取日
data.index.day
#是否为每月的第一天
data.index.is_month_start 
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

4.2 切片与索引

4.2.1 常规

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

在这里插入图片描述
常规操作选取符合条件的的行
在这里插入图片描述

4.2.2 高级 data.loc[‘’]

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

在这里插入图片描述

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天
  • 1
  • 2
  • 3

在这里插入图片描述

#东8区时间(0时区时间+8小时)
pd.Timestamp(time.time(),unit = 's') + pd.DateOffset(hours = 8)
  • 1
  • 2

在这里插入图片描述

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
  • 1
  • 2
  • 3

在这里插入图片描述

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

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

在这里插入图片描述

6.2 resample

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

在这里插入图片描述

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/230254
推荐阅读
相关标签
  

闽ICP备14008679号