
上一篇文章中,我們理清楚了python的time庫以及datetime庫中各種時間對象的處理方法,以及相互之間的轉化方法。
我們發現,time庫以及datetime庫中,確實存在名字相同,但是調用方法與所屬類完全不一樣的情況,這也是造成使用過程中各種混淆的原因。
今天我們把Pandas庫中處理時間的各種函數與方法也加進來討論,當然,由于Pandas中處理時間的方法和類太多太強大,我們僅僅是對其中探討Pandas其中部分,特別是其中與time庫、datetime庫有關聯且又容易混淆的相關知識。
(一) 此Timestamp非彼Timestamp
相信在讀過前面一篇文章的同學,對time庫中的unix時間戳還有印象,但是Pandas中的Timestamp對象和unix時間戳格式完全不同。
Pandas中的Timestamp對象可以說是Pandas中時間序列對象的“細胞”,如果我們有datetime64[ns]型Series對象如下:
你會發現當你提取Series第一個元素出來,返回來的就是一個Timestamp對象。當然,我們也可以自己創建一個Timestamp對象:
從上面的代碼你會發現,你可以將unix時間戳、字符串型日期、datetime庫中datetime.datetime通過pd.Timestamp()方法直接轉化為Timestamp對象。
反過來呢?如果想將把Timestamp對象轉化為unix時間戳,可以使用pd.Timestamp.timestamp()方法:
(二) 生成時間序列
Pandas作為處理多維數組的“神器”,本篇文章講的當然是處理時間序列的方法。其中,Pandas中生成時間序列的方法不少,最常用的方法是pd.date_range(),我們看一下其使用方法:
l pd.date_range(start, end, freq) 生成一個時間段
n start:開始時間,參數可以是datetime庫中的datetime對象,也可以是字符串。
n end:結束時間,參數可以是datetime庫中的datetime對象,也可以是字符串。
n freq:時間頻率,'Y'表示年,'M’表示月,'D’表示天,'H’表示小時,'Min’表示分鐘
注意,這里開始時間和結束時間的參數指向的對象,是可以是datetime.datetime對象:
當然,這里的開始時間除了可以使用datetime.datetime實例以外(這里注意,是使用的datetime庫中的類,而不是Pandas庫),也可以用字符串來表示。
以start_time為2019年7月17日為例,start_time也可以是字符串'20190717'、'2019-07-17'、'2019/07/17'...
從上面可以看到,pd.date_range()方法生成的是長度為200、數據類型為datetime的DatetimeIndex對象,時間頻率是天。
也就是說,2019年7月17日到2020年2月1日,算上始末的日期,一共200天。這是因為默認的頻率是每天,freq='D'。 也可以通過改變時間頻率,詳情參考上面的使用方法添加修改freq參數即可。
如果我們想要2019年7月17日為起始,按照每天的時間頻率,生成長度為200的DataIndex對象,可以這樣寫:
相應地,如果想要以2020年2月1日為結束日,按照每天的時間頻率,生成長度為200的DataIndex對象,可以這樣寫:
(三) .to_datetime()方法
當然,上面的方法生成的是DatetimeIindex對象,可以通過pd.Series()方法轉化為Series對象:
但是對于不規范的日期字符串Series,需要使用pd.to_datetime()方法來對其進行轉換,比如:
(四) DateOffset類
datetime庫中有timedelta類作為日期的增減,Pandas中也有專門的DateOffset類作為時間間隔對象,可以直接作用在上面的datetime型Series對象中。
其使用方法和datetime.timedelta類相似,但是要注意的是里面的參數名最后都加了's'。
datetime型Series對象可以直接使用DataOfffset對象進行日期加減:
也可以作用在DatetimeIndex對象中:
(五) 時間序列日期格式化
要對datetime型的Series對象進行日期格式轉換,可以通過Series實例的方法.dt.strftime(),其格式化字符串依然可以參照datetime庫中的格式化字符串對照表:
要對datetime型的Series對象進行日期格式轉換,可以通過Series實例的方法.dt.strftime(),其格式化字符串依然可以參照文章開頭的datetime庫中的格式化字符串對照表:
但是如果留心的話可以發現,轉化之后的數據類型,已經從datetime型變成object類,也就是字符串。
如果把字符串時間date_03重新轉化為datetime型Series,用上面提到的pd.to_datetime()方法即可:
(六) 結后語
time庫和datetime庫以及Pandas中各種對象處理時間的方法,雖然錯綜復雜又相互關聯,但是其實在使用方面有所側重和不同。
time庫以及datetime庫的對象,一般用在程序設計的中涉及到時間的問題,比如爬蟲的時候在獲得的不規則時間時碰到的格式轉換問題,會使用很多。
Pandas中各種與時間相關的類非常多,方法非常豐富,涉及到時間處理的各個方面,主要用作序列數據的處理方面,這和time庫與datetime庫對單獨某些日期數據處理不同。
就數據分析工作而言,對時間序列數據處理的時候Pandas用得非常多,以至于很多人幾乎都忘記time庫與datetime庫的存在??傮w而言,對于數據分析初學者而言,可以把Pandas作為重點學習方面,但是time庫和datetime庫作為Python標準庫,其時間類的基本使用方法的學習是必不可少的。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25