如何在Jupyter Notebook中为出租车数据集构建早高峰特征
实现早高峰行程判断的特征工程方案
核心结论
不需要使用sklearn,直接借助Pandas就能完成这个特征工程——这是基于时间规则的特征提取,属于数据预处理环节,无需机器学习库介入。
具体实现步骤
假设你已经用Pandas将数据集加载为df,按以下步骤操作:
1. 提取上车时间的小时字段
从tpep_pickup_datetime列中提取小时部分,生成辅助列pickup_hour:
df['pickup_hour'] = df['tpep_pickup_datetime'].dt.hour
2. 生成早高峰判断特征
根据8:00-10:00的规则,生成二进制特征is_morning_rush(1代表处于早高峰,0代表非早高峰):
- 简洁写法(适合小数据集):
df['is_morning_rush'] = df['pickup_hour'].apply(lambda x: 1 if 8 <= x < 10 else 0)
- 矢量化写法(推荐,处理大数据集效率更高):
df['is_morning_rush'] = ((df['pickup_hour'] >= 8) & (df['pickup_hour'] < 10)).astype(int)
3. 可选:结合工作日过滤
如果需要排除周末的早高峰,可以先提取星期信息,再组合判断:
# 提取星期几,0=周一,6=周日 df['weekday'] = df['tpep_pickup_datetime'].dt.weekday # 仅标记工作日的早高峰 df['is_morning_rush_workday'] = ((df['weekday'] < 5) & (df['pickup_hour'] >= 8) & (df['pickup_hour'] < 10)).astype(int)
结果验证
可以用以下代码确认特征是否符合预期:
# 查看早高峰样本的时间与特征值 print(df[df['is_morning_rush'] == 1][['tpep_pickup_datetime', 'is_morning_rush']].head()) # 统计早高峰与非早高峰的样本数量 print(df['is_morning_rush'].value_counts())
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

