天天看點

一文帶你搞懂pandas中的時間處理(詳細)

目錄

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種時間相關的類。

一文帶你搞懂pandas中的時間處理(詳細)

2、Timestamp類

  • 其中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()           

複制

結果如下:

一文帶你搞懂pandas中的時間處理(詳細)
2)使用pd.to_datetime()将字元串,轉換為日期格式
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()           

複制

結果如下:

一文帶你搞懂pandas中的時間處理(詳細)
3)Timestamp類隻能表示1677年-2262年的時間
pd.Timestamp.min
pd.Timestamp.max           

複制

結果如下:

一文帶你搞懂pandas中的時間處理(詳細)
4)Timestamp類常用屬性
  • 在多數涉及時間相關的資料處理,統計分析的過程中,需要提取時間中的年份,月份等資料。使用對應的Timestamp類屬性就能夠實作這一目的。
  • 結合Python清單推導式,可以實作對DataFrame某一列時間資訊資料的提取。
一文帶你搞懂pandas中的時間處理(詳細)

操作如下:

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()           

複制

結果如下:

一文帶你搞懂pandas中的時間處理(詳細)
5)利用strftime()方法提取指定格式日期

df[‘lock_time’][0]

df[‘lock_time’][0].strftime("%Y-%m")

結果如下:

一文帶你搞懂pandas中的時間處理(詳細)

3、DatetimeIndex與PeriodIndex函數:類似于to_datetime()函數

  • 除了将資料字原始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]           

複制

結果如下:

一文帶你搞懂pandas中的時間處理(詳細)

4、Timedelta類

  • Timedelta是時間相關的類中的一個異類,不僅能夠使用正數,還能夠使用負數表示機關時間,例如1秒,2分鐘,3小時等。使用Timedelta類,配合正常的時間相關類能夠輕松實作時間的算術運算。目前Timedelta函數中時間周期中沒有年和月。
一文帶你搞懂pandas中的時間處理(詳細)
1)日期前移、後移一天
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)           

複制

結果如下:

一文帶你搞懂pandas中的時間處理(詳細)
2)兩個時間做差
  • 使用Timedelta,可以很輕松地實作在某個時間上加減一段時間。除了使用Timedelta實作時間的平移外,還能夠直接對兩個時間序列進行相減,進而得出一個Timedelta。
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           

複制

結果如下:

一文帶你搞懂pandas中的時間處理(詳細)

綜上所述:上述的6個方法,隻要将str轉換為日期格式後,都可以統一使用如下的【Timestamp類的常用屬性】,進行提取年、提取月 等操作。

一文帶你搞懂pandas中的時間處理(詳細)