# 1. 数据采集
# 从本地文件中读取数据 2分
data = pd.read_csv('vehicle_traffic_data.csv')
# 2. 数据清洗与预处理
# 处理缺失值 2分
data = data.dropna()
# 数据类型转换
data['Age'] = data['Age'].astype(int) #Age数据类型转换 1分
data['Speed'] = data['Speed'].astype(float) #Speed数据类型转换 1分
data['TravelDistance'] = data['TravelDistance'].astype(float) #TravelDistance数据类型转换 1分
data['TravelTime'] = data['TravelTime'].astype(float) #TravelTime数据类型转换 1分
# 处理异常值 2分
data = data[(data['Age'].between(18, 70)) &
(data['Speed'].between(0, 200)) &
(data['TravelDistance'].between(1, 1000)) &
(data['TravelTime'].between(1, 1440))]
# 保存清洗后的数据 1分
data.to_csv('cleaned_vehicle_traffic_data.csv', index=False)
# 3. 数据合理性审核
# 审核字段合理性 1分
unreasonable_data = _____________[~((data['Age'].between(18, 70)) &
(data['Speed'].between(0, 200)) &
(data['TravelDistance'].between(1, 1000)) &
(data['TravelTime'].between(1, 1440)))]
unreasonable_data =data [~((data['Age'].between(18, 70))...
代码解释:不合理数据清洗,~取反,不在区间的。
# 统计每种交通事件的发生次数 2分
traffic_event_counts = data['TrafficEvent'].value_counts()
# 统计不同性别的平均车速、行驶距离和行驶时间 2分
gender_stats = data.groupby('Gender').agg({'Speed': 'mean', 'TravelDistance': 'mean', 'TravelTime': 'mean'})
代码解释:
-
groupby()
:将数据按指定列分组,为后续计算做准备。 -
agg()
:对分组后的数据应用聚合函数,生成统计结果。 -
?先分组再聚合?
通过 groupby('Gender')
按性别(Gender
)列将数据分成不同的组。
聚合:使用 agg()
对每个分组中的指定列应用聚合函数:
对 Speed
列计算平均值(mean
)。
对 TravelDistance
列计算平均值。
对 TravelTime
列计算平均值。
运行结果:
# 统计不同年龄段的驾驶员数 2分
data['AgeGroup'] = pd.cut(data['Age'], bins=age_bins, labels=age_labels, right=False)
age_group_counts = data['AgeGroup'].value_counts()
代码解释:通过 pd.cut()
,我们成功将连续的年龄数据划分为离散的年龄段,并统计了每个年龄段的驾驶员数量。这种方法常用于数据分析中的分组统计和可视化。
小结:数量groupby和value_counts需要区分,counts后面加()
(笔记不一定准确)