likes
comments
collection
share

机器学习手册学习笔记--处理日期和时间

作者站长头像
站长
· 阅读数 2

仅供自己复习回顾使用,若有侵权可删除

字符串转为时间

import numpy as np
import pandas as pd
date_strings = np.array(['03-04-2005 11:35 PM','23-05-2010 12:01 AM','04-09-2009 09:09 PM'])
[pd.to_datetime(date, format='%d-%m-%Y %I:%M %p') for date in date_strings]

#errors="coerce",当转换出现错误时不会抛出异常(默认行为),但是会将导致这个错误的值设置成 NaT(也就是缺失值)

时区

import pandas as pd
#创建时就标注好
date = pd.Timestamp('2017-05-01 06:00:00', tz='Europe/London') 
#后加
date.tz_localize('Europe/London') 
#转变时区
date_in_london.tz_convert('Africa/Abidjan') 
#查看所有时区
from pytz import all_timezones
all_timezones 

筛选时间

  1. 布尔判断,适合简单操作
  2. 索引区间,适合复杂操作
dataframe = dataframe.set_index(dataframe['date'])
dataframe.loc['2002-1-1 01:00:00':'2002-1-1 04:00:00']

获取年月日等

.dt.year .dt.month .dt.day .dt.hour .dt.minute

计算两个特征之间的时间间隔

pd.Series(delta.days for delta in (dataframe['Left'] - dataframe['Arrived']))

对一周内的各天进行编码

dates.dt.weekday_name #输出星期单词
dates.dt.weekday #输出数值,0代表星期一

让值滞后一行

dataframe["previous_days_stock_price"] = dataframe["stock_price"].shift(1)

计算滚动平均值

dataframe.rolling(window=2).mean()

注:该函数在实际工作中使用频率很高

缺失值处理

# 对缺失数据进行插值
dataframe.interpolate()  
#limit 来限制插值的数量
#limit_direction 来设置是从最后一个已知值进行向前插值,还是进行反向的操作
#method 参数来指定插值的方式

# 向前填充
dataframe.ffill()

# 向后填充
dataframe.bfill()