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

首頁 慕課教程 Pandas 入門教程 Pandas 入門教程 Pandas 時(shí)間序列相關(guān)總結(jié)

Pandas 時(shí)間序列相關(guān)總結(jié)

1. 前言

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

2. 頻率和偏移

我們?cè)趯W(xué)習(xí)三種時(shí)間序列類型時(shí),經(jīng)常會(huì)接觸到創(chuàng)建對(duì)象時(shí)指定的頻率和時(shí)間偏移量,Pandas 時(shí)間序列中提供了時(shí)間或日期偏移量,對(duì)于每一個(gè)偏移量的 Pandas 都有對(duì)應(yīng)的頻率值:

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

3. 時(shí)間序列類型轉(zhuǎn)換

我們?cè)谟玫綍r(shí)間序列的三種常用類型時(shí),經(jīng)常要用到他們之間的相互轉(zhuǎn)換,便于我們對(duì)數(shù)據(jù)的進(jìn)一步分析處理。下面我們就來學(xué)習(xí)一下用于時(shí)間序列類型轉(zhuǎn)換的三個(gè)函數(shù):

2.1 to_datetime() 函數(shù)

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

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 要轉(zhuǎn)為時(shí)間戳對(duì)象的內(nèi)容,類型可以為 str、int、float 等等
errors 對(duì)于無效解析的相應(yīng)方式有三種值:ignore,raise,coerce,默認(rèn)是 raise
exact 精度
format 解析出來的時(shí)間格式

下面我們通過代碼演示將一個(gè)日期時(shí)間格式的字符串轉(zhuǎn)換為時(shí)間戳 Timestamp :

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

2.2 to_period() 函數(shù)

該函數(shù)用于將時(shí)間戳轉(zhuǎn)換為時(shí)期數(shù)據(jù)。轉(zhuǎn)換時(shí)要指定轉(zhuǎn)換的頻率,因?yàn)闀r(shí)間戳表示的是固定的時(shí)間點(diǎn),而時(shí)期表示的是時(shí)間區(qū)間。

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

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

2.3 to_timestamp() 函數(shù)

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

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

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

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

4. 重采樣

Pandas 時(shí)間序列重采樣,是指將時(shí)間序列從一個(gè)頻率轉(zhuǎn)換為另外一個(gè)頻率的操作,主要是通過函數(shù) resample () 進(jìn)行實(shí)現(xiàn)的,采樣又可以分為降采樣(高頻率的數(shù)據(jù)聚合到低頻率的數(shù)據(jù)),升采樣(低頻率數(shù)據(jù)轉(zhuǎn)換為高頻率數(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 轉(zhuǎn)換的偏移規(guī)則
axis 默認(rèn)是縱軸 (axis=0)
closed 降采樣時(shí),哪一端是閉合的,默認(rèn)是 right
label 降采樣時(shí),設(shè)置聚合值的標(biāo)簽
convention 重采樣時(shí)期時(shí),低頻率轉(zhuǎn)換為高頻率所采用的約定,默認(rèn)是 end

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

# 導(dǎo)入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)
# --- 輸出結(jié)果 ---
                    時(shí)間  人數(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

# 將時(shí)間列的 str 值轉(zhuǎn)換為 時(shí)間戳索引
data.index=pd.to_datetime(data['時(shí)間'])
del(data['時(shí)間'])
print(data)
# --- 輸出結(jié)果 ---
                     人數(shù)  銷售數(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 分鐘,我們將采樣頻率調(diào)整為 10 分鐘
ss=data.resample('10MIN').mean()
print(ss)
# --- 輸出結(jié)果 ---
                     人數(shù)   銷售數(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 分鐘進(jìn)行重采樣,這里注意 默認(rèn)使用 NaN 進(jìn)行填充
ss=data.resample('3MIN').mean()
print(ss)
# --- 輸出結(jié)果 ---
                     人數(shù)   銷售數(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é)

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

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