Ruhi291/IDAI105-2505256-RUHI-PATEL-
GitHub: Ruhi291/IDAI105-2505256-RUHI-PATEL-
基于Streamlit构建的电动汽车充电站数据分析仪表板,集成数据清洗、K-Means聚类、关联规则挖掘和异常检测功能,帮助揭示充电行为模式并提供商业建议。
Stars: 0 | Forks: 0
# IDAI105-2505256-RUHI-PATEL-
SmartCharging Analytics 是一个使用 Streamlit 构建的交互式 EV 充电站仪表板。它对 EV 充电数据执行数据清洗、探索性数据分析、K-Means 聚类、关联规则挖掘和异常检测。该应用揭示了行为模式,识别异常站点,并提供可操作的商业建议。
# ⚡ SmartCharging Analytics — 揭示 EV 行为模式




STREAMLIT APP 链接: https://arfqb2b3tv69uvyijbczef.streamlit.app/
## 📋 项目概述
**SmartCharging Analytics** 是一个使用 Python 和 Streamlit 构建的交互式数据挖掘仪表板。本项目是 **数据挖掘第一学年总结性评估 — 场景 2:SmartCharging Analytics 揭示 EV 行为模式** 的一部分。
该项目模拟了 **SmartEnergy Data Lab** 数据分析师的角色,与 EV(电动汽车)充电基础设施提供商合作。目标是通过先进的数据挖掘技术分析 EV 充电站数据,以改善站点利用率、客户体验和基础设施规划。
## 🎯 项目目标
| 目标 | 描述 |
|-----------|-------------|
| 🔵 聚类充电行为 | 根据使用情况、容量、成本和可用性对站点进行分组 |
| 🚨 检测异常 | 识别异常消耗行为、故障站点或过度使用 |
| 🔗 发现关联 | 探索充电特性与需求之间的关系 |
| 🏗️ 基础设施规划 | 支持关于在何时何地扩建充电站点的决策 |
| 📊 部署仪表板 | 用于探索模式和异常的交互式 Streamlit 应用 |
## 📂 仓库结构
```
SMART-EV-CHARGING/
│
├── app.py # Main Streamlit application
├── requirements.txt # Python dependencies
└── README.md # Project documentation (this file)
```
## 📊 数据集描述
数据集包含 **500 条 EV 充电站记录**,包含以下列:
| 列名 | 描述 |
|--------|-------------|
| Station_ID | 每个充电站的唯一标识符 |
| Latitude / Longitude | 站点的地理坐标 |
| Address | 站点的物理地址 |
| Charger_Type | 充电器类型 — AC Level 1, AC Level 2, 或 DC Fast |
| Cost_USD_kWh | 每千瓦时的充电成本(美元) |
| Availability | 站点的正常运行时间可用性百分比 |
| Distance_to_City_km | 站点到最近城市的距离(公里) |
| Usage_Stats_avg_users_day | 每日平均用户数 |
| Station_Operator | 运营站点的公司 (ChargePoint, Tesla, Blink, EVgo, Greenlots) |
| Charging_Capacity_kW | 最大充电功率(千瓦) |
| Connector_Types | 站点可用的连接器类型 |
| Installation_Year | 站点安装年份 |
| Renewable_Energy_Source | 站点是否使用可再生能源(是或否) |
| Reviews_Rating | 客户评分(1 到 5) |
| Parking_Spots | 站点的停车位数量 |
| Maintenance_Frequency | 站点的维护频率 |
## 🔧 使用的技术
| 库 | 版本 | 用途 |
|---------|---------|---------|
| Streamlit | 1.32+ | Web 仪表板和 UI |
| Pandas | 2.0+ | 数据操作和分析 |
| NumPy | 1.26+ | 数值计算和数据生成 |
| Matplotlib | 3.8+ | 静态图表和可视化 |
| Seaborn | 0.13+ | 统计数据可视化 |
| Plotly | 5.18+ | 交互式图表和图形 |
| Scikit-learn | 1.4+ | K-Means 聚类, PCA, 预处理 |
| SciPy | 1.12+ | 用于异常检测的统计方法 |
## 🚀 如何在本地运行应用
### 步骤 1 — 安装 Python
从 [python.org](https://www.python.org/downloads/) 下载并安装 **Python 3.11 或 3.12**。
请确保在安装过程中勾选 **"Add Python to PATH"**。
### 步骤 2 — 克隆或下载仓库
```
git clone https://github.com/YourUsername/YourRepositoryName
cd YourRepositoryName
```
### 步骤 3 — 安装所需的库
```
pip install streamlit pandas numpy matplotlib seaborn plotly scikit-learn scipy
```
### 步骤 4 — 运行应用
```
streamlit run app.py
```
### 步骤 5 — 在浏览器中打开
应用将自动在以下地址打开:
```
http://localhost:8501
```
## 📱 应用功能 — 全部 7 个阶段
### 🏠 阶段 1 — 首页与项目范围
- 显示关键指标:总站点数、日均用户数、可再生能源站点数、异常数量
- 清晰列出所有项目目标
- 显示完整的数据集列参考指南
- 显示原始数据集的样本
### 🧹 阶段 2 — 数据清洗与预处理
应用以下预处理步骤以确保数据质量:
- **重复项移除** — 基于 Station_ID 移除重复记录
- **缺失值处理:**
- 数值列 (Reviews_Rating) → 使用中值填充
- 分类列 (Renewable_Energy_Source) → 使用默认值填充
- 分类列 (Connector_Types) → 使用众数(最常出现的值)填充
- **标签编码 (Label Encoding)** — 将分类列转换为用于机器学习的数值:
- Charger_Type, Station_Operator, Renewable_Energy_Source, Connector_Types, Maintenance_Frequency
- **StandardScaler 标准化** — 将连续变量归一化到相同的尺度:
- Cost_USD_kWh, Usage_Stats_avg_users_day, Charging_Capacity_kW, Distance_to_City_km, Reviews_Rating, Availability, Parking_Spots
**可视化:**
- 带有颜色编码卡片的缺失值处理摘要
- 所有连续变量的分布直方图
- 显示关键特征之间关系的相关性热力图
- 完整的清洗后数据集预览表
### 📊 阶段 3 — 探索性数据分析 (EDA)
涵盖所有 EDA 要求的五个综合选项卡:
**使用分布:**
- 显示日均用户分布的直方图
- 比较不同充电器类型使用情况的箱线图
**充电器类型分析:**
- 按充电器类型显示站点数量的条形图
- 按类型显示平均充电容量的条形图
- 显示 Charger Type 与 Availability 区间使用情况的需求热力图
**按运营商分列的成本:**
- 显示每个运营商每千瓦时成本分布的箱线图
**评分与使用:**
- 评分 (Reviews Rating) 与平均日使用量的散点图
- 可再生能源影响分析表
**随时间增长:**
- 显示每年安装站点数与日均用户数的双轴图
### 🔵 阶段 4 — 聚类分析 (K-Means)
**用于聚类的特征:**
- Usage_Stats_avg_users_day
- Charging_Capacity_kW
- Cost_USD_kWh
- Availability
**三个选项卡:**
**肘部法则 (Elbow Method):**
- 用于寻找最佳聚类数的惯性图
- 用于验证的轮廓系数图
- 最佳 K 值自动高亮显示
**聚类散点图:**
- PCA (主成分分析) 将特征降维至 2D
- 按聚类标签着色的交互式散点图
- 悬停详情显示站点信息
**聚类概况:**
- 显示每个聚类平均特征值的表格
- 按充电器类型显示每个聚类站点数量的条形图
**聚类标签:**
| 标签 | 描述 |
|-------|-------------|
| 🟢 偶尔使用者 (Occasional Users) | 低使用率、低容量、低成本的站点 |
| 🟡 日常通勤者 (Daily Commuters) | 中等使用率、中等容量的站点 |
| 🔴 重度使用者 (Heavy Users) | 高使用率、高容量、以 DC Fast 为主 |
### 🔗 阶段 5 — 关联规则挖掘
**方法:** 手动频繁项集挖掘 — 等同于 Apriori 算法。无需外部库。
**用于挖掘的离散化特征:**
- Charger_Type
- Renewable_Energy_Source
- Usage_Level (Low / Medium / High)
- Cost_Level (Low / Medium / High)
- Capacity_Level (Low / Mid / High)
- Maintenance_Frequency
**计算的指标:**
| 指标 | 描述 |
|--------|-------------|
| Support | 项集在数据集中出现的频率 |
| Confidence | 规则的正确频率 |
| Lift | 给定前件的情况下,后件发生的可能性增加多少 |
**三个选项卡:**
- 规则表 — 按 Lift 排序的前 25 条规则
- Lift 条形图 — 可视化的前 15 条规则
- Support vs Confidence 散点图,以 Lift 作为气泡大小
**关键发现:** DC Fast Charger 结合 High Usage Level 是一个持续强劲的关联。市中心附近的低成本站点 reliably 显示出高需求。
### 🚨 阶段 6 — 异常检测
使用两种统计方法来检测异常:
**IQR 方法 (四分位距):**
- 标记 Usage > Q3 + 1.5 × IQR 的站点
- 显示正常站点与红色异常站点的交互式箱线图
**Z-Score 方法:**
- 标记 |Z-score| > 3 的站点
- 显示所有站点 Z-Score 及阈值线的散点图
**高成本 + 低评分检测:**
- 单独标记收费高但评价差的站点
- 这些是服务质量审计的候选对象
**三个选项卡:**
- IQR 箱线图
- Z-Score 分析与高成本低评分散点图
- 包含所有标记站点的完整异常记录表
### 💡 阶段 7 — 洞察与报告
**摘要发现:**
- 聚类结果及每个聚类代表的内容
- 最受欢迎的充电器类型及其平均使用率
- 可再生能源对日均用户的影响
- 检测到的异常数量和百分比
- 发现的关键关联规则
- 城市与农村使用情况比较
**运营商比较:**
- 每个运营商的平均评分、使用率、成本和站点数的摘要表
- 比较运营商评分与使用率的散点图
**商业建议:**
| # | 建议 |
|---|---------------|
| 1 | 在 Heavy User 聚类区域扩展 DC Fast Charger 网络 |
| 2 | 审计高成本低评分站点的服务质量问题 |
| 3 | 增加整个网络的可再生能源份额 |
| 4 | 调查异常站点是否存在故障或容量需求 |
| 5 | 专注于服务不足的农村地区的扩张战略 |
| 6 | 使维护计划与高峰使用时段保持一致 |
## 📈 关键结论
在完成对 EV 充电站数据集的所有数据挖掘分析阶段后,得出了以下关键结论:
1. **DC Fast 充电器需求最大** — 它们在所有站点类型中产生的日均使用率最高,并在 K-Means 聚类识别的 Heavy Users 聚类中占主导地位。
2. **可再生能源站点吸引更多用户** — 由可再生能源供电的站点显示出比非可再生能源站点更高的日均使用率,这表明 EV 用户重视可持续性。
3. **城市站点比农村站点繁忙得多** — 位于市中心 10 公里范围内的站点,其日均用户数远高于农村站点,证实了与城市区域的地理接近性是需求的主要驱动力。
4. **异常代表真实的商业机会** — 通过 IQR 和 Z-Score 方法检测到的异常站点不仅仅是数据错误。许多代表服务不足且急需扩容的高需求位置。
5. **关联规则揭示了可靠的需求模式** — DC Fast 充电器、高容量和高使用水平之间的强关联可以指导基础设施投资决策。城市附近的低成本站点持续吸引高客流。
6. **运营商质量差异显著** — 运营商比较揭示了定价和客户满意度方面的明显差异。一些运营商收取高价但评价很差,表明定价与服务质量之间存在脱节。
7. **维护频率影响可用性** — 具有每月维护计划的站点显示出更高的可用性百分比,直接将维护投资与站点正常运行时间和用户体验联系起来。
## 👤 作者
- **学生姓名:** Ruhi Patel
- **学生 ID:** 2505256
- **课程:** Data Mining — Year 1
- **CRS:** Artificial Intelligence
- **评估:** Summative Individual Project
- **场景:** Scenario 2 — SmartCharging Analytics
## 📚 参考资料
- Streamlit Documentation — https://docs.streamlit.io
- Scikit-learn Clustering — https://scikit-learn.org
- Plotly Python Charts — https://plotly.com/python
- K-Means Clustering Guide — https://neptune.ai/blog/k-means-clustering
- Anomaly Detection Techniques — https://www.kdnuggets.com/2023/05/beginner-guide-anomaly-detection-techniques-data-science.html
- EV Charging Behavior Research — https://arxiv.org/pdf/1802.04193
- Association Rule Mining — https://camp.com/insights/association-mining-rules-combined-with-clustering/
*使用 Python 和 Streamlit 用 ❤️ 构建 — Data Mining Year 1 Summative Assessment*
标签:BSD, EDA, EV Charging, K-Means聚类, Kubernetes, Python, Streamlit, 交互式应用, 代码示例, 仪表盘, 充电站, 关联规则挖掘, 商业智能, 基础设施规划, 异常检测, 探索性数据分析, 数据分析, 数据挖掘, 数据清洗, 无后门, 智慧交通, 电动汽车, 能源管理, 访问控制, 逆向工具