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

Pandas 時間序列之 Timedelta

1. 前言

上一小節(jié)我們學習了時間序列的時期類型 Period ,表示具體的一個時間區(qū)間,以及我們上上一節(jié)學習的時間戳類型 Timestamp 表示具體的時間點,除了這兩種常用的時間序列類型,今天我們將學習第三種時間序列類型 —— 時間長度(Timedelta)表示的是一段持續(xù)的時長,比如我們經(jīng)常計時用到的 1 分鐘,10 分鐘等待,這種時間序列類型在我們生活中也是應用較為廣泛的。

2. 時長 Timedelta

Timedelta 對象表示兩個時間之間的時間差值,下面我們來看一下如何創(chuàng)建 Timedelta 對象,以及它常用的屬性和方法。

2.1 Timedelta 的創(chuàng)建方法

Pandas 庫中提供了特定的函數(shù)用于創(chuàng)建 Timedelta 對象。

pd.Timedelta(value, unit=None, **kwargs)
參數(shù)名 說明
value 要轉(zhuǎn)換為時長的值,可以為字符串、數(shù)值等類型
unit 輸入的單位,可以為 ns, us, ms, s, m, h, D ,默認是 ns

下面我們通過代碼展示該函數(shù)的具體使用方式:

# 1.通過函數(shù)創(chuàng)建時間段
# 導入 pandas 數(shù)據(jù)包
import pandas as pd
pd.Timedelta(days=5, hours=12, minutes=50, seconds=20)
# --- 輸出結(jié)果 ---
Timedelta('5 days 12:50:20')
# 結(jié)果解析:我們通過函數(shù)指定時間段,5天12小時50分20秒。

# 2.unit 參數(shù),我們通過指定該參數(shù)的單位,可以看到時間段在該單位的值
pd.Timedelta(days=5, hours=12, minutes=50, seconds=20,unit='h')
# --- 輸出結(jié)果 ---
Timedelta('5 days 12:00:00')
# 結(jié)果解析:這里可以看到我們指定單位為 ‘h’ ,在我們設置的 timedelta 中,輸出的值到12小時。

除了通過函數(shù),我們還可以通過兩個時間戳相減得到一個時間段,如下代碼所示:

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
tt_01=pd.Timestamp("2020-12-23")
tt_02=pd.Timestamp("2020-12-20")
print(tt_01-tt_02)
print(type(tt_01-tt_02))
# --- 輸出結(jié)果 ---
3 days 00:00:00
<class 'pandas._libs.tslibs.timedeltas.Timedelta'>
# 結(jié)果解析:這里我們定義了兩個時間戳,通過時間戳相減我們看到輸出的是3天,通過輸出數(shù)據(jù)類型可以看到相減之后的數(shù)據(jù)類型是 Timedelta。

2.2 時段常用的屬性和方法

Pandas 庫中對于時間段 Timedelta ,提供了豐富的屬性和方法,下面我就來列舉一下該時間序列類型中常用的屬性和方法。

1. daysseconds 屬性

這兩個屬性分別返回時間段的天數(shù)和轉(zhuǎn)換后的秒數(shù)。

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
ss=pd.Timedelta("3 days 10:05:23")
ss.days
# --- 輸出結(jié)果 ---
3

ss=pd.Timedelta("0 days 00:01:23")
ss.seconds
# --- 輸出結(jié)果 ---
83  # 這里是1分23秒,所以合計是83秒

2. delta 屬性

該屬性可以獲得時間段轉(zhuǎn)換后的納秒數(shù)。

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
ss=pd.Timedelta("0 days 00:01:23")
ss.delta
# --- 輸出結(jié)果 ---
83000000000

3. ceil() 函數(shù)

該函數(shù)通過指定固定的頻率,可以返回一個新的時間段數(shù)據(jù)值。

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
ss=pd.Timedelta("12 days 10:00:00")
ss.ceil("2D")
# --- 輸出結(jié)果 ---
Timedelta('14 days 00:00:00') #通過指定2D的頻率,看到新的時間段14days

4. isoformat() 函數(shù)

該函數(shù)將時間段轉(zhuǎn)換成 ISO 8601 持續(xù)時間格式:P [n] Y [n] M [n] DT [n] H [n] M [n] S 。

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
ss=pd.Timedelta("12 days 10:23:31")
ss.isoformat()
# --- 輸出結(jié)果 ---
'P12DT10H23M31S'

5. total_seconds() 函數(shù)

該函數(shù)用于計算時間段總的持續(xù)時間,單位是秒。

# 導入 pandas 數(shù)據(jù)包
import pandas as pd
ss=pd.Timedelta("12 days 10:23:31")
ss.total_seconds()
# --- 輸出結(jié)果 ---
1074211.0

2.3 時段索引

時段數(shù)據(jù)類型 Timedelta 的索引結(jié)構(gòu)為 TimedeltaIndex ,我們可以通過 TimedeltaIndex () 或者 timedelta_range () 創(chuàng)建生成時間增量索引:

# 1、通過 TimedeltaIndex() 函數(shù)生成時間增量索引
# 通過 TimedeltaIndex() 函數(shù)定義了時間段索引
timedelta_index_res=pd.TimedeltaIndex(['1 days','1 days 12:04:23','02:00:00'])
# 將時間增量索引應用到 dataframe 數(shù)據(jù)結(jié)構(gòu)中
value_dateDataFrame = [["a1","b1"],["a2","b2"],["a3","b3"]]
res = pd.DataFrame(value_dateDataFrame, index = timedelta_index_res)
print(res)
# --- 輸出結(jié)果 ---
                  0   1
1 days 00:00:00  a1  b1
1 days 12:04:23  a2  b2
0 days 02:00:00  a3  b3
        
# 2、通過 timedelta_range() 函數(shù)生成時間增量索引,該函數(shù)有 start、end、periods、freq 四個參數(shù),在生成時間增量索引時,至少要指定三個參數(shù)。
# 通過 timedelta_range() 函數(shù)定義了時間段索引
timedelta_index_res=pd.timedelta_range(start='00:00:00',end="14:00:00", freq='5H')
# 將時間增量索引應用到 dataframe 數(shù)據(jù)結(jié)構(gòu)中
value_dateDataFrame = [["a1","b1"],["a2","b2"],["a3","b3"]]
res = pd.DataFrame(value_dateDataFrame, index = timedelta_index_res)
print(res)
# --- 輸出結(jié)果 ---
                  0   1
0 days 00:00:00  a1  b1
0 days 05:00:00  a2  b2
0 days 10:00:00  a3  b3

3. 小結(jié)

本節(jié)課程我們主要學習了時間序列的 Timedelta 時間段數(shù)據(jù)類型,該數(shù)據(jù)類型表示具體的時間增量,是我們數(shù)據(jù)處理中常用的數(shù)據(jù)類型之一。本節(jié)課程的重點如下:

  • Timedelta 對象的創(chuàng)建方法;
  • Timedelta 對象中常用的屬性和方法;
  • TimedeltaIndex 時間增量索引的創(chuàng)建方法。

圖片描述