Appearance
1. 导入库
python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt- pandas用于数据处理和分析,简写为
pd - numpy用于数值计算,简写为
np - matplotlib.pyplot用于数据可视化,简写为
plt(虽然代码中未实际使用绘图功能)
2. 数据采集
python
data = pd.read_csv('vehicle_traffic_data.csv')- 使用pandas的
read_csv函数读取名为vehicle_traffic_data.csv的车辆交通数据文件 - 将数据存储在名为
data的DataFrame中
python
print("数据采集完成,已加载到DataFrame中")- 打印数据加载完成的信息
python
print(data.head())- 使用
head()方法打印DataFrame的前5行数据 - 用于快速查看数据结构和内容
3. 数据清洗与预处理
python
data = data.dropna()- 使用
dropna()方法删除包含缺失值(NaN)的行 - 直接修改原DataFrame
python
data['Age'] = data['Age'].astype(int)- 将Age列的数据类型转换为整数型(int)
- 确保年龄数据为整数
python
data['Speed'] = data['Speed'].astype(float)- 将Speed列的数据类型转换为浮点型(float)
- 确保车速可以有小数
python
data['TravelDistance'] = data['TravelDistance'].astype(float)- 将TravelDistance列的数据类型转换为浮点型(float)
- 确保行驶距离可以有小数
python
data['TravelTime'] = data['TravelTime'].astype(float)- 将TravelTime列的数据类型转换为浮点型(float)
- 确保行驶时间可以有小数
python
data = data[
(data['Age'].between(18, 70)) &
(data['Speed'].between(0, 200)) &
(data['TravelDistance'].between(1, 1000)) &
(data['TravelTime'].between(1, 1440))
]- 筛选保留合理范围内的数据:
- 年龄在18-70岁之间
- 车速在0-200km/h之间
- 行驶距离在1-1000公里之间
- 行驶时间在1-1440分钟(24小时)之间
- 使用布尔索引过滤不合理数据
python
data.to_csv('cleaned_vehicle_traffic_data.csv', index=False)- 将清洗后的数据保存到新的CSV文件
cleaned_vehicle_traffic_data.csv index=False表示不保存行索引
python
print("数据清洗完成,已保存为'cleaned_vehicle_traffic_data.csv'")- 打印数据清洗完成的信息
4. 数据合理性审核
python
unreasonable_data = data[
~(
(data['Age'].between(18, 70)) &
(data['Speed'].between(0, 200)) &
(data['TravelDistance'].between(1, 1000)) &
(data['TravelTime'].between(1, 1440))
)
]- 筛选出不合理的数据行(不符合合理性条件的行)
~表示逻辑取反- 结果存储在
unreasonable_data变量中
python
print("不合理的数据:\n", unreasonable_data)- 打印不合理的数据
5. 数据统计
python
traffic_event_counts = data['TrafficEvent'].value_counts()- 统计TrafficEvent列中各交通事件的发生次数
value_counts()返回各分类的计数- 结果存储在
traffic_event_counts变量中
python
print("每种交通事件的发生次数:\n", traffic_event_counts)- 打印交通事件统计结果
python
gender_stats = data.groupby('Gender').agg({'Speed': 'mean', 'TravelDistance': 'mean', 'TravelTime': 'mean'})- 按Gender列分组
- 计算每组中Speed、TravelDistance和TravelTime的平均值
agg()方法指定要计算的统计量- 结果存储在
gender_stats变量中
python
print("不同性别的平均车速、行驶距离和行驶时间:\n", gender_stats)- 打印不同性别的统计结果
python
age_bins = [18, 26, 36, 46, 56, 66, np.inf]
age_labels = ['18-25', '26-35', '36-45', '46-55', '56-65', '65+']- 定义年龄区间的边界点
- 定义对应的年龄组标签
python
data['AgeGroup'] = pd.cut(data['Age'], bins=age_bins, labels=age_labels, right=False)- 使⽤
cut()⽅法将年龄划分到指定区间 - bins 参数指定区间边界
- labels 参数指定区间标签
- right=False 表⽰使⽤左闭右开区间
- 结果存储在新列 'AgeGroup' 中
python
age_group_counts = data['AgeGroup'].value_counts()- 统计各年龄组的驾驶员数量
- value_counts() 计算各组的数量
- 结果存储在 age_group_counts 变量中
python
print("不同年龄段的驾驶员数:\n", age_group_counts)- 打印各年龄段的驾驶员数量统计结果