Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

异常数据可视化系统

这是一个基于 Dash、Plotly、Pandas 和 SciPy 构建的异常数据可视化系统,主要用于时序数据的展示、异常区间定位,以及异常段与正常段的频域对比分析。

运行示意图

1. 功能简介

系统围绕时序异常分析提供 4 个核心页面:

  • 首页:自动扫描 data/ 目录下的数据集,并展示数据集名称、文件大小、是否包含标注。
  • 数据预览:按日期、时间、变量、异常类型进行筛选,并以多子图形式展示时序曲线。
  • 异常可视化:按照异常类型查看异常事件,支持分页和 2×2、3×3、4×4 网格布局。
  • 频域分析:从单个异常事件出发,对异常段和正常段进行 PSD、FFT 以及时频综合对比。

2. 启动方法

2.1 环境要求

  • Python 3.9 及以上
  • 推荐使用 venv 或 Conda 创建独立环境

2.2 安装依赖

pip install -r req.txt

如果你希望沿用原始依赖文件,也可以执行:

pip install -r requirements.txt

2.3 启动项目

python app.py

启动后在浏览器访问:

http://localhost:8050

系统默认监听 0.0.0.0:8050,调试模式为开启状态。

3. 需要的数据形式

项目会自动扫描 data/ 目录下的子文件夹,每个子文件夹代表一个数据集。每个数据集至少需要一个 data.csv,若有异常标注可额外提供 anno_data.csv

目录示例:

data/
├── 数据集A/
│   ├── data.csv
│   └── anno_data.csv
└── 数据集B/
    └── data.csv

3.1 data.csv 格式

列名 是否必需 说明
秒序号 连续秒级序号,系统会用它做切片和定位
时刻 小时制浮点时间,便于保留原始时间表达
time 时间字符串,系统会转换成 datetime
其他列 业务变量或传感器变量,每一列代表一个观测指标

说明:

  • time 列需要能被 Pandas 正常解析。
  • 秒序号时刻time 外,其余列都会被识别为可视化变量。

3.2 anno_data.csv 格式

列名 是否必需 说明
date 日期,格式示例:3月14日
start 异常开始秒偏移
end 异常结束秒偏移
type 异常类型名称

说明:

  • startend 是相对于当天数据起点的秒偏移。
  • 系统会自动把标注换算成绝对时间区间,并叠加到图表上。

4. 使用方法

4.1 选择数据集

启动后先进入首页,点击目标数据集卡片,系统会把当前数据集写入会话状态,然后跳转到数据预览页面。

4.2 数据预览

在数据预览页可以:

  • 选择日期范围
  • 输入开始时间和结束时间
  • 勾选需要查看的变量
  • 勾选需要高亮显示的异常类型

系统会按变量生成共享时间轴的多张折线图,并以半透明色块标出异常区间。

4.3 异常可视化

在异常可视化页可以:

  • 按日期范围过滤异常事件
  • 单选某一种异常类型
  • 自定义展示变量
  • 切换 2×2、3×3、4×4 网格布局
  • 通过分页按钮浏览全部异常事件

每个子图都会展示异常前后约 30 秒的上下文,便于观察异常发生前后的波形变化。

4.4 频域分析

在频域分析页可以:

  • 选择单个变量
  • 选择异常类型
  • 选择具体异常事件
  • 选择 FFT 窗口长度
  • PSDFFT时频对比 三种模式间切换

系统会自动截取异常段,并选取一段长度相近的正常段作为对照,帮助分析异常是否带来了显著频谱差异。

5. 主要使用的部件

5.1 技术组件

部件 作用
Dash 构建整个 Web 应用和页面回调
Plotly 绘制折线图、子图、异常高亮区域
Dash Bootstrap Components 提供导航栏、表单、卡片、按钮等界面组件
Pandas 读取和清洗 csv 数据
NumPy 数值计算、FFT 处理
SciPy 进行 Welch 功率谱密度分析

5.2 代码部件

文件/目录 作用
app.py 应用主入口,负责导航栏、路由切换、全局布局
data_loader.py 数据集扫描、数据读取、异常标注解析、时间切片
pages/home.py 首页数据集选择逻辑
pages/preview.py 数据预览页及筛选回调
pages/anomaly.py 异常网格浏览和分页逻辑
pages/frequency.py 频域分析与对照图构建
process_smap.py 将原始 SMAP 数据转换为系统可识别格式
assets/style.css 页面样式文件
img/img1.png 项目运行示意图

6. 数据转换说明

如果原始数据不是系统要求的标准格式,可以参考 process_smap.py 进行预处理。该脚本会把 raw/SMAP.csv 转换为:

  • data/SMAP/data.csv
  • data/SMAP/anno_data.csv

执行方式:

python process_smap.py

7. 仓库说明

当前仓库只保留代码、配置和说明文件,不包含任何示例数据、原始数据或本地运行产物。

如果需要运行项目,请自行按上述格式准备数据后放入本地 data/ 目录;如需做原始数据转换,也请把原始文件放到本地 raw/ 目录后再执行脚本。

About

用于异常检测数可视化

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages