Python入门进阶教程-时间序列

「关注我,和我一块儿放下灵魂,让灵魂去搬砖。」正则表达式

Python时间序列

Python版本3.8.0,开发工具:Pycharm数据库

时间模块须要了解的三个概念:时间戳、时间元组、日期字符串编程

  • 时间戳:(timestamp)时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至如今的总秒数
  • 时间元组:(struct_time)时间元组是用一个元组装起来的9组数字处理时间
  • 日期字符串:一串显示日期的字符串(注意是字符串,不是时间)
# 注:同一时间的三种不一样显示方式
# 时间戳
1574851524.1845107
# 时间元组
本地时间为 : time.struct_time(tm_year=2019, tm_mon=11, tm_mday=27, tm_hour=18, tm_min=45, tm_sec=24, tm_wday=2, tm_yday=331, tm_isdst=0)
# 日期字符串
2019-11-27 18:45:24
复制代码

Python 标准库包含用于日期(date)和时间(time)数据的数据类型,并且还有日历方面的功能。在作数据分析的过程当中,咱们主要会用到datetime、time 以及calendar 模块,其中datetime 是用的最多的。bash

  • time:处理时间的模块,如获取时间戳,格式化日期等
  • datetime:date 和time 的结合体,处理日期和时间
  • calendar:日历相关的模块,如:处理年历/月历

datetime 模块

datetime 以毫秒形式存储日期和时间。微信

from datetime import datetime
now = datetime.now()
print(now)
# 能够输出当前时间的年月日
print('year: {0}, month: {1}, day: {2}'.format(now.year, now.month, now.day))

# 输出
2019-11-27 18:45:24.184510
year: 2019, month: 11, day: 27
复制代码

datetime.timedelta 表示两个datetime 对象之间时间差多线程

from datetime import timedelta

start = datetime.now()
# 输出昨天的日期
new_time = start+timedelta(-1)
print(new_time)

# 输出
2019-11-26 18:45:24.184510
复制代码

datetime 模块中的数据类型函数

类型 说明
date 以公历形式存储日历日期(年、月、日)
time 将时间存储为时、分、秒、毫秒
datetime 存储日期和时间
timedelta 表示两个datetime 值之间的查(日、秒、毫秒)

datetiem 模块时间戳和字符串的互转必须经过datetime 时间格式进行过渡工具

  • 时间戳 -> datetime 时间格式 -> 日期字符串
# 获取当前时间戳
timestamp = time.time()
# 时间戳timestamp 转datetime时间格式
datetime_time = datetime.fromtimestamp(timestamp)
# datetime时间格式转为日期字符串
datetime_str = datetime_time.strftime("%Y-%m-%d %H:%M:%S")
print(datetime_str)

# 输出
2019-11-27 18:53:03
复制代码
  • 日期字符串 -> datetime 时间格式 -> 时间戳
# 定义日期字符串
datetime_str = '2019-11-30 00:00:01'
# 日期字符串转为datetime时间格式
datetime_time = datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S')
# datetime时间格式转为时间戳
datetime_timestamp = time.mktime(datetime_time.timetuple())
print(datetime_timestamp)

# 输出
1575043201.0
复制代码

注:post

  • 经常使用的基本操做为字符串转日期和日期转字符串,即以上转换的后半节和前半节
  • 注意strftime 函数和strptime 函数的用法

time模块

了解time模块以前须要先知道什么是时间元组,元组你们都知道,那时间元组也就和它字面意思同样,存的是时间学习

时间元组struct_time结构属性

序号 属性
0 tm_year 2008
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
import time

localtime = time.localtime(time.time())
print("本地时间为 :", localtime)

# 输出
本地时间为 : time.struct_time(tm_year=2019, tm_mon=11, tm_mday=27, tm_hour=18, tm_min=56, tm_sec=3, tm_wday=2, tm_yday=331, tm_isdst=0)
复制代码

time 模块时间戳和字符串的互转也必须经过时间元组进行过渡

  • 时间戳 -> 时间元组 -> 日期字符串
# 获取当前时间戳
timestamp = time.time()
# 时间戳timestamp 转时间元组
time_tuple = time.localtime(timestamp)
# 时间元组转为日期字符串
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)
print(time_str)

# 输出
2019-11-27 18:56:03
复制代码
  • 日期字符串 -> 时间元组 -> 时间戳
# 定义日期字符串
time_str = '2019-11-30 00:00:01'
# 日期字符串转为时间元组
time_tuple = time.strptime("2019-11-30 00:00:01", "%Y-%m-%d %H:%M:%S")
# 时间元组转为时间戳
timestamp = time.mktime(time_tuple)
print(timestamp)

# 输出
1575043201.0
复制代码

注:

  • strftime 函数是将时间元组转换为日期字符串
  • strptime 函数是将字符串转换为时间元组

calendar模块(日历模块)

calendar模块的函数都是与日历相关的,好比打印某个月的日历等

import calendar
    
# 判断2019年是否是闰年
print(calendar.isleap(2019))
# 打印2019年11月的日历
print(calendar.month(2019, 11))
# 返回2019年11月15号是星期几(0是星期一,依次类推)
print(calendar.weekday(2019, 11, 15))

# 输出
False

   November 2019
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

4
复制代码


对于datetime、time 和calendar 三个时间模块,重点掌握datetime 模块,且datetime 模块中重点掌握字符串和日期的互相转换。


下节将介绍Python 数据库操做


系列文章传送门

Python入门进阶教程-JSON操做

Python入门进阶教程-多线程与多进程

Python入门进阶教程-正则表达式

Python入门进阶教程-面向对象

Python入门基础汇总


Python系列

Python系列会持续更新,从基础入门到进阶技巧,从编程语法到项目实战。若您在阅读的过程当中发现文章存在错误,烦请指正,很是感谢;若您在阅读的过程当中能有所收获,欢迎一块儿分享交流。

若是你也想和我一块儿学习Python,能够关注个人微信公众号

学习Python,咱们不仅是说说而已

相关文章
相关标签/搜索