项目地址,我的gitee仓库:https://gitee.com/yohoten_space/ltv_apy_subsequence
LTV (Lifetime Value) 数据子序列分析系统是一个交互式数据可视化工具,用于分析和比较客户生命周期价值数据序列。
- LTV序列对比图:直观展示不同客户群体的生命周期价值变化趋势
- OncoPrint图:仿生物信息学中的OncoPrint图展示客户生命周期关键事件
- 热力图:以热力图形式展示数据相关性
- 数据表格:以传统表格形式展示原始数据
- 图表缩放和平移
- 点击查看详情
- 多标签页切换不同视图
- 图表导出功能
- 基于条件的序列筛选
- 时间范围选择器
- 统计指标计算功能
- 趋势线拟合
- 异常检测标记
- 预测功能(ARIMA、LSTM等)
- 响应式布局适配不同屏幕尺寸
- 支持深色模式
- Python 3.8+
- 相关依赖包(见下节)
-
克隆或下载本项目到本地
-
创建虚拟环境(推荐):
python -m venv .venv- 激活虚拟环境:
# Windows PowerShell
.venv\Scripts\Activate.ps1
# Windows CMD
.venv\Scripts\activate.bat
# macOS/Linux
source .venv/bin/activate- 安装核心依赖包:
pip install -r requirements.txt- 准备数据文件:
- 将数据文件放置在
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.0LSTM深度学习预测(约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.batPowerShell:
.\rebuild_env.ps1这些脚本会:
- 卸载所有已安装的包
- 重新安装核心依赖
- 验证安装结果
要使用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 同级)持久化配置。第一次运行时使用默认值,修改配置后自动保存。
- 环境变量
LTV_DATA_PATH(覆盖配置文件中的 DATA_PATH) config.json中的持久化配置- 代码中的默认值
| 变量名 | 说明 | 默认值 |
|---|---|---|
LTV_DATA_PATH |
数据文件路径 | data/transposed_data.csv |
QT_QPA_PLATFORM_PLUGIN_PATH |
Qt平台插件路径 | .venv\Lib\site-packages\PyQt5\Qt5\plugins |
应用启动后显示四个标签页:
- LTV序列比对图:显示各序列的生命周期价值变化
- OncoPrint图:以OncoPrint形式展示客户生命周期事件
- 热力图:以热力图展示基因改变情况
- 数据表格:以表格形式展示原始数据
- 点击查看:在LTV序列比对图上点击数据点可查看详细信息
- 缩放平移:使用鼠标滚轮缩放,拖拽平移视图
- 图表导出:使用图表工具栏中的相机图标导出图片
- 加载新数据:使用"加载数据"按钮可以选择新的数据文件
- 主题切换:在"视图"菜单中可以切换深色/浅色模式
在"LTV序列比对图"标签页中,提供了丰富的数据分析功能:
- 序列筛选:在"序列筛选"输入框中输入关键词,点击"应用筛选"按钮筛选包含关键词的序列
- 时间范围选择:在"开始时间"和"结束时间"输入框中输入时间索引,点击"应用时间范围"按钮限定显示的时间范围
- 统计指标计算:点击"计算统计指标"按钮计算并显示各序列的基本统计信息(均值、标准差、最小值、最大值)
- 趋势线拟合:点击"添加趋势线"按钮为每个序列添加线性趋势线
- 异常检测:点击"标记异常点"按钮使用Z-score方法检测并标记异常点
在菜单栏的"分析"菜单中提供了两种预测方法:
- ARIMA预测:基于时间序列的ARIMA模型进行预测(需要安装statsmodels库)
- LSTM预测:基于深度学习的LSTM神经网络进行预测(需要安装tensorflow库)
- PyQt5:Python桌面GUI框架(桌面版本)
- pyqtgraph:基于PyQt5的科学绘图库
- matplotlib:Python 2D绘图库
- seaborn:统计数据分析和可视化库
- Pandas:数据分析库
- NumPy:数值计算库
- Scikit-learn:机器学习库
- Statsmodels:统计模型库(可选)
- TensorFlow/Keras:深度学习库(可选)
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线程
- 对超过阈值的数据序列进行分页处理
- 限制同时显示的序列数量
- 图表采用增量渲染策略
- 合理设置图表分辨率
- 及时释放不需要的数据对象
- 使用高效的数据结构存储中间结果
-
数据文件未找到
Exception: 文件未找到,请确保文件路径正确解决方法:
- 检查数据文件是否存在
- 确认环境变量
LTV_DATA_PATH设置正确 - 确保有文件读取权限
-
数据格式错误
Exception: 数据文件格式错误,请检查CSV文件格式解决方法:
- 检查CSV文件格式是否正确
- 确保文件编码为UTF-8
-
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
- 设置环境变量
-
中文显示为方框或乱码
RuntimeWarning: Glyph XXXX missing from current font解决方法:
- 确保系统已安装中文字体(如黑体、微软雅黑等)
- 程序会自动配置中文字体支持,如仍有问题可手动设置系统字体
-
趋势线或异常检测功能报错
TypeError: 'NoneType' object is not callable解决方法:
- 此问题已在最新版本中修复,请确保使用最新的代码版本
- 深色模式支持
- 数据筛选和分析功能
- 配置持久化(config.json)
- 导出功能完整实现
- 预测功能(ARIMA/LSTM 当前为占位)
- 增加更多图表类型
- 单元测试覆盖
欢迎提交Issue和Pull Request来帮助改进本项目。
本项目仅供学习交流使用。