利用Python进行数据分析(5)- 3大时间序列模块
时间序列在很多的领域都是重要的结构化数据形式,例如经济学、金融、生态学、物理学等,其特点是:
- 在多个时间点进行了观测
- 许多时间序列是固定频率,即根据相同的规则定期出现
- 时间序列也可以是没有规则的
时间序列的应用
- 时间戳
- 固定的时间区间
- 时间间隔
笔记1:最广泛和最简单的时间序列是时间戳引起的
处理时间的3
大模块:
- datetime
- time
- calendar
下面👇详细介绍3大模块的使用
calendar
日历模块calendar
中,常用的方法是
calendar
calendar(year,w=2,l=1,c=6):返回year年的日历,3个月一行,间隔距离(每2个月的间隔,总共2个间隔)为c,每个宽度间隔w字符,每行长度:21*w+18(3*6)+2*c
打印2020年完整日历:
import calendar
year = calendar.calendar(2020)
print(year)
image
isleap(year)
判断某个年份是否是闰年
imageleapdays(y1,y2)
返回两个年份之间的闰年总数,包含y1
,不包含y2
month(year,month,w=2,l=1)
返回的是year年month月的日历,两行标题,一周一行(l=1)。每日间隔宽度为w字符,每行的宽度是7*w+6,l=1是每星期的行数
imagemonthcalendar(year, month)
返回的是列表,列表中的元素还是列表
- 每个子列表代表一个星期
- 从星期一到星期日,没有本月的日期用0表示
对比
imagemonthrange(year,month)
返回的是个元组,两个数字:
- 第一个:从星期几开始,0代表星期1,6代表星期日
- 第二个:该月共多少天
weekday(y,m,d)
输入年月日,知道是星期几
注意:返回值依然是从0-6对应的是星期一到星期日
imagetime
time
模块的各种属性方法总结如下:
time
time.time()
是获取当前的时间,准确地说是时间戳
image笔记2:时间戳timestamp是指一连串的数据中加入文字,比如时间或者日期等,用以保证本地的数据更新和远程一致。
时间戳是以
1970-01-01 00:00:00
为起点
localtime
time.localtime
是打印当前的时间,得到的结果是时间元组,具体含义:
序号 | 属性 | 值 |
---|---|---|
0 | tm_year | 2020 |
1 | tm_mon | 1 到 12 |
2 | tm_mday | 1 到 31 |
3 | tm_hour | 0 到 23 |
4 | tm_min | 0 到 59 |
5 | tm_sec | 0 到 61 (60或61 是闰秒) |
6 | tm_wday | 0到6 (0是周一) |
7 | tm_yday | 1 到 366(儒略历) |
8 | tm_isdst | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
time.localtime
的参数默认是time.time()
的时间戳,可以自己输入某个时间戳来获取其对应的时间
gmtime
localtime
得到的是本地时间,如果需要国际化,使用gmtime
格林威治标准时间:位于英国伦敦郊区的皇家格林威治天文台的标准时间,本初子午线经过那里。
imageasctime
time.asctime的参数为空时,默认是以time.localtime的值为参数,得到当前的日期、时间、星期
imagectime
获取当前时间信息,参数默认是time.time()
的时间戳
mktime
mktime也是以时间元组为参数,比如传入localtime()的返回值;
方法返回的是时间戳格式,类似localtime的逆过程
imagestrftime
将时间元组按照指定的格式转化成字符串,如果不指定时间元组,默认是localtime
的值
python
中的时间日期格式:
格式 | 含义 | 取值范围(样式) |
---|---|---|
%y | 去掉世纪的年份 | 00-99,如“19” |
%Y | 完整的年份 | 如2019 |
%j | 指定日期是一年中的第几天 | 范围001-366 |
%m | 返回的是月份 | 范围:01-12 |
%b | 本地简化月份的名称 | 简写的英文月份 |
%B | 本地完整月份的名称 | 完整的英文月份 |
%d | 该月的第几日 | 如,5月1日返回的是“01” |
%H | 第几小时,24小时制 | 00-23 |
%l | 第几小时,12小时制 | 00-12 |
%M | 分钟 | 00-59 |
%S | 秒 | 00-59 |
%U | 该年中的第几个星期(周日为一周的起点) | 00-53 |
%W | 同上,周一为起点 | 00-53 |
%w | 一个星期中的第几天 | 0-6 |
%Z | 时区 | 在大陆测试返回的是CST |
%x | 日期 | 日/月/年 |
%X | 时间 | 时:分:秒 |
%c | 详细日期时间 | 日/月/年时:分:秒 |
%% | %字符 | '%'字符 |
%p | 上下午 | AM or PM |
strptime
strptime的作用是将字符串转化成时间元组,有两个参数:
- 时间字符串,比如“20/04/10”
- 时间字符换对应的格式
datetime
datetime
模块中常用的几个类:
- date:日期类,常用属性:year/month/day
- time:时间类,常用属性:hour/minute/second/microsecond
- datetime:日期时间类
- timedelta:时间间隔
- tzinfo:时区类
date
image不能直接使用datetime.date.year()
,因为year
不是一个方法
时间戳与格式化时间的转化:
imagetime
time
类也要先生成time
对象才能使用
timedelta
imagedatetime
对象属性信息
datetime
中既保存了日期,也保存了细化到微秒的时间。
字符串和datetime的转换
通过使用str方法或者strftime()方法来对datetime对象和pandas中的timestamp对象进行格式化
image imagedateutil
第三方包dateutil
的parser.parse
。安装pandas的时候自动安装