時間序列--日期和時間數據類型及工具


時間序列(time series)數據是一種重要得結構化數據形式,在多個時間點觀察或測量到得任何事物都可以形成一段時間序列,很多時間序列是固定頻率的。也就是說,數據點是根據某種規律定期出現的(比如15s、5min、1mont)。時間序列也可以是不定期的。時間序列的意義取決於具體的應用場景,主要有以下幾種:

  • 時間戳(timestamp),特定的時刻
  • 固定日期(period),如2007年1月或2010年全年
  • 時間間隔(interval),由起始和結束時間戳表示,時期(period)可以被看作間隔(interval)的特例
  • 實驗或過程時間,每個時間點都是相對於特定起始時間的一個度量

pandas提供了一組標准的時間序列處理工具和數據算法。

1.1 日期和時間數據類型及工具

python標准庫包含用於日期(date)和時間(time)數據的數據類型,以及日歷方面的功能。主要用到datetime、time以及calendar模塊。

約定:from datetime import datetime

1 >>> from datetime import datetime
2 >>> now = datetime.now()
3 >>> now
4 datetime.datetime(2020, 2, 5, 10, 58, 59, 339099)
5 >>> now.year, now.month, now.day 
6 (2020, 2, 5)

datetime以毫秒形式存儲日期和時間,datetime.timedelta表示兩個datetime對象之間的時間差:

1 >>> delta = datetime(2011, 1, 7) - datetime(2011, 1, 6) 
2 >>> delta.days                    
3 1
4 >>> delta.seconds
5 0
6 >>>

可以給datetime對象加上(或減去)一個或多個timedelta。

1 >>> from datetime import timedelta
2 >>> start = datetime(2011, 1, 7) 
3 >>> start + timedelta(12)
4 datetime.datetime(2011, 1, 19, 0, 0)
5 >>> start - 2 * timedelta(12)
6 datetime.datetime(2010, 12, 14, 0, 0)

datetime模塊中的數據類型如下表所示:

類型

說明

date

以公歷形式存儲日歷日期(年、月、日)

time

將時間存儲為時、分、秒、毫秒

datetime

存儲日期和時間

timedelta

表示兩個datetime值之間的差(日、秒、毫秒)

1.1.1  字符串和datetime的相互轉換

利用str或strftime方法(傳入一個格式化字符串),datetime對象和pandas的Timestamp對象可以被格式化為字符串。

1 >>> stamp = datetime(2020, 2, 5) 
2 >>> str(stamp) 
3 '2020-02-05 00:00:00'
4 >>> stamp.strftime('%Y-%m-%d') 
5 '2020-02-05'

下表是全部的格式化編碼,datatime.strptime可以用這些格式化編碼將字符串轉換為日期:

代碼

說明

%Y

4位數的年

%y

2位數的年

%m

2位數的月[01, 12]

%d

2位數的日[01, 31]

%H

時(24小時制)[00, 23]

%

時(12小時制)[01, 12]

%M

2位數的分[00, 59]

%S

秒[00, 60](秒60和61用於閏秒)

%w

用整數表示的星期幾[0(星期天), 6]

%U

每年的第幾周[00, 53],星期天被認為是每周的第一天,每年第一個星期天之前的那幾天被認為是“第0周”。

%W

每年的第幾周[00, 53],星期一被認為是每周的第一天,每年第一個星期一之前的那幾天被認為是“第0周”

%z

以+HHMM或-HHMM表示的UTC時區偏移量,如果時區為naïve,則返回空字符串

%F

%Y-%m-%d簡寫形式,例如2012-4-18

%D

%m/%d/%y簡寫形式,例如04/18/12

datetime對象還有一些特定於當前環境(位於不同國家或不同語言的系統)的格式化選項。如下表所示:

代碼

說明

%a

星期幾的簡寫

%A

星期幾的全稱

%b

月份的簡寫

%B

月份的全稱

%c

完整的日期和時間,例如“Tue 01 May 2012 04:20:57 PM”

%p

不同環境中的AM或PM

%x

適合於當前環境的日期格式

%X

適用於當前環境的時間格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM