目錄:
1、pandas中6個時間相關的類
2、Timestamp類
1)查看時間列,是str字符串列,還是時間格式列
2)使用pd.to_datetime()將字符串,轉換為日期格式
3)Timestamp類只能表示1677年-2262年的時間
4)Timestamp類常用屬性
3、DatetimeIndex與PeriodIndex函數:類似於to_datetime()函數
4、Timedelta類
1)日期前移、後移一天
2)兩個時間做差
1、pandas中6個時間相關的類 在多數情況下,對時間類型數據進行分析的前提就是將原本為字符串的時間轉換為標準時間類型。
pandas繼承了NumPy庫和datetime庫的時間相關模塊,提供了6種時間相關的類。
其中Timestamp作為時間類中最基礎的,也是最為常用的。
在多數情況下,時間相關的字符串都會轉換成為Timestamp。
pandas提供了to_datetime()函數,能夠實現這一目標。
值得注意的是,Timestamp類型時間是有限制的。
1)查看時間列,是str字符串列,還是時間格式列import pandas as pd
df = pd.read_csv(r"E:\電腦視頻錄製軟體\視頻下載安裝路徑\Python數據分析與應用人郵版\data\meal_order_info.csv",
engine="python",
encoding="gbk")
df['lock_time'].head()
type(df['lock_time'][0])
pd.to_datetime(df['lock_time']).head()
結果如下:
import pandas as pd
df = pd.read_csv(r"E:\電腦視頻錄製軟體\視頻下載安裝路徑\Python數據分析與應用人郵版\data\meal_order_info.csv",
engine="python",
encoding="gbk")
df['lock_time'] = pd.to_datetime(df['lock_time'])
df['lock_time'].head()
結果如下:
pd.Timestamp.min
pd.Timestamp.max
結果如下:
在多數涉及時間相關的數據處理,統計分析的過程中,需要提取時間中的年份,月份等數據。
使用對應的Timestamp類屬性就能夠實現這一目的。
結合Python列表推導式,可以實現對DataFrame某一列時間信息數據的提取。
操作如下:
import pandas as pd
df = pd.read_csv(r"E:\電腦視頻錄製軟體\視頻下載安裝路徑\Python數據分析與應用人郵版\data\meal_order_info.csv",
engine="python",
encoding="gbk")
df['lock_time'] = pd.to_datetime(df['lock_time'])
df["年"] = df['lock_time'].apply(lambda x:x.year)
df["年"].head()
結果如下:
df[『lock_time』][0]
df[『lock_time』][0].strftime(「%Y-%m」)
結果如下:
除了將數據字原始DataFrame中直接轉換為Timestamp格式外,還可以將數據單獨提取出來將其轉換為DatetimeIndex或者PeriodIndex。
轉換為PeriodIndex的時候需要注意,必須通過freq參數指定時間間隔,常用的時間間隔有Y為年,M為月,D為日,H為小時,T為分鐘,S為秒。
兩個函數可以用來轉換數據還可以用來創建時間序列數據,其參數非常類似。
import pandas as pd
df = pd.read_csv(r"E:\電腦視頻錄製軟體\視頻下載安裝路徑\Python數據分析與應用人郵版\data\meal_order_info.csv",
engine="python",
encoding="gbk")
df['lock_time'] = pd.DatetimeIndex(df['lock_time'])
df['lock_time'][0]
---
df = pd.read_csv(r"E:\電腦視頻錄製軟體\視頻下載安裝路徑\Python數據分析與應用人郵版\data\meal_order_info.csv",
engine="python",
encoding="gbk")
df['lock_time'] = pd.PeriodIndex(df['lock_time'],freq="S")
df['lock_time'][0]
結果如下:
Timedelta是時間相關的類中的一個異類,不僅能夠使用正數,還能夠使用負數表示單位時間,例如1秒,2分鐘,3小時等。
使用Timedelta類,配合常規的時間相關類能夠輕鬆實現時間的算術運算。
目前Timedelta函數中時間周期中沒有年和月。
import pandas as pd
df = pd.read_csv(r"E:\電腦視頻錄製軟體\視頻下載安裝路徑\Python數據分析與應用人郵版\data\meal_order_info.csv",
engine="python",
encoding="gbk")
df['lock_time'] = pd.to_datetime(df['lock_time'])
df['lock_time'][0]# 後移一天df['lock_time'][0] + pd.Timedelta(days=1)# 前移一天df['lock_time'][0] + pd.Timedelta(days=-1)
結果如下:
df['lock_time'][0]
pd.to_datetime("2020-3-13") - df['lock_time'][0]
a = pd.to_datetime("2020-3-13") - df['lock_time'][0]
a.days
結果如下:
綜上所述:上述的6個方法,只要將str轉換為日期格式後,都可以統一使用如下的【Timestamp類的常用屬性】,進行提取年、提取月 等操作。
為方便大家交流信息,我們建立了「數據幫Club」QQ群,我們後期將會在群裡隨時轉發推文信息。歡迎大數據、統計、人工智慧、數據科學愛好者加群交流學習。
本文作者黃偉在CSDN的博客二維碼如下,更多精彩可掃描二維碼關注!