时间序列

日期和时间数据类型

datetime是一个关于时间的库,常用的类有

1、date类型,存储公历日期:年、月、日

2、time类型,存储时间:时、分、秒

3、datetime类型:存储日期时间

日期类型的使用

# 导入datetime模块
import datetime
# 创建日期
date = datetime.date(2021, 4, 15)
print(date)
# 获取年
print(date.year)
# 获取月
print(date.month)
# 获取日
print(date.day)
2021-04-15
2021
4
15

时间类型的使用

# 创建时间
import datetime
time = datetime.time(20, 57, 20)
print(time)
# 获取小时
print(time.hour)
# 获取分钟
print(time.minute)
# 获取秒
print(time.second)
20:57:20
20
57
20

日期时间类型

import datetime
# 创建日期时间
datetime = datetime.datetime(2021, 4, 15, 20, 57, 20)
print(datetime)
# 获取年
print(datetime.year)
# 获取月
print(datetime.month)
# 获取日
print(datetime.day)
# 获取小时
print(datetime.hour)
# 获取分钟
print(datetime.minute)
# 获取秒
print(datetime.second)
2021-04-15 20:57:20
2021
4
15
20
57
20
# 获取当前时间
datetime.now()
datetime.datetime(2021, 4, 15, 20, 58, 16, 383532)
import datetime
dt = datetime.datetime(2021, 4, 15, 20, 57, 20)
print(dt)
print(type(dt)) # datetime类型
2021-04-15 20:57:20
<class 'datetime.datetime'>
# 转换成字符串类型
dt1 = str(dt)
print(type(dt1))
print(dt1)
<class 'str'>
2021-04-15 20:57:20
import datetime
date_time = datetime.datetime(2021, 4, 15, 21, 00, 30) # strftime()方法的作用是将时间格式转化为自定义字符串格式,格式可以自定义。
str_time = date_time.strftime('%m/%d/%Y %H:%M:%S') # 转化输出时间格式
str_time
'04/15/2021 21:00:30'

在这里插入图片描述

import datetime
strp = datetime.datetime.strptime('Apr-15-21 21:01', '%b-%d-%y %H:%M') 
# strptime()方法的作用是字符串时间转化为datetime格式,需要注意的是按一定的格式输出时间。后面的参数是前面日期时间参数的样式

print(strp)
2021-04-15 21:01:00

pandas时间序列基础

# 使用Pandas的date_range()方法可以快速创建出一个日期范围
pd.date_range(start=None,end=None,periods=None,freq="D")
# start:日期范围的开始;end:日期范围的结束;periods:创建日期的个数;freq:日期间隔时长,取值为string, 默认为'D',即:一天为日期偏移量
import pandas as pd 
date= pd.date_range(start='20210415',end='20210501') # 创建从2021-4-15至2021-5-1,间隔为一天的
print(date)
print(type(date)) # 时间索引类型
DatetimeIndex(['2021-04-15', '2021-04-16', '2021-04-17', '2021-04-18',
               '2021-04-19', '2021-04-20', '2021-04-21', '2021-04-22',
               '2021-04-23', '2021-04-24', '2021-04-25', '2021-04-26',
               '2021-04-27', '2021-04-28', '2021-04-29', '2021-04-30',
               '2021-05-01'],
              dtype='datetime64[ns]', freq='D')
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>
date2 = pd.date_range(start='20210415',end='20210430',freq='10D') # 间隔为10天
date2
DatetimeIndex(['2021-04-15', '2021-04-25'], dtype='datetime64[ns]', freq='10D')
date3 = pd.date_range(start='20210415',periods=3,freq='5D') # 从2021-4-15日开始,以5天为间隔,创建三个日期
date3
DatetimeIndex(['2021-04-15', '2021-04-20', '2021-04-25'], dtype='datetime64[ns]', freq='5D')
date4 = pd.date_range(start='20210415',periods=3,freq='5B') # 从2021-4-15日开始,以5个工作日为间隔,创建三个日期
date4
DatetimeIndex(['2021-04-15', '2021-04-22', '2021-04-29'], dtype='datetime64[ns]', freq='5B')

更多频率的缩写:
在这里插入图片描述

有时需要分析随时间变化产生变化的一个现象,就需要将时间索引设置为数据的索引,然后通过时间索引获取到一定时间范围的数据进行分析

时间索引Series的创建

# 创建一个以时间序列为索引的Series数据。
import pandas as pd 
import numpy as np
date_index = pd.date_range(start='20210415',periods=30) 
data = np.random.randint(0,100,size=30) # 创建一个30天的时间索引
se = pd.Series(index=date_index,data=data) # 随机创建30个0-100的整数
se
2021-04-15     4
2021-04-16    13
2021-04-17    20
2021-04-18    48
2021-04-19    31
2021-04-20    74
2021-04-21    60
2021-04-22     5
2021-04-23     6
2021-04-24    88
2021-04-25    94
2021-04-26    24
2021-04-27     0
2021-04-28    75
2021-04-29    75
2021-04-30    44
2021-05-01    28
2021-05-02    73
2021-05-03    50
2021-05-04     3
2021-05-05    86
2021-05-06    78
2021-05-07    83
2021-05-08    11
2021-05-09    35
2021-05-10    93
2021-05-11    41
2021-05-12     7
2021-05-13    17
2021-05-14    50
Freq: D, dtype: int32

时间索引Series的取值

# 根据年份进行取值
se['2021']
2021-04-15     4
2021-04-16    13
2021-04-17    20
2021-04-18    48
2021-04-19    31
2021-04-20    74
2021-04-21    60
2021-04-22     5
2021-04-23     6
2021-04-24    88
2021-04-25    94
2021-04-26    24
2021-04-27     0
2021-04-28    75
2021-04-29    75
2021-04-30    44
2021-05-01    28
2021-05-02    73
2021-05-03    50
2021-05-04     3
2021-05-05    86
2021-05-06    78
2021-05-07    83
2021-05-08    11
2021-05-09    35
2021-05-10    93
2021-05-11    41
2021-05-12     7
2021-05-13    17
2021-05-14    50
Freq: D, dtype: int32
# 依据年和月进行取值
se['2021-04']
2021-04-15     4
2021-04-16    13
2021-04-17    20
2021-04-18    48
2021-04-19    31
2021-04-20    74
2021-04-21    60
2021-04-22     5
2021-04-23     6
2021-04-24    88
2021-04-25    94
2021-04-26    24
2021-04-27     0
2021-04-28    75
2021-04-29    75
2021-04-30    44
Freq: D, dtype: int32
# 可以使用时间戳进行切片获取数据
se['2021-04-20':'2021-05-05']
2021-04-20    74
2021-04-21    60
2021-04-22     5
2021-04-23     6
2021-04-24    88
2021-04-25    94
2021-04-26    24
2021-04-27     0
2021-04-28    75
2021-04-29    75
2021-04-30    44
2021-05-01    28
2021-05-02    73
2021-05-03    50
2021-05-04     3
2021-05-05    86
Freq: D, dtype: int32
# 有的时候用csv导入时间数据时,默认的是字符串的数据类型。
# 当可视化的时候,会出现没有按时间先后顺序的方式绘图 ,所以需要将字符串解析为时间类型的数据类型。
# 使用Pandas的to_datetime()方法可以将字符串形式的日期转换成时间格式。
# pd.to_datetime(arg,format=None)
# arg:需要修改的数据; format:需要修改数据的格式

pd.to_datetime('2021-04-15 21:31') # 默认转化为时间戳类型
Timestamp('2021-04-15 21:31:00')
# 如果想对时间格式修改,可以使用to_pydatetime()方法将Timestamp类型转换成datetime类型。
pd.to_datetime('2021-04-15 21:31').to_pydatetime()
datetime.datetime(2021, 4, 15, 21, 31)
# 时间中含有中文
pd.to_datetime('2019年10月10日',format='%Y年%m月%d日')
Timestamp('2019-10-10 00:00:00')

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值