稚久|特征工程之处理时间序列数据( 二 )
MonthPandas自身有许多易于使用的方法来处理datetime类型的数据 。 要提取时间/日期信息 , 我们只需调用pd.Series.dt 。 pd.Series.dt.month是提取month信息所需的函数 。 这将产生一系列int64格式的月份数字(例如1代表1月 , 10代表10月) 。
# extract month featuremonths = raw.date_time.dt.monthDay of month和Month类似 , 我们只需要调用pd.Series.dt.day函数 。 以2012-10-27 09:00:00为例 , 调用该函数提取结果为27 。
# extract day of month featureday_of_months = raw.date_time.dt.dayHour类似地 , pd.Series.dt.hour将生产对应的小时信息数据(范围为0-23的整数) 。
# extract hour featurehours = raw.date_time.dt.hourDay name获取Day name的方式和上面几个数据有所不同 。 我们想要确定raw.date_time序列中关于星期几的信息 , 需要以下两个步骤 。 首先 , 通过pd.Series.dt.day_name()生成day name序列 。 然后 , 我们需要通过pd.get_dummies()进行独热编码(one-hot encode) 。
# first: extract the day name literalto_one_hot = raw.date_time.dt.day_name()# second: one hot encode to 7 columnsdays = pd.get_dummies(to_one_hot)#display datadays独热编码后的Day name信息
Daypart在本部分中 , 我们将基于Hour数据创建一个分组 。 我们希望有六个小组代表每一天的各个部分 。 它们是黎明(02.00-05.59)、上午(06.00-09.59)、中午(10.00-13.59)、下午(14.00-17.59)、晚上(18.00-21.59)和午夜(22.00-次日01.59) 。
为此 , 我们创建了一个标识函数 , 稍后将使用该函数来作为数据系列的apply方法 。 然后 , 我们对得到的dayparts执行一个热编码 。
# daypart functiondef daypart(hour):if hour in [2,3,4,5]:return "dawn"elif hour in [6,7,8,9]:return "morning"elif hour in [10,11,12,13]:return "noon"elif hour in [14,15,16,17]:return "afternoon"elif hour in [18,19,20,21]:return "evening"else: return "midnight"# utilize it along with apply methodraw_dayparts = hours.apply(daypart)# one hot encodingdayparts = pd.get_dummies(raw_dayparts)# re-arrange columns for conveniencedayparts = dayparts[['dawn','morning','noon','afternoon','evening','midnight']]#display datadayparts独热编码后的Day parts信息
Weekend flag我们从date_time时间序列数据中提取的最后一个特征是is_weekend 。 这一特征指示给定的日期时间是否在周末(星期六或星期日) 。 为了实现这一目标 , 我们将利用pd.Series.dt.day_name()方法以及lambda函数 。
# is_weekend flag day_names = raw.date_time.dt.day_name()is_weekend = day_names.apply(lambda x : 1 if x in ['Saturday','Sunday'] else 0)Holiday flag 以及 weather幸运的是 , 这些数据还包含公共假日信息 。 信息是细粒度的 , 因为它提到每个公共假日的名称 。 尽管如此 , 本文假设对每个假期进行编码并没有显著的好处 。 因此 , 让我们创建一个二进制特性来指示对应的日期是否是假日 。
# is_holiday flagis_holiday = raw.holiday.apply(lambda x : 0 if x == "None" else 1)
推荐阅读
- 特斯拉上海二期工程主体结构完成 2020电动汽车行业现状及发展前景趋势分析研究报告
- 弱电|弱电行业需不需要工业4G路由器?
- 物流巴巴网|马来西亚萨潘加尔湾集装箱港口的扩建工程将于今年开始
- |抗疫英雄谱丨中国工程院院士张伯礼:贤以弘德,术以辅仁
- 央视新闻客户端|抗疫英雄谱丨中国工程院院士张伯礼:贤以弘德 术以辅仁
- 中国中铁|中国中铁中标400亿大工程!铁建有份
- 跌幅为|9月7日三大股指午盘全线收跌:上证指数跌0.16%,创业板指跌1.15%;安防设备、旅游酒店、园林工程逆势领涨
- 上观新闻|特斯拉上海二期工程主体结构完成,可量产Model Y
- 上海消防网|黄浦区召开在建修缮工程安全生产和消防工作会议
- 宝山区委组织部|宝山区淞南镇:积极打造入党积极分子“育苗工程”
