【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 #计算是一年当中的第几天
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章