基于 Python 的汽车市场数据分析与可视化平台
项目简介
本平台是一个基于 Python Flask 框架的汽车市场数据分析与可视化系统,整合了多个真实汽车市场数据集,提供数据概览、车辆检索、多维分析、价格预测、品牌对比、技术规格分析、销量统计等功能模块,适用于汽车市场趋势研究和二手车价格预测场景。
所有数据源的价格在导入时已按汇率统一转换为人民币(CNY),确保跨数据集价格可比。
功能模块
| 模块 | 功能说明 |
|---|---|
| 数据概览 | 展示市场核心 KPI 指标(挂牌总量、平均价格、品牌数、平均里程),年度均价趋势折线图、燃料类型分布饼图、热门品牌 TOP10 柱状图、价格区间分布柱状图 |
| 车辆数据 | 支持多条件(关键词、数据源、品牌、燃料、变速箱、车型、年份范围、价格范围)组合检索与分页浏览,提供车辆详情查看与 CSV 导出功能 |
| 多维分析 | 品牌均价与挂牌量组合图、燃料类型均价对比、地区分布 TOP20、数值字段相关性热力图、品牌分析明细表格 |
| 价格预测 | 基于随机森林回归模型的二手车价格预测,展示模型评估指标(MAE、RMSE、R²)、特征重要性 TOP15 图表、相似车辆参考 |
| 品牌对比 | 多品牌选择对比分析,展示平均价格对比图、挂牌量对比图、对比明细表格 |
| 技术规格 | 基于 UCI Automobile 数据集的厂商均价分析、车身类型均价饼图、马力 vs 城市油耗 vs 价格散点气泡图 |
| 销量统计 | 厂商总销量排行、车型类别销量饼图、热销车型 TOP20 排行表格 |
| 系统管理 | 管理员专属页面,展示模型信息与评估指标、系统数据概览、已导入数据源列表,支持一键重新训练价格预测模型 |
数据来源
所有数据均为真实公开数据集,非 Mock 生成。原始价格已按汇率统一转换为人民币(CNY):
| 数据集 | 文件 | 记录数 | 原始货币 | 说明 |
|---|---|---|---|---|
| Cars24 二手车市场 | cars_24.csv |
~8000 条 | INR→CNY | 来自 Cars24.com 的印度二手车挂牌数据,含价格、里程、燃料、变速箱、地区等 |
| 美国二手车交易 | usedcars.csv |
~150 条 | USD→CNY | 美国市场二手车样本,含年份、价格、里程、颜色、变速箱 |
| UCI Automobile 规格 | automobile.csv |
~200 条 | USD→CNY | 1985年进口汽车技术规格数据,含发动机参数、油耗、价格等 |
| 厂商销量统计 | car_sales.csv |
~150 条 | USD→CNY | 各品牌车型销量、保值率、价格、马力等统计数据 |
汇率常量(定义在 config.py):
INR_TO_CNY = 0.084(1 印度卢比 ≈ 0.084 人民币)USD_TO_CNY = 7.2(1 美元 ≈ 7.2 人民币)
标准版目录结构
python-car-fenxi/
├── app.py # Flask 应用主入口,路由定义与 API 接口
├── config.py # 应用配置模块(数据库路径、密钥、汇率、分页参数)
├── requirements.txt # Python 依赖包清单
├── data/
│ ├── automotive.db # SQLite 数据库文件(自动生成)
│ └── raw/ # 原始 CSV 数据集
│ ├── automobile.csv
│ ├── car_sales.csv
│ ├── cars_24.csv
│ └── usedcars.csv
├── database/
│ ├── __init__.py # 数据库模块导出
│ └── db.py # SQLite 连接管理与会话工具
├── scripts/
│ ├── __init__.py
│ └── init_database.py # 数据库初始化、建表、CSV 数据导入(含汇率转换)
├── services/
│ ├── __init__.py # 服务模块导出
│ ├── analysis_service.py # 数据分析业务逻辑(统计、检索、导出、对比)
│ └── ml_service.py # 机器学习服务(模型训练、预测、指标查询)
├── static/
│ ├── css/
│ │ └── style.css # 自定义样式
│ └── js/
│ ├── admin.js # 系统管理页交互
│ ├── analysis.js # 多维分析页图表
│ ├── cars.js # 车辆数据页检索与分页
│ ├── common.js # 全局工具函数
│ ├── comparison.js # 品牌对比页交互
│ ├── dashboard.js # 数据概览页图表
│ ├── prediction.js # 价格预测页交互
│ ├── sales.js # 销量统计页图表
│ └── specs.js # 技术规格页图表
├── templates/
│ ├── admin.html # 系统管理页
│ ├── analysis.html # 多维分析页
│ ├── base.html # 基础模板(导航栏、CDN 引用)
│ ├── car_detail.html # 车辆详情页
│ ├── cars.html # 车辆数据页
│ ├── comparison.html # 品牌对比页
│ ├── dashboard.html # 数据概览页
│ ├── login.html # 登录页
│ ├── prediction.html # 价格预测页
│ ├── register.html # 注册页
│ ├── sales.html # 销量统计页
│ └── specs.html # 技术规格页
├── tests/
│ ├── __init__.py
│ └── test_api.py # API 集成测试
├── trained_models/
│ └── price_predictor.joblib # 训练完成的模型文件(自动生成)
├── 运行步骤必看/
│ └── window.md # Windows 运行步骤说明
├── mac_run.sh # macOS/Linux 一键启动脚本
├── window_run.bat # Windows 一键启动脚本
├── 训练手册.md # 模型训练手册
└── README.md # 项目简介
技术栈
| 类别 | 技术 |
|---|---|
| 后端 | Python 3.12 + Flask 3.0 |
| 数据库 | SQLite 3 |
| 前端 | HTML5 + Bootstrap 5.3 + Chart.js 4.4 |
| 机器学习 | scikit-learn 1.5(随机森林回归) |
| 数据处理 | pandas 2.2 + numpy 1.26 |
| 模型持久化 | joblib 1.4 |
| 密码安全 | Werkzeug pbkdf2:sha256 |
环境要求
| 项目 | 要求 |
|---|---|
| Python | 3.12 |
| 操作系统 | Windows / macOS / Linux |
| 内存 | 建议 2GB 以上(模型训练时使用) |
| 磁盘 | 约 500MB(含依赖和数据库) |
| 浏览器 | Chrome / Firefox / Safari / Edge 现代版本 |
账号信息
| 角色 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin | admin123 |
管理员拥有系统管理页面访问权限,可查看模型指标、数据源信息和重新训练模型。新注册用户默认为普通用户角色。