食物數據分析系統
項目概述
食物數據分析系統是一個集食物營養成分查詢、對比分析和數據可視化于一體的Web應用。系統采用前后端分離架構,為用戶提供食物營養信息檢索、食物對比和營養分析等功能,幫助用戶了解食物的營養成分,做出更健康的飲食選擇。
系統架構
總體架構
系統采用前后端分離的架構設計:
- 前端:基于Vue.js框架,使用Element UI組件庫,Echarts圖表庫實現數據可視化
- 后端:基于Flask框架,提供RESTful API服務
- 數據庫:MySQL數據庫存儲食物和營養成分數據
- 數據處理:Python腳本實現數據清洗和轉換
技術棧
前端技術棧
- Vue.js 2.x:前端MVVM框架
- Vue Router:前端路由管理
- Axios:HTTP客戶端
- Element UI:UI組件庫
- Echarts:數據可視化圖表庫
后端技術棧
- Flask:Python Web框架
- PyMySQL:MySQL數據庫連接
- SQLAlchemy:ORM框架
- Pandas:數據分析和處理
數據流程
數據獲取與處理
系統使用的食物數據經過以下流程處理:
- 數據抓取:通過foodSpider目錄下的爬蟲采集食物數據
- 數據轉換:使用
data_conversion.py
將JSON格式數據轉換為CSV格式 - 數據清洗:使用
data_cleaning.py
進行數據清洗,包括:- 刪除空格和多余字符
- 重命名屬性(列)
- 刪除不需要的屬性(列)和行
- 去除重復項
- 處理缺失值(填充為0)
- 數據導入:將處理后的CSV數據導入MySQL數據庫
功能模塊
前端模塊
前端系統主要包含以下視圖和功能:
-
食物搜索 (
search_food.vue
)- 根據食物名稱搜索
- 顯示搜索結果列表
- 查看詳細營養信息
-
食物對比 (
food_contrast.vue
)- 選擇兩種食物進行對比
- 以圖表形式展示營養成分對比
- 對比結果分析
-
營養分析 (
food_power.vue
)- 食物營養價值分析
- 主要營養素含量查看
- 營養素詳情分析
-
營養詳情 (
nutrition_details.vue
)- 展示特定營養素含量排名靠前的食物
- 詳細營養素數據展示
后端API接口
后端提供多個API接口,主要包括:
-
食物查詢接口
/api/food/food_list
:根據名稱查詢食物列表/api/food/food_detailed
:獲取食物詳細信息
-
營養成分接口
/api/food/nutrition_list
:獲取營養成分名稱列表/api/food/nutrition_style_list
:獲取營養類別列表/api/food/nutrition_details
:獲取特定營養成分詳情
-
分析接口
/api/food/main_nutrition
:獲取主要營養素信息/api/food/nutrition_analysis
:獲取食物營養分析/api/food/similar_foods
:查找相似食物/api/food/top_foods
:獲取某營養成分含量最高的食物
數據庫設計
系統使用MySQL數據庫,主要包含以下表:
-
foodinfo表:存儲食物基本信息和營養成分
- id:食物ID
- 食物名稱:食物名稱
- 其他字段:各種營養成分含量
-
nutritions_name表:存儲營養素名稱和分類信息
- id:營養素ID
- nurition_name:營養素名稱
- nurition_style_id:營養素分類ID
-
style表:存儲營養素分類
- nurition_style_id:分類ID
- nurition_style_name:分類名稱
部署指南
環境要求
Mac系統環境
- Python 3.6+
- Node.js 10+
- MySQL 5.7+
- pip包管理工具
- npm包管理工具
Windows系統環境
- Python 3.6+
- Node.js 10+
- MySQL 5.7+
- pip包管理工具
- npm包管理工具
后端部署
-
數據庫設置
CREATE DATABASE food_analysis; USE food_analysis;-- 根據food.sql導入數據 SOURCE /path/to/food.sql;
-
后端環境設置
# 進入后端目錄 cd back_end# 安裝依賴 pip install -r requirements.txt# 修改配置 # 編輯config.py文件,配置數據庫連接信息# 啟動服務器 python run.py
前端部署
-
前端環境設置
# 進入前端目錄 cd front_end# 安裝依賴 npm install# 開發模式啟動 npm run serve# 生產環境構建 npm run build
-
配置后端API地址
- 在
front_end/src/config.ts
中設置API基礎URL
- 在
完整啟動流程
- 啟動MySQL數據庫服務
- 運行后端Flask應用
python back_end/run.py
- 運行前端Vue應用
cd front_end && npm run serve
- 訪問
http://localhost:8080
打開應用
開發指南
添加新的食物數據
- 準備CSV格式的食物數據
- 使用
data_cleaning.py
進行數據清洗 - 導入MySQL數據庫
添加新的API接口
- 在
back_end/api/food.py
中定義新的路由和處理函數 - 在
back_end/app.py
中登記新的路由端點
添加新的前端頁面
- 在
front_end/src/views
目錄下創建新的Vue組件 - 在
front_end/src/router.js
中添加新的路由配置 - 更新相關導航鏈接
常見問題與解決方案
數據編碼問題
- 確保CSV文件使用UTF-8或GBK編碼
- 在讀取CSV文件時指定正確的編碼格式
- 數據庫表使用utf8mb4字符集
數據庫連接問題
- 檢查數據庫服務是否啟動
- 驗證用戶名密碼是否正確
- 確認數據庫名稱是否正確
- 檢查防火墻設置
前端API調用問題
- 確認后端服務是否正常運行
- 檢查API地址配置是否正確
- 查看瀏覽器控制臺的網絡請求錯誤信息
聯系方式
咸魚:萬能程序員
視頻:https://www.bilibili.com/video/BV1JPVxzXEnd/