Farhan1232/urban-safety-analytics-dashboard

GitHub: Farhan1232/urban-safety-analytics-dashboard

基于Streamlit和Plotly构建的交互式城市公共安全分析仪表板,将三份CSV数据集转化为五个辅助决策的视图,帮助用户直观分析事件分布、时间趋势和应急响应性能。

Stars: 0 | Forks: 0

# 🛡️ 城市安全分析仪表板 一个交互式、响应式的分析仪表板,将三个原始公共安全数据集转化为五个清晰、辅助决策的视图——事件高发区、时段趋势、事件类型细分、季节性模式和应急响应性能。使用 **Python** 结合 **Streamlit** 和 **Plotly** 构建。

Python Streamlit Plotly License

## ✨ 亮点 - **5 个交互式视图**,每个视图都包含 KPI 卡片和可用的切片器(过滤器) - **响应式布局** —— 完美适配从宽屏桌面到笔记本电脑的各种屏幕 - **品牌一致的设计** —— 采用市政配色方案和严重程度颜色编码 (🔴 高 / 慢 · 🟠 中 / 正常 · 🟢 低 / 快) - **100% 自包含** —— 所有数据均以 CSV 格式打包;无需外部 API、数据库 或云服务 - **可复现** —— 计算字段(Risk Tier、小时、月份、季度、 增长率)均通过代码从原始数据中构建 ## 📸 五大视图 ### 1 · 事件高发区 展示安全压力最高的区域——事件集中度以及每个区域的 **高 / 中 / 低** 风险等级。 ![事件高发区](https://static.pigsec.cn/wp-content/uploads/repos/cas/78/788fbf149560b4dacbdc7e629692a88ae80410734831bec401d63ee4849482fe.png) ### 2 · 时段趋势 展示事件发生的时间——全天小时热力图、3 小时高峰时段、星期模式。 ![时段趋势](https://static.pigsec.cn/wp-content/uploads/repos/cas/b8/b8a8908e1f51cb75e56f71c4b7f36e5048c2c392485b6889498a9b1b092b7734.png) ### 3 · 事件类型细分 展示发生事件的类型——构成以及环比趋势。 ![事件类型细分](https://static.pigsec.cn/wp-content/uploads/repos/cas/7f/7f24ff75336ef4a480604c4143d6beb2b3c3ff232f5d8e3895a51f30bf5e3cfd.png) ### 4 · 季节性与月度模式 展示事件随时间的变化——月度趋势和季度汇总。 ![季节性模式](https://static.pigsec.cn/wp-content/uploads/repos/cas/7d/7d26e6b261028f661f456978c6ac4bdc3eb0ffd8f4226fc272c668dec2e51e5d.png) ### 5 · 应急响应性能 展示应急服务的响应速度——按服务类型和区域划分。 ![响应性能](https://static.pigsec.cn/wp-content/uploads/repos/cas/a7/a72bd3e8f505749f3840bf76f8094221a8bf481206a4923999c6b0707ea5919a.png) ## 🚀 快速开始 ``` # 1. 克隆仓库 git clone https://github.com/Farhan1232/urban-safety-analytics-dashboard.git cd urban-safety-analytics-dashboard # 2. (推荐)创建虚拟环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 3. 安装依赖 pip install -r requirements.txt # 4. 启动 dashboard streamlit run dashboard/UrbanSafety_Dashboard_Python_v1.py ``` 应用将自动在 **http://localhost:8501** 打开。使用 **左侧边栏** 切换视图,并通过每个视图顶部的 **切片器** 过滤数据 — 每个图表和 KPI 都会即时更新。 ## 📊 数据集 所有数据均位于 [`/data`](data) 中,并在工具内加载和清洗(原数据保持不变): | 文件 | 行数 | 描述 | |------|------|-------------| | `UrbanSafety_Incidents_v1.csv` | 1,200 | 事件记录 — 类型、区域、日期、时间、严重程度 | | `UrbanSafety_EmergencyCalls_v1.csv` | 780 | 应急呼叫 — 服务类别、响应时间、状态 | | `UrbanSafety_AreaDemographics_v1.csv` | 8 | 区域背景信息 — 人口、面积、站点、医院 | **覆盖范围:** 2025 年 1 月 – 2026 年 6 月 · 8 个城市区域 · 通过 `Incident_ID` 和 `Area` 关联。 ## 🧮 计算字段 | 字段 | 定义 | |-------|------------| | **Hour** | 从事件时间中提取的小时 (00–23) | | **Month / Quarter** | 从事件日期衍生,用于趋势分析和 Q1–Q4 汇总 | | **Growth rate** | 事件计数的环比百分比变化 | | **Risk Tier** | 每个区域的严重程度加权得分(高=3,中=2,低=1),排名 → 前 3 名=高,中 3 名=中,后 2 名=低 | | **Incidents per 1,000 pop** | 根据区域人口标准化后的事件计数 | ## 📁 项目结构 ``` urban-safety-analytics-dashboard/ ├── dashboard/ # Application source code │ ├── UrbanSafety_Dashboard_Python_v1.py # Main Streamlit app (5 views) │ ├── UrbanSafety_Core_v1.py # Data loading, cleaning, calculated fields │ └── UrbanSafety_Charts_v1.py # Shared, brand-styled Plotly charts ├── data/ # Three bundled source datasets (CSV) ├── screenshots/ # Five 1920×1080 view exports ├── report/ # Insight summary report (PDF) ├── requirements.txt ├── LICENSE └── README.md ``` ## 🔍 关键发现(基于内置数据) - **市中心**是首要热点(235 起事件);三个高风险区域约占总事件数的 48%。 - 事件高峰出现在**深夜 (21:00–23:59)**;**星期日**是最繁忙的日子。 - **盗窃**是最常见的事件类型(约 30%)。 - 平均应急响应时间为 **10.3 分钟**;**消防**是最慢的服务(约 15 分钟),并且**事件较少的外围区域等待时间最长** —— 响应资源配置紧随城市核心区。 完整分析:[`report/UrbanSafety_InsightReport_v1.pdf`](report/UrbanSafety_InsightReport_v1.pdf)。 ## 🛠️ 构建工具 **Python · pandas · Plotly · Streamlit** ## 📄 许可证 基于 [MIT License](LICENSE) 发布。
标签:Kubernetes, Plotly, Streamlit, 代码示例, 仪表盘, 公共安全, 数据分析, 访问控制, 逆向工具