Skip to content

Repository files navigation

LTV 数据子序列分析系统

项目地址,我的gitee仓库:https://gitee.com/yohoten_space/ltv_apy_subsequence

LTV (Lifetime Value) 数据子序列分析系统是一个交互式数据可视化工具,用于分析和比较客户生命周期价值数据序列。

功能特点

多种数据可视化方式

  • LTV序列对比图:直观展示不同客户群体的生命周期价值变化趋势
  • OncoPrint图:仿生物信息学中的OncoPrint图展示客户生命周期关键事件
  • 热力图:以热力图形式展示数据相关性
  • 数据表格:以传统表格形式展示原始数据

交互式操作

  • 图表缩放和平移
  • 点击查看详情
  • 多标签页切换不同视图
  • 图表导出功能

数据筛选和分析

  • 基于条件的序列筛选
  • 时间范围选择器
  • 统计指标计算功能

高级可视化功能

  • 趋势线拟合
  • 异常检测标记
  • 预测功能(ARIMA、LSTM等)

自适应设计

  • 响应式布局适配不同屏幕尺寸
  • 支持深色模式

安装和运行

环境要求

  • Python 3.8+
  • 相关依赖包(见下节)

安装步骤

  1. 克隆或下载本项目到本地

  2. 创建虚拟环境(推荐):

python -m venv .venv
  1. 激活虚拟环境:
# Windows PowerShell
.venv\Scripts\Activate.ps1

# Windows CMD
.venv\Scripts\activate.bat

# macOS/Linux
source .venv/bin/activate
  1. 安装核心依赖包:
pip install -r requirements.txt
  1. 准备数据文件:
    • 将数据文件放置在 data/transposed_data.csv
    • 或通过环境变量 LTV_DATA_PATH 指定数据文件路径

依赖管理说明

项目采用分层依赖管理策略,以优化安装包体积:

核心依赖(必需)

包含在 requirements.txt 中,运行程序所必需:

  • PyQt5 - GUI框架
  • pyqtgraph - 高性能绘图
  • matplotlib - 图表绘制
  • pandas, numpy - 数据处理
  • scikit-learn, scipy - 数据分析
  • seaborn - 可视化增强
  • SQLAlchemy - 数据库支持(可选)

可选依赖(按需安装)

以下功能需要额外安装包:

ARIMA预测功能:

pip install statsmodels==0.14.0

LSTM深度学习预测(约500MB):

pip install tensorflow==2.13.0

构建工具(仅打包时需要)

如需打包成可执行文件:

pip install -r build_requirements.txt

或单独安装:

pip install cx_Freeze==6.15.12

依赖检查工具

项目提供了依赖检查脚本,可以验证当前环境的包安装情况:

python check_dependencies.py

该工具会显示:

  • ✓ 正确安装的包
  • ⚠ 版本不匹配的包
  • ✗ 缺失的包
  • 可能不必要的大包

虚拟环境清理与重建

如果虚拟环境出现问题,可以使用提供的脚本快速重建:

Windows批处理:

rebuild_env.bat

PowerShell:

.\rebuild_env.ps1

这些脚本会:

  1. 卸载所有已安装的包
  2. 重新安装核心依赖
  3. 验证安装结果

预测功能依赖(可选)

要使用ARIMA和LSTM预测功能,需要安装额外的依赖:

pip install statsmodels tensorflow

或者取消 requirements.txt 中相应行的注释,然后运行:

pip install -r requirements.txt

运行应用

运行桌面版本(基于PyQt5):

python main.py

如果遇到Qt平台插件错误(如Could not find the Qt platform plugin "windows"),请设置环境变量:

$env:QT_QPA_PLATFORM_PLUGIN_PATH=".venv\Lib\site-packages\PyQt5\Qt5\plugins"

然后再次运行:

python main.py

或者可以一条命令执行:

$env:QT_QPA_PLATFORM_PLUGIN_PATH=".venv\Lib\site-packages\PyQt5\Qt5\plugins"; python main.py

配置说明

配置文件

系统支持通过 config.json(与 config.py 同级)持久化配置。第一次运行时使用默认值,修改配置后自动保存。

配置优先级

  1. 环境变量 LTV_DATA_PATH(覆盖配置文件中的 DATA_PATH)
  2. config.json 中的持久化配置
  3. 代码中的默认值

环境变量

变量名 说明 默认值
LTV_DATA_PATH 数据文件路径 data/transposed_data.csv
QT_QPA_PLATFORM_PLUGIN_PATH Qt平台插件路径 .venv\Lib\site-packages\PyQt5\Qt5\plugins

使用指南

主要界面

应用启动后显示四个标签页:

  1. LTV序列比对图:显示各序列的生命周期价值变化
  2. OncoPrint图:以OncoPrint形式展示客户生命周期事件
  3. 热力图:以热力图展示基因改变情况
  4. 数据表格:以表格形式展示原始数据

交互操作

  • 点击查看:在LTV序列比对图上点击数据点可查看详细信息
  • 缩放平移:使用鼠标滚轮缩放,拖拽平移视图
  • 图表导出:使用图表工具栏中的相机图标导出图片
  • 加载新数据:使用"加载数据"按钮可以选择新的数据文件
  • 主题切换:在"视图"菜单中可以切换深色/浅色模式

数据筛选和分析

在"LTV序列比对图"标签页中,提供了丰富的数据分析功能:

  1. 序列筛选:在"序列筛选"输入框中输入关键词,点击"应用筛选"按钮筛选包含关键词的序列
  2. 时间范围选择:在"开始时间"和"结束时间"输入框中输入时间索引,点击"应用时间范围"按钮限定显示的时间范围
  3. 统计指标计算:点击"计算统计指标"按钮计算并显示各序列的基本统计信息(均值、标准差、最小值、最大值)
  4. 趋势线拟合:点击"添加趋势线"按钮为每个序列添加线性趋势线
  5. 异常检测:点击"标记异常点"按钮使用Z-score方法检测并标记异常点

预测功能

在菜单栏的"分析"菜单中提供了两种预测方法:

  1. ARIMA预测:基于时间序列的ARIMA模型进行预测(需要安装statsmodels库)
  2. LSTM预测:基于深度学习的LSTM神经网络进行预测(需要安装tensorflow库)

技术架构

主要技术栈

代码结构

LTV_apy_subsequence/
├── main.py                    # 程序入口点
├── config.py                  # 配置管理(支持 config.json 持久化)
├── config.json                # 持久化配置文件(自动生成)
├── .gitignore
├── gui/                       # GUI相关模块
│   ├── main_window.py         # 主窗口类
│   ├── tabs/                  # 标签页模块
│   │   ├── ltv_tab.py         # LTV序列标签页
│   │   ├── oncoprint_tab.py   # OncoPrint标签页
│   │   ├── heatmap_tab.py     # 热力图标签页
│   │   └── table_tab.py       # 数据表格标签页
│   └── widgets/               # 自定义控件
│       ├── optimized_plot.py  # pyqtgraph 绘图控件
│       └── config_dialog.py   # 配置对话框
├── data/                      # 数据处理模块
│   ├── loader.py              # 数据加载器
│   ├── extended_loader.py     # 扩展数据加载器
│   ├── models.py              # 数据模型
│   └── transposed_data.csv    # 示例数据
├── utils/                     # 工具模块
│   ├── theme.py               # 主题管理
│   ├── font_manager.py        # 字体管理
│   └── data_analysis.py       # 数据分析工具
├── tests/                     # 测试
│   └── test_data_loader.py
├── build_pyinstaller_fixed.py # 构建脚本
├── build_pyinstaller.bat      # 构建批处理
├── LTV_apy_subsequence.spec   # PyInstaller spec
├── README.md
├── requirements.txt
└── LTV_apy_subsequence.ico

性能优化措施

大数据处理

  • 使用多线程加载数据,避免阻塞UI线程
  • 对超过阈值的数据序列进行分页处理
  • 限制同时显示的序列数量

渲染优化

  • 图表采用增量渲染策略
  • 合理设置图表分辨率

内存管理

  • 及时释放不需要的数据对象
  • 使用高效的数据结构存储中间结果

故障排除

常见问题

  1. 数据文件未找到

    Exception: 文件未找到,请确保文件路径正确
    

    解决方法:

    • 检查数据文件是否存在
    • 确认环境变量 LTV_DATA_PATH 设置正确
    • 确保有文件读取权限
  2. 数据格式错误

    Exception: 数据文件格式错误,请检查CSV文件格式
    

    解决方法:

    • 检查CSV文件格式是否正确
    • 确保文件编码为UTF-8
  3. Qt平台插件错误

    qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""
    

    解决方法:

    • 设置环境变量 QT_QPA_PLATFORM_PLUGIN_PATH 指向正确的插件目录
    • 通常路径为 .venv\Lib\site-packages\PyQt5\Qt5\plugins
  4. 中文显示为方框或乱码

    RuntimeWarning: Glyph XXXX missing from current font
    

    解决方法:

    • 确保系统已安装中文字体(如黑体、微软雅黑等)
    • 程序会自动配置中文字体支持,如仍有问题可手动设置系统字体
  5. 趋势线或异常检测功能报错

    TypeError: 'NoneType' object is not callable
    

    解决方法:

    • 此问题已在最新版本中修复,请确保使用最新的代码版本

开发计划

  • 深色模式支持
  • 数据筛选和分析功能
  • 配置持久化(config.json)
  • 导出功能完整实现
  • 预测功能(ARIMA/LSTM 当前为占位)
  • 增加更多图表类型
  • 单元测试覆盖

贡献指南

欢迎提交Issue和Pull Request来帮助改进本项目。

许可证

本项目仅供学习交流使用。

About

数据子序列分析工具,用于分析和比较客户生命周期价值数据序列。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages