Python使用PEMS04数据集绘制交通流量折线图

温以宁
温以宁
发布时间:2026-10-16| 5人浏览过
原创

本文介绍如何使用Python读取加州高速公路PEMS04数据集,提取交通流量特征,并利用matplotlib绘制旧金山2018年1月至2月的交通流量折线图。教程涵盖数据解压、维度解析及按周分布的可视化实现,帮助开发者掌握基础交通数据分析方法。

一、数据集下载

加州高速公路PEMS数据集

本例使用PEMS04数据集中的交通流量信息。该数据集记录了旧金山在2018年1月1日至2月28日期间,29条道路上307个探测器每五分钟采集一次的数据。

二、折线图绘制

1、解压npz文件

npz是NumPy库使用的压缩文件格式,需借助NumPy进行读取。

参数allow_pickle=True用于避免高版本NumPy加载时可能出现的错误。

通过data.files可查看压缩文件内包含的所有文件列表。

import numpy as np
data = np.load(数据集存放地址, allow_pickle=True)
print(data.files)

查看结果显示,压缩文件内仅包含data一个文件:

使用data['data']即可读取该数据集内容,同时可以检查数据的维度结构。

print(data['data'].shape)

数据维度如下:

总数据量为16992,计算方式为59天×24小时×12(每五分钟统计一次),307代表探测器数量,3为特征维度。

2、折线图绘制

数据包含三个特征:交通流量、平均速度和平均占用率。此处仅提取第一个特征(交通流量)进行绘图,且只展示单个探测器的数据。

flow = data['data'][:, 0, 0]

导入matplotlib库,通过pyplot模块绘制基础折线图。

import matplotlib.pyplot as plt

为了观察工作日流量变化,将横坐标替换为周一至周日。已知旧金山2018年1月1日为周一。

完整的绘图代码如下:

import numpy as np
import matplotlib.pyplot as plt
data = np.load(文件路径, allow_pickle=True)
flow = data['data'][:, 0, 0]
print(len(flow))
week = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
x = []
for i in range(59):
    x.append(week[(i + 1) % 7])
y = []
sum = 0
for i in range(len(flow)):
    if i == 0 or (i + 1) % 288 != 0:
        sum += flow[i]
    else:
        y.append(sum)
        sum = 0
 
fig = plt.figure(figsize=(15, 5))   # 图片宽度设置的大一些
plt.title('traffic flow in San Francisco')
plt.xlabel('day')
plt.ylabel('flow')
plt.xticks(np.arange(59), x)
plt.plot(np.arange(59), y, linestyle='-')
fig.autofmt_xdate(rotation=45)  # x轴的刻度标签逆时针旋转45度
plt.show()

最终绘制结果如下:

文章大部分KPI遵循“Mary's Peak”模式,例如公共交通出行和外卖点餐情况。从上图可见,交通流量也符合这一模式。

至此,关于Python绘制交通流折线图的详细介绍结束。如需了解更多Python绘制折线图相关内容,可搜索本站往期文章或继续浏览后续文章,感谢支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。