# Predict-Electricity **Repository Path**: sunkexin/predict-electricity ## Basic Information - **Project Name**: Predict-Electricity - **Description**: 这是一个电力负荷预测系统 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-09-09 - **Last Updated**: 2026-09-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vue + Django 全栈可视化系统:基于 ARIMA 的电力负荷预测算法集成与应用 [![Build Status](https://img.shields.io/badge/build-passing-brightgreen)](可选,构建状态) [![PyPI version](https://badge.fury.io/py/your-package-name.svg)](可选,PyPI版本) [![License](https://img.shields.io/badge/license-MIT-blue)](许可证) 该项目基于 Vue+Django 全栈架构,集成 ARIMA 时间序列预测算法搭建电力负荷预测系统,实现历史负荷数据管理、预测模型配置训练、预测结果可视化,旨在满足电力行业的电力负荷预测分析需求。 ## 项目简介 1. 本项目基于 Vue+ Django 全栈架构搭建,核心集成 ARIMA 时间序列预测算法,搭配 MySQL 数据库实现数据持久化存储。 2. 前端采用 Vue 2 + Webpack 开发,可实现灵活的页面交互,并通过 ECharts 完成预测结果可视化展示。 3. 后端以 Django 为核心,可完成 Excel/CSV 格式历史负荷数据的清洗与预处理,并使用 ARIMA 算法,精准实现中长期电力负荷预测。 4. 系统具备完整的电力负荷数据管理能力,涵盖预测任务提交、预测结果查询、历史预测记录管理等核心功能,通过 Django 实现 MySQL 数据库的高效操作,确保历史负荷数据、用户信息、预测结果等数据的规范化管理。 ## 难度等级介绍 ### 五星难度:综合使用多种前后端框架实现基于BS结构的应用程序。 - BS 结构的完整落地:项目完全基于BS架构开发,前端 Vue 构建的交互界面(登录、数据管理、预测配置等核心界面)运行于浏览器,后端 Django 搭建的服务部署于服务器,包括 “数据导入 - 预处理 - 算法预测 - 结果可视化 - 记录管理” 各部分,是可落地的应用程序。 - 前端多框架深度综合使用:核心使用 Vue 2/3(组件化开发、路由管理),同时集成 Element Plus(UI 组件封装)、Axios(请求拦截 / 跨域处理)、ECharts(预测曲线动态渲染)、Webpack/Vite(工程化构建),涉及组件通信、图表性能优化、环境配置定制等中高阶应用,而非单一框架的基础调用。 - 后端多框架/库集成与业务融合:以 Django 为核心,整合 Django REST Framework、JWT(身份认证)、pandas/numpy(数据清洗)、statsmodels(ARIMA 算法工程化),实现 ORM 复杂数据操作、序列化校验、算法参数动态配置等,完成框架与算法的深度融合。 - 前后端框架协同的复杂度:解决跨框架集成的核心问题(如 Django 跨域配置与 Axios 请求适配、JWT Token 前后端协同管理、ECharts 与后端数据格式适配),体现 “多种框架综合使用” 的核心要求。 ## 安装 ### 1. 前置环境 请确保本地已安装以下基础环境: - 安装 Python 3.8+:用于运行 Django 后端服务及 ARIMA 算法计算。 - 安装 Node.js 14+:用于运行 Vue 前端服务,附带 npm/yarn 包管理工具。 - 安装 MySQL 5.7+ 或 MySQL 8.0:用于搭建数据库服务,创建项目专属数据库。 ### 2. 后端环境准备(Django + MySQL + ARIMA) #### 步骤 1:创建并激活 Python 虚拟环境并安装依赖 ```Bash # 1. 创建虚拟环境 python -m venv django_env # 2. 激活虚拟环境 # Windows 系统 django_env\Scripts\activate # 3. 安装核心依赖(包含项目所需的全部核心包) pip install django djangorestframework djangorestframework-simplejwt pymysql requests pandas numpy statsmodels openpyxl python-dotenv ``` #### 步骤 2:MySQL 数据库配置 1. 登录 MySQL 终端,创建项目数据库: `SQL CREATE DATABASE power_prediction_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ` 1. 修改 Django 项目的配置文件,配置 MySQL 连接信息: ```Python # Django 项目 [settings.py](settings.py) 中的数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 指定 MySQL 引擎 'NAME': 'power_prediction_db', # 刚才创建的数据库名 'USER': 'root', # MySQL 用户名 'PASSWORD': 'your_mysql_password', # MySQL 密码 'HOST': '[127.0.0.1](127.0.0.1)', # 数据库地址(本地默认 [127.0.0.1](127.0.0.1)) 'PORT': '3306', # MySQL 端口(默认 3306) 'OPTIONS': { 'charset': 'utf8mb4' } } } ``` ### 3. 前端环境准备(Vue) #### 步骤 1:创建 Vue 项目(二选一) - 方式 1:Vue 3 + Vite ```Bash npm create vite@latest power-prediction-frontend -- --template vue cd power-prediction-frontend npm install ``` - 方式 2:Vue 2 + Webpack ```Bash vue create power-prediction-frontend cd power-prediction-frontend npm install ``` #### 步骤 2:安装前端核心依赖 ```Bash # 安装 Axios(前后端交互)、ECharts(数据可视化)、Element Plus(UI组件) npm install axios echarts element-plus ``` ## 使用方法 ### 1. 后端服务启动 按照以下步骤有序启动,避免数据库迁移或服务启动失败: #### 步骤 1:数据迁移(创建 MySQL 数据表) ```Bash python manage.py makemigrations python manage.py migrate ``` #### 步骤 2:创建超级管理员(可选,用于后台管理) ```Bash python manage.py createsuperuser ``` #### 步骤 3:启动 Django 开发服务器 ```Bash python manage.py runserver ``` #### 验证后端服务是否正常 启动成功后,访问 ` http://127.0.0.1:8000/admin `,输入超级管理员账号密码,能看到 `PowerData` 和 `PredictionResult` 模型的管理界面即表示后端服务与 MySQL 连接正常。 ### 2. 前端服务启动 #### 步骤 1:进入 Vue 项目根目录 ```Bash cd Predict_Electricity ``` #### 步骤 2:启动 Vue 开发服务器 ```Bash npm run serve ``` #### 验证前端服务是否正常 启动成功后,打开浏览器访问终端提示的地址(如 ` http://localhost:8080/ `),能看到预测配置页面即表示前端服务启动正常。 ### 3. 核心功能使用示例 - 示例 1:ARIMA 预测接口调用 ``` Python import requests import json # JWT Token(需先登录获取) token = "your_jwt_token" # 预测接口地址 url = "http://127.0.0.1:8000/api/predict/" # 请求头 headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } # 请求参数(ARIMA p/d/q参数 + 预测天数 + 数据ID) data = { "p": 1, "d": 1, "q": 1, "predict_days": 7, "data_id": 1 } # 发送POST请求 response = requests.post(url, headers=headers, data=json.dumps(data)) # 打印预测结果 print(response.json()) ``` - 示例 2:项目截图 1. **登录/注册界面**:用户身份验证 ![img_1.png](img_1.png) 2. **数据管理界面**:导入/查看/编辑历史负荷数据 ![img_2.png](img_2.png) 3. **预测结果界面**:通过 ECharts 可视化展示预测曲线,支持实际值和预测值对比 ![img_3.png](img_3.png) ![img_4.png](img_4.png) 4. **后端管理界面**:管理用户、负荷数据、预测结果 ![img_5.png](img_5.png) ![img_6.png](img_6.png) ![img_7.png](img_7.png) - 示例 3:项目视频 - [点击查看完整演示视频](project_video.mp4) ## 贡献说明 本项目欢迎所有开发者参与贡献,共同完善电力负荷预测系统的功能和性能,贡献方式如下: - 代码贡献:Fork 本项目仓库创建分支,完成开发后提交 Pull Request,经审核通过后合并至主分支。 - 功能建议:通过 Issues 提交,详细描述需求场景、预期效果。 - BUG 反馈:通过项目 Issues 提交 BUG 信息,需附带环境配置、复现步骤、报错截图/日志,便于快速定位和修复。 - 文档完善:补充项目开发文档、部署文档、算法说明文档,修正现有文档中的错别字、疏漏或错误步骤,提升项目的可维护性和易用性。 - 贡献规范:提交代码需附带必要的注释和测试用例,确保代码的可读性和稳定性。 ## 许可证 本项目采用 **MIT 许可证** 进行开源授权,完整授权条款请查看项目根目录下的 `LICENSE` 文件: - 允许自由使用:任何人可免费下载、修改、复制本项目代码,用于个人学习、非商业项目或商业项目开发。 - 保留版权声明:在使用、修改或分发本项目代码时,需保留原项目的版权声明和许可证信息,不得移除或篡改。 - 免责声明:作者不对项目的功能性、稳定性做任何明示或暗示的担保,不承担因使用本项目而产生的任何直接或间接损失责任。 ## 项目状态 稳定版(Stable) - 核心功能(数据导入、ARIMA 预测、可视化、历史记录)已全部实现并通过测试; - 持续优化方向:ARIMA 算法精度、大规模数据处理效率、前端交互体验。 ## 更新日志 v1.0.0(当前版本) - 完成 Vue + Django 前后端基础架构搭建; - 实现电力历史数据(Excel/CSV)导入导出; - 实现预测结果 ECharts 可视化。 ## 致谢 - 感谢 statsmodels 开源库提供 ARIMA 算法实现; - 感谢 Django、Vue 开源社区提供的框架能力支撑; - 感谢 Pandas、ECharts 等开源工具简化数据处理与可视化开发; - 感谢所有为本项目提出建议和贡献代码的开发者。 ## 联系方式 若在项目使用、开发或贡献过程中有任何疑问,可通过以下方式取得联系: - 项目维护者邮箱:3023234205@tju.edu.cn - 代码仓库地址:https://gitee.com/hykk1/predict-electricity.git - 问题反馈优先渠道:项目仓库 Issues