第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Pandas 時間序列相關總結

1. 前言

前面四小節(jié)我們通過 Pandas 時間序列的概述,常用三種時間序列類型的創(chuàng)建、常用屬性和方法,以及對應的索引類型的的創(chuàng)建和使用等知識的學習,基本掌握了時間序列數(shù)據(jù)類型的處理方法,本小節(jié)我們將對時間序列的相關知識進行總結,以及這三種常用時間序列類型的相互轉換,通過進一步的學習,幫助我們今后更加高效的處理和分析時間序列相關的數(shù)據(jù)集。

2. 頻率和偏移

我們在學習三種時間序列類型時,經(jīng)常會接觸到創(chuàng)建對象時指定的頻率和時間偏移量,Pandas 時間序列中提供了時間或日期偏移量,對于每一個偏移量的 Pandas 都有對應的頻率值:

頻率值 偏移量 說明
D Day 日歷日
H Hour 小時
T 或 min Minute
S Second
L 或 ms Milli 毫秒
U Micro 微秒
M MonthEnd 每月最后一個日歷日
BM BusinessMonthEnd 每月最后一個工作日

3. 時間序列類型轉換

我們在用到時間序列的三種常用類型時,經(jīng)常要用到他們之間的相互轉換,便于我們對數(shù)據(jù)的進一步分析處理。下面我們就來學習一下用于時間序列類型轉換的三個函數(shù):

2.1 to_datetime() 函數(shù)

該函數(shù)將數(shù)據(jù)值轉換為時間戳。

pd.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=None, box=True, format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=True)
參數(shù)名 說明
arg 要轉為時間戳對象的內容,類型可以為 str、int、float 等等
errors 對于無效解析的相應方式有三種值:ignore,raise,coerce,默認是 raise
exact 精度
format 解析出來的時間格式

下面我們通過代碼演示將一個日期時間格式的字符串轉換為時間戳 Timestamp :

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
# 通過 to_datetime() 將 str 數(shù)據(jù)類型 函數(shù)轉換為 時間戳
pd.to_datetime('2020-01-03')
# --- 輸出結果 ---
Timestamp('2020-01-03 00:00:00')

2.2 to_period() 函數(shù)

該函數(shù)用于將時間戳轉換為時期數(shù)據(jù)。轉換時要指定轉換的頻率,因為時間戳表示的是固定的時間點,而時期表示的是時間區(qū)間。

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
tms_res=pd.Timestamp('2020-11-23 10:40:00')
print(tms_res)
# --- 輸出結果 ---
2020-11-23 10:40:00

# 通過 to_period 函數(shù)指定轉換頻率,轉換成時期對象
period_res=tms_res.to_period('H')
print(period_res)
print(type(period_res))
# --- 輸出結果 ---
2020-11-23 10:00
<class 'pandas._libs.tslibs.period.Period'>

2.3 to_timestamp() 函數(shù)

該函數(shù)用于將時期數(shù)據(jù)轉換為時間戳。

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
# 定義時期對象
period_res=pd.Period('2020-11-23 10:40')
print(period_res)
# --- 輸出結果 ---
2020-11-23 10:40

# 通過函數(shù) to_timetamp() 轉換為 時間戳
tms_res=period_res.to_timestamp()
print(tms_res)
print(type(tms_res))
# --- 輸出結果 ---
2020-11-23 10:40:00
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

# 還可以通過 how 參數(shù)指定日期的開始還是結束時間進行轉換為時間戳
tms_res=period_res.to_timestamp(how='end')
print(tms_res)
# --- 輸出結果 ---
2020-11-23 10:40:59.999999999

4. 重采樣

Pandas 時間序列重采樣,是指將時間序列從一個頻率轉換為另外一個頻率的操作,主要是通過函數(shù) resample () 進行實現(xiàn)的,采樣又可以分為降采樣(高頻率的數(shù)據(jù)聚合到低頻率的數(shù)據(jù)),升采樣(低頻率數(shù)據(jù)轉換為高頻率數(shù)據(jù))。

resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, loffset=None, base=None, on=None, level=None, origin='start_day', offset=None)

下面是該函數(shù)常用參數(shù)的說明:

參數(shù)名 說明
rule 轉換的偏移規(guī)則
axis 默認是縱軸 (axis=0)
closed 降采樣時,哪一端是閉合的,默認是 right
label 降采樣時,設置聚合值的標簽
convention 重采樣時期時,低頻率轉換為高頻率所采用的約定,默認是 end

下面我們通過代碼演示一下該函數(shù)的使用:

# 導入pandas包
import pandas as pd
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第25小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)
# --- 輸出結果 ---
                    時間  人數(shù)  銷售數(shù)量
0  2020-01-02 12:25:00  12   234
1  2020-01-02 12:30:00  23   300
2  2020-01-02 12:35:00  44   345
3  2020-01-02 12:40:00  56   401
4  2020-01-02 12:45:00  60   420
5  2020-01-02 12:50:00  70   623

# 將時間列的 str 值轉換為 時間戳索引
data.index=pd.to_datetime(data['時間'])
del(data['時間'])
print(data)
# --- 輸出結果 ---
                     人數(shù)  銷售數(shù)量
時間                           
2020-01-02 12:25:00  12   234
2020-01-02 12:30:00  23   300
2020-01-02 12:35:00  44   345
2020-01-02 12:40:00  56   401
2020-01-02 12:45:00  60   420
2020-01-02 12:50:00  70   623
        
# 1. 降采樣 我們之前的采樣的頻率為 5 分鐘,我們將采樣頻率調整為 10 分鐘
ss=data.resample('10MIN').mean()
print(ss)
# --- 輸出結果 ---
                     人數(shù)   銷售數(shù)量
時間                              
2020-01-02 12:20:00  12.0  234.0
2020-01-02 12:30:00  33.5  322.5
2020-01-02 12:40:00  58.0  410.5
2020-01-02 12:50:00  70.0  623.0
      
# 2.升采樣 我們將之前的采樣頻率 5 分鐘,改成 2 分鐘進行重采樣,這里注意 默認使用 NaN 進行填充
ss=data.resample('3MIN').mean()
print(ss)
# --- 輸出結果 ---
                     人數(shù)   銷售數(shù)量
時間                              
2020-01-02 12:24:00  12.0  234.0
2020-01-02 12:27:00   NaN    NaN
2020-01-02 12:30:00  23.0  300.0
2020-01-02 12:33:00  44.0  345.0
2020-01-02 12:36:00   NaN    NaN
2020-01-02 12:39:00  56.0  401.0
2020-01-02 12:42:00   NaN    NaN
2020-01-02 12:45:00  60.0  420.0
2020-01-02 12:48:00  70.0  623.0

5. 小結

本小節(jié)我們主要對時間序列的知識進行總結,主要包括時間序列頻率和偏移的概念,數(shù)據(jù)類型之間的轉換,數(shù)據(jù)的重采樣。本節(jié)課程的重點如下:

  • 時間序列數(shù)據(jù)類型之間的轉換函數(shù) to_datetime () , to_period () , to_timestamp ();
  • 重采樣函數(shù) resample () 的應用。