import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvas
随机生成数据* data = [] for date in dates: for time in times:
for road in roads:
num_vehicles = np.random.randint(100, 500) # 车辆数目
signal_cycle = np.random.randint(60, 120) # 信号灯周期
avg_speed = np.random.randint(30, 60) # 平均车速
accidents = np.random.randint(0, 3) # 交通事故数量
data.append([date, road, time, num_vehicles, signal_cycle, avg_speed, accidents])
模拟了一个包含多个道路、多个时段、多个日期的交通数据集。 roads、times 和 dates 定义了数据的维度,而每条记录表示在某个时间段、某个道路上的交通情况。 num_vehicles、signal_cycle、avg_speed 和 accidents 分别模拟了该时段该路段的车辆数量、信号灯周期、平均车速和交通事故数。
road_summary = df.groupby(['日期', '道路', '时间段']).agg({
'车辆数目': 'sum',
'平均车速': 'mean',
'交通事故数': 'sum',
'交通事故率': 'mean'
}).reset_index() 交通事故率:这里计算了每条记录的交通事故率,即 交通事故数 / 车辆数目,这一指标能有效反映事故的频发程度。 聚合数据:按日期、道路和时间段对数据进行分组,并对每个组别进行汇总: sum:对 车辆数目 和 交通事故数 进行求和。 mean:对 平均车速 和 交通事故率 计算均值。 最终得到的 road_summary DataFrame 包含了按道路、时间段和日期汇总的车流量、车速、事故数等信息。
4.5 信号灯周期与车流量的关系曲线图 plt.figure(figsize=(10, 6)) sns.scatterplot(data=df, x='信号灯周期', y='车辆数目', hue='道路', style='时间段') plt.title('信号灯周期与车流量之间的关系') plt.xlabel('信号灯周期 (秒)') plt.ylabel('车辆数目') plt.legend(title='道路') plt.tight_layout() plt.savefig('signal_cycle_traffic_flow.png') # 保存为PNG文件 plt.close() 绘制了信号灯周期与车辆数目之间的散点图。 每个点代表一个记录,hue='道路' 按道路分色,style='时间段' 按时间段区分点的样式。
c.drawString(30, height - 140, "2. 数据分析:") c.drawString(30, height - 160, " - 按道路和时间段汇总数据,计算了车流量、车速和交通事故率。") c.drawString(30, height - 180, " - 发现高峰时段和高事故率区域。") c.drawString(30, height - 200, "3. 优化建议:") c.drawString(30, height - 220, " - 在高流量时段适当延长信号灯周期。") c.drawString(30, height - 240, " - 在事故高发区域加强交通管理。")
使用 reportlab 库创建了一个 PDF 报告。 报告包含标题、分析过程、优化建议和图表。 图表通过 drawImage 方法嵌入到 PDF 中。 最终报告被保存为 analysis_report.pdf
generate_pdf_report()
# 7. 提供优化建议 high_accident_areas = road_summary[road_summary['交通事故率'] > 0.01] peak_traffic_times = road_summary[road_summary['车辆数目'] > 400]
print("高风险事故区域(事故率 > 1%):") print(high_accident_areas[['日期', '道路', '时间段', '交通事故率']])
print("\n高峰时段交通流量:") print(peak_traffic_times[['日期', '道路', '时间段', '车辆数目']]) 根据分析结果,提供了两种优化建议: 高风险事故区域(事故率大于 1%),需要加强交通管理。 高峰时段交通流量较大,可能需要调整信号灯周期等交通控制措施。 # 假设建议:在高流量时段适当延长信号灯周期,并且在事故高发区域加强交通管理。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有