跳转到主要内容
1.1.5 · 建议 30 分钟 · 满分 32

智能交通系统的数据采集、处理和审核流程设计

背景

某智能交通系统希望通过车辆的行驶数据,利用人工智能技术进行交通流量预测和拥堵预警。你作为人工智能训练师,需要设计一套全面的业务数据采集、处理和审核流程,确保数据在进入交通流量分析系统之前经过严格的采集、清洗、审核和预处理。 车辆行驶数据集 vehicle_traffic_data.csv 包含字段:VehicleID(车辆ID)、DriverName(驾驶员姓名)、Age(年龄)、Gender(Male/Female)、Speed(车速 km/h)、TravelDistance(行驶距离 km)、TravelTime(行驶时间 min)、TrafficEvent(交通事件:Normal/Accident/Traffic Jam/Breakdown)。

工作任务

  1. 数据采集:从本地文件 vehicle_traffic_data.csv 中读取数据,加载到 DataFrame,并显示前 5 行数据。
  2. 数据清洗与预处理:删除缺失值;进行数据类型转换;删除不合理的年龄、车速、行驶距离和行驶时间;保存为 cleaned_vehicle_traffic_data.csv。
  3. 数据合理性审核:审核字段合理性 — 年龄 18-70;车速 0-200 km/h;行驶距离 1-1000 km;行驶时间 1-1440 分钟。对不合理的数据进行标记。
  4. 数据统计:统计每种交通事件的发生次数;统计不同性别的平均车速、行驶距离和行驶时间;统计不同年龄段(18-25、26-35、36-45、46-55、56-65、65 以上)的驾驶员数。

素材预览

vehicle_traffic_data.csv
VehicleID,DriverName,Age,Gender,Speed,TravelDistance,TravelTime,TrafficEvent
1,Driver_1,62,Male,17,242,854.1176471,Normal
2,Driver_2,65,Male,128,438,205.3125,Accident
...

代码填空

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 1. 数据采集
# 从本地文件中读取数据  2分
data = 
print("数据采集完成,已加载到DataFrame中")

# 打印数据的前5条记录 2分
print()
# 2. 数据清洗与预处理
# 处理缺失值(删除)  2分
data = 

# 数据类型转换
data = (int)       #Age数据类型转换为int 1分
data = (float)     #Speed数据类型转换为float 1分
data = (float)     #TravelDistance数据类型转换为float 1分
data = (float)     #TravelTime数据类型转换为float 1分

# 处理异常值  2分
data = data[((18, 70))  & 
            ((0, 200)) & 
            ((1, 1000)) & 
            ((1, 1440))]

# 保存清洗后的数据  1分
('cleaned_vehicle_traffic_data.csv', index=False)
print("数据清洗完成,已保存为 'cleaned_vehicle_traffic_data.csv'")
# 3. 数据合理性审核
# 审核字段合理性 1分
unreasonable_data = data[~(((18, 70)) & 
                           ((0, 200)) & 
                           ((1, 1000)) & 
                           ((1, 1440)))]
print("不合理的数据:\n", unreasonable_data)

# 4. 数据统计
# 统计每种交通事件的发生次数  2分
traffic_event_counts = 
print("每种交通事件的发生次数:\n", traffic_event_counts)

# 统计不同性别的平均车速、行驶距离和行驶时间  2分
gender_stats = data..
print("不同性别的平均车速、行驶距离和行驶时间:\n", gender_stats)

# 统计不同年龄段的驾驶员数  5分
age_bins = [18, 26, 36, 46, 56, 66, np.inf]
age_labels = ['18-25', '26-35', '36-45', '46-55', '56-65', '65+']
data['AgeGroup'] = (,,, right=False)
age_group_counts = 
print("不同年龄段的驾驶员数:\n", age_group_counts)