【pandas小記】pandas日期類型數據處理

pandas在從外部文件讀取數據時,會把文件中日期格式數據的類型識別爲object
在這裏插入圖片描述
在這裏插入圖片描述
其中的“Earthquake_Time”被識別爲object,這樣再後面做時間緯度上的分析會比較麻煩,所以需要將該字段類型轉成日期類型。

# 方法一:通過 parse_dates 參數直接將某些列轉換成 datetime64 類型
columns = ['Earthquake_Time', 'Magnitude', 'Latitude', 'Longitude', 'Depth', 'Earthquake_Location']  # 設置表頭
df = pd.read_excel('E:\\data\\eqList2020_02_18.xlsx', header=None, names=columns, skiprows=1,parse_dates=['Earthquake_Time'])  # 打開表格
print(df.info())
"""
Data columns (total 6 columns):
 #   Column               Non-Null Count  Dtype         
---  ------               --------------  -----         
 0   Earthquake_Time      7617 non-null   datetime64[ns]
 1   Magnitude            7617 non-null   float64       
 2   Latitude             7617 non-null   float64       
 3   Longitude            7617 non-null   float64       
 4   Depth                7617 non-null   float64       
 5   Earthquake_Location  7617 non-null   object   
"""
# 方法二:使用Python的datetime進行轉換,可能有些方法不帶parse_dates 參數
import pandas as pd
from datetime import datetime

pd.set_option('max_columns', 20)
columns = ['Earthquake_Time', 'Magnitude', 'Latitude', 'Longitude', 'Depth', 'Earthquake_Location']  # 設置表頭
df = pd.read_excel('E:\\data\\eqList2020_02_18.xlsx', header=None, names=columns, skiprows=1)  # 打開表格
df['Earthquake_Time'] = df['Earthquake_Time'].apply(lambda x :datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
print(df.info())
"""
Data columns (total 6 columns):
 #   Column               Non-Null Count  Dtype         
---  ------               --------------  -----         
 0   Earthquake_Time      7617 non-null   datetime64[ns]
 1   Magnitude            7617 non-null   float64       
 2   Latitude             7617 non-null   float64       
 3   Longitude            7617 non-null   float64       
 4   Depth                7617 non-null   float64       
 5   Earthquake_Location  7617 non-null   object   
"""

轉換成日期類型之後,便可以進行一些日期轉換,滿足分析需求:

# 這裏使用Pandas.Series.dt方法來提取不同的時間維度
Pandas.Series.dt.hour #取小時

Pandas.Series.dt.minute #取分鐘

Pandas.Series.dt.second #取秒

Pandas.Series.dt.year #取年

Pandas.Series.dt.month #取月

Pandas.Series.dt.day #取天

Pandas.Series.dt.quarter #取季度

Pandas.Series.dt.time #取時間

Pandas.Series.dt.date #取日期
df['date'] = df['Earthquake_Time'].dt.date

Pandas.Series.dt.strftime('%y-%m-%d %h:%m:%s') #此處可靈活變動,根據需求來變動。
df['ym'] = df['Earthquake_Time'].dt.strftime('%Y-%m')

Pandas.Series.dt.weekday #返回周幾,星期一是0,星期天是6
df['weekday'] = df['Earthquake_Time'].dt.weekday

Pandas.Series.dt.week #返回週數

Pandas.Series.dt.weekofyear #計算一年當中的第幾周

Pandas.Series.dt.dayofyear #計算是一年當中的第幾天
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章