Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片)
時(shí)間序列的類(lèi)型:
時(shí)間戳:具體的時(shí)刻
固定的時(shí)間區(qū)間:例如2007年的1月或整個(gè)2010年
時(shí)間間隔:由開(kāi)始時(shí)間和結(jié)束時(shí)間表示,時(shí)間區(qū)間可以被認(rèn)為是間隔的特殊情況
實(shí)驗(yàn)時(shí)間和消耗時(shí)間:每個(gè)時(shí)間是相對(duì)于特定開(kāi)始時(shí)間的時(shí)間的量度,(例如自從被放置在烤箱中每秒烘烤的餅干的直徑)
日期和時(shí)間數(shù)據(jù)的類(lèi)型及工具
datetime模塊中的類(lèi)型:
date 使用公歷日歷存儲(chǔ)日歷日期(年,月,日) time 將時(shí)間存儲(chǔ)為小時(shí),分鐘,秒,微秒 datetime 存儲(chǔ)日期和時(shí)間 timedelta 表示兩個(gè)datetime值之間的差(如日,秒,微秒) tzinfo 用于存儲(chǔ)時(shí)區(qū)信息的基本類(lèi)型 from datetime import datetime now = datetime.now() now.year #當(dāng)時(shí)年份 now.month #當(dāng)前月份 now.day #當(dāng)前天 now.time() #當(dāng)前時(shí)間 datetime.time(12, 27, 41, 303676) 兩個(gè)時(shí)間戳運(yùn)算得到一個(gè)timedelta(時(shí)間差)類(lèi)型
日期時(shí)間差 timedelta類(lèi)型
from datetime import timedelta start = datetime(2019,2,5) start + timedelta(20) #默認(rèn)為天 datetime.datetime(2019, 2, 25, 0, 0)
字符串和datetime互相轉(zhuǎn)換
date.strptime方法將字符串轉(zhuǎn)換為時(shí)間
values = '2019-8-9' datetime.strptime(values,'%Y-%m-%d') #是在已知格式的前提下轉(zhuǎn)換日期的好方式 datetime.datetime(2019, 8, 9, 0, 0) datestrs = ['2019-8-7','2019-8-9'] [datetime.strptime(values,'%Y-%m-%d') for values in datestrs] [datetime.datetime(2019, 8, 7, 0, 0), datetime.datetime(2019, 8, 9, 0, 0)]
更為通用的日期轉(zhuǎn)換格式
from dateutil.parser import parse parse(values) datetime.datetime(2019, 8, 9, 0, 0) parse('8,5,2018',dayfirst=True) #dayfirst參數(shù) 第一個(gè)元素是天 datetime.datetime(2018, 5, 8, 0, 0)
pd.to_datetime() 用于軸索引或DataFrame的列
pd.to_datetime(datestrs)
DatetimeIndex(['2019-08-07', '2019-08-09'], dtype='datetime64[ns]', freq=None)
更為簡(jiǎn)單的轉(zhuǎn)換
datetime(2019,1,1)
datetime.datetime(2019, 1, 1, 0, 0)
時(shí)間序列的算術(shù)運(yùn)算(在日期上自動(dòng)對(duì)齊)
index = pd.date_range('3/3/2018',periods=20) ts = pd.Series(np.random.randn(20),index=index) ts 2018-03-03 0.611591 2018-03-04 0.119168 2018-03-05 0.514390 2018-03-06 1.010600 2018-03-07 0.181763 2018-03-08 -0.290964 2018-03-09 0.252927 2018-03-10 -1.645692 2018-03-11 -0.500014 2018-03-12 -1.247355 ts1 = ts[::2] 2018-03-03 0.611591 2018-03-05 0.514390 2018-03-07 0.181763 2018-03-09 0.252927 2018-03-11 -0.500014 2018-03-13 -0.122307 2018-03-15 0.361237 2018-03-17 -1.894853 2018-03-19 -1.608989 2018-03-21 1.274982 Freq: 2D, dtype: float64 ts + ts1 2018-03-03 1.223183 2018-03-04 NaN 2018-03-05 1.028781 2018-03-06 NaN 2018-03-07 0.363526 2018-03-08 NaN 2018-03-09 0.505853 2018-03-10 NaN 2018-03-11 -1.000028 2018-03-12 NaN 2018-03-13 -0.244613 2018-03-14 NaN 2018-03-15 0.722473 2018-03-16 NaN 2018-03-17 -3.789707 2018-03-18 NaN 2018-03-19 -3.217979 2018-03-20 NaN 2018-03-21 2.549963 2018-03-22 NaN ts.index.dtype #數(shù)據(jù);類(lèi)型在納秒級(jí)的分辨率下存儲(chǔ)時(shí)間戳 dtype('<M8[ns]') ts.index[0] #datetimeindex中的標(biāo)量值是一個(gè)時(shí)間戳(timestamp) Timestamp('2018-03-03 00:00:00', freq='D')
時(shí)間序列的索引,選擇,子集
時(shí)間序列的索引
ts = pd.Series(np.random.randn(1000),index = pd.date_range('1/1/2016',periods=1000)) s['2018-6'] #時(shí)間序列的索引 也可用ts.loc[] 2018-06-01 1.371843 2018-06-02 -0.356041 2018-06-03 0.111452 2018-06-04 0.325222 2018-06-05 -0.863138 2018-06-06 -0.115909 2018-06-07 0.062894 2018-06-08 0.223712
時(shí)間序列的切片
ts['2018-9-23':] #時(shí)間序列的切片 2018-09-23 0.005519 2018-09-24 -1.374038 2018-09-25 1.769112 2018-09-26 -0.000306 Freq: D, dtype: float64 ts.truncate(before='2018-9-24') #使用truncate方法向后切片 2018-09-24 -1.374038 2018-09-25 1.769112 2018-09-26 -0.000306 Freq: D, dtype: float64 ts.truncate(after='2016-1-4') #向前切片 2016-01-01 -1.776334 2016-01-02 -0.488550 2016-01-03 -1.299889 2016-01-04 -1.883413 Freq: D, dtype: float64
含有重復(fù)索引的時(shí)間序列的分組處理
index = pd.DatetimeIndex(['1/1/2017','1/1/2017','1/2/2017','1/3/2017']) dup_ta = pd.Series(np.arange(4),index=index) dup_ta 2017-01-01 0 2017-01-01 1 2017-01-02 2 2017-01-03 3 dtype: int32 dup_ta.groupby(level=0).mean()
以上這篇Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Numpy數(shù)組array和矩陣matrix轉(zhuǎn)換方法
這篇文章主要介紹了Numpy數(shù)組array和矩陣matrix轉(zhuǎn)換方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Python簡(jiǎn)單過(guò)濾字母和數(shù)字的方法小結(jié)
這篇文章主要介紹了Python簡(jiǎn)單過(guò)濾字母和數(shù)字的方法,涉及Python基于內(nèi)置函數(shù)與正則表達(dá)式進(jìn)行字母和數(shù)字過(guò)濾的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01自定義實(shí)現(xiàn) PyQt5 下拉復(fù)選框 ComboCheckBox的完整代碼
這篇文章主要介紹了自定義實(shí)現(xiàn) PyQt5 下拉復(fù)選框 ComboCheckBox的完整代碼,本文通過(guò)實(shí)例代碼講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03Python實(shí)現(xiàn)兩種稀疏矩陣的最小二乘法
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)的兩種稀疏矩陣最小二乘法lsqr和lsmr,前者是經(jīng)典算法,后者來(lái)自斯坦福優(yōu)化實(shí)驗(yàn)室,據(jù)稱(chēng)可以比lsqr更快收斂,感興趣的可以了解一下2023-02-02python動(dòng)態(tài)視頻下載器的實(shí)現(xiàn)方法
這里向大家分享一下python爬蟲(chóng)的一些應(yīng)用,主要是用爬蟲(chóng)配合簡(jiǎn)單的GUI界面實(shí)現(xiàn)視頻,音樂(lè)和小說(shuō)的下載器。今天就先介紹如何實(shí)現(xiàn)一個(gè)動(dòng)態(tài)視頻下載器,需要的朋友可以參考下2019-09-09python腳本實(shí)現(xiàn)分析dns日志并對(duì)受訪(fǎng)域名排行
這篇文章主要介紹了python腳本實(shí)現(xiàn)分析dns日志并對(duì)受訪(fǎng)域名排行,本文是在Windows服務(wù)器環(huán)境中實(shí)現(xiàn),需要的朋友可以參考下2014-09-09