Python的Pandas時(shí)序數(shù)據(jù)詳解
Pandas時(shí)序數(shù)據(jù)
前言 在數(shù)據(jù)分析中,時(shí)序數(shù)據(jù)是一類非常重要的數(shù)據(jù)。事物的發(fā)展總是伴隨著時(shí)間的推移,數(shù)據(jù)也會在各個(gè)時(shí)間點(diǎn)上產(chǎn)生。
一、python中的時(shí)間表示-datetime
模塊
? Python的標(biāo)準(zhǔn)庫datetime
支持創(chuàng)建和處理時(shí)間,Pandas的時(shí)間時(shí)序模塊是在datetime
的基礎(chǔ)上建立的。
1.換取當(dāng)前時(shí)間
import datetime now = datetime.datetime.now() # 2022-03-06 18:43:49.506048
其中now的全貌如下,是一個(gè)datetime
對象:
now: datetime.datetime(2022, 3, 6, 18, 37, 10, 132078)
? datetime.datetime
對象常用的方法:
? (1) strftime()
: 對datetime
對象的格式進(jìn)行轉(zhuǎn)換。使用含%
的占位符書寫目標(biāo)格式,如:
newForm = now.strftime("%Y-%m-%d (%H:%M:%S)") # 2022-03-06 (18:52:31) 為字符串類型
? 各占位符的含義如下
% y 兩位數(shù)的年份表示(00 - 99) % Y 四位數(shù)的年份表示(000 - 9999) % m 月份(01 - 12) % d 月內(nèi)中的一天(0 - 31) % H 24小時(shí)制小時(shí)數(shù)(0 - 23) % I 12小時(shí)制小時(shí)數(shù)(01 - 12) % M 分鐘數(shù)(00 = 59) % S 秒(00 - 59) % a 本地簡化星期名稱 % A 本地完整星期名稱 % b 本地簡化的月份名稱 % B 本地完整的月份名稱 % c 本地相應(yīng)的日期表示和時(shí)間表示 % j 年內(nèi)的一天(001 - 366) % p 本地A.M.或P.M.的等價(jià)符 % U 一年中的星期數(shù)(00 - 53)星期天為星期的開始 % w 星期(0 - 6),星期天為星期的開始 % W 一年中的星期數(shù)(00 - 53)星期一為星期的開始 % x 本地相應(yīng)的日期表示 % X 本地相應(yīng)的時(shí)間表示 % Z 當(dāng)前時(shí)區(qū)的名稱 % % % 號本身
2.指定時(shí)間
向datetime.datetime()
中傳入對應(yīng)的參數(shù),默認(rèn)按照單位從大到小指定
birthday = datetime.datetime(2001, 1, 11) # 默認(rèn)指定 print(birthday)
? 也可以通過參數(shù)指定,其中year
、monnth
、day
三個(gè)參數(shù)必須指定
yesterday = pd.Timestamp(2022, 3, 5) # 2022-03-05 00:00:00 now = pd.Timestamp("now") # 2022-03-06 19:13:56.507604
3.運(yùn)算
(1) datetime.datetime
對象之間支持減法運(yùn)算,得到的是一個(gè)datetime.timedelta
對象
delta = yeaterday - birthday # 7723 days, 0:00:00
二、 Pandas處理時(shí)序序列
1.pd.Timestamp()
pd.Timestamp()
是Pandas
定義事時(shí)間的主要函數(shù), 支持更豐富的定義時(shí)間的構(gòu)造方法
(1) 根據(jù)datetime.datetime
對象
now = pd.Timestamp(datetime.datetime.now()) print(now) # 2022-03-06 19:07:07.253402
(2) 根據(jù)字符串
today = pd.Timestamp("2022-03-06") print(today) # 2022-03-06 00:00:00
(3) 更具指定的參數(shù)
yesterday = pd.Timestamp(2022, 3, 5) # 2022-03-05 00:00:00 now = pd.Timestamp("now") # 2022-03-06 19:13:56.507604
(4) 根據(jù)時(shí)間戳
pd.Timestamp(1646565103.114923, unit="s") # unit指定單位為秒
2.pd.Timedelta()
pd.Timedelta()
用于創(chuàng)建時(shí)間差對象,也具有與pd.Timestamp()
類似的構(gòu)造方法。
(1) 根據(jù)字符串創(chuàng)建
oneDay = pd.Timedelta("1 days") # 1 days 00:00:00 duration = pd.Timedelta("2 days 2 hours") # 1 days 02:00:00
(2) 指定參數(shù)創(chuàng)建
oneDay = pd.Timedelta(days=1) # 1 days 00:00:00
3.運(yùn)算
與`datetime`模塊運(yùn)算類似,`pandas`的`Timestamp`對象之間相減可以得到`Timedelta`對象。
4.時(shí)間索引
數(shù)據(jù)表中長常使用時(shí)間作為索引,pandas
支持創(chuàng)建長時(shí)間序列
?(1) pd.to_datetime()
pd.to_datetime()
支持將時(shí)間對象和類時(shí)間字符串轉(zhuǎn)化為DatetimeIndex
對象。
index = pd.to_datetime(["03/06/2022", datetime.datetime.now()]) print(index) # DatetimeIndex(['2022-03-06 00:00:00', '2022-03-06 19:29:44.855267'], dtype='datetime64[ns]', freq=None)
? (2) pd.date_range()
? pd.date_range()
可以給定開始時(shí)間或者結(jié)束時(shí)間,并且指定周期數(shù)據(jù),周期頻率,會自動生成在此范圍的時(shí)間索引數(shù)據(jù):
index = pd.date_range(start="2022-01-01", periods=10) print(index) # DatetimeIndex(['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10'], dtype='datetime64[ns]', freq='D')
? 如果要跳過休息日可以使用pd.bdate_range()
函數(shù)
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python tkinter之ComboBox(下拉框)的使用簡介
這篇文章主要介紹了Python tkinter之ComboBox(下拉框)的使用簡介,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02Python sklearn KFold 生成交叉驗(yàn)證數(shù)據(jù)集的方法
今天小編就為大家分享一篇Python sklearn KFold 生成交叉驗(yàn)證數(shù)據(jù)集的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Django模板獲取field的verbose_name實(shí)例
這篇文章主要介紹了Django模板獲取field的verbose_name實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05對pytorch中x = x.view(x.size(0), -1) 的理解說明
這篇文章主要介紹了對pytorch中x = x.view(x.size(0), -1) 的理解說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Python遍歷pandas數(shù)據(jù)方法總結(jié)
本篇文章給大家詳細(xì)介紹了Python中遍歷pandas數(shù)據(jù)方法以及相關(guān)注意點(diǎn),對此有興趣的朋友參考學(xué)習(xí)下吧。2018-02-02