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 是用的最多的。

  • 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

注:

  • 常用的基本操作爲字符串轉日期和日期轉字符串,即以上轉換的後半節和前半節
  • 注意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,我們不只是說說而已

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章