当前位置: 首页 > news >正文

2024电工杯数学建模B题Python代码+结果表数据教学

2024电工杯B题保姆级分析完整思路+代码+数据教学

B题题目:大学生平衡膳食食谱的优化设计及评价 

以下仅展示部分,完整版看文末的文章

import pandas as pd
df1 = pd.read_excel('附件1:1名男大学生的一日食谱.xlsx')
df1# 获取所有工作表名称
excel_file = pd.ExcelFile('附件1:1名男大学生的一日食谱.xlsx')
sheet_names = excel_file.sheet_names
sheet_namesdf3 = pd.read_excel('附件3:某高校学生食堂一日三餐主要食物信息统计表.xlsx')
df3# 获取所有工作表名称
excel_file = pd.ExcelFile('附件3:某高校学生食堂一日三餐主要食物信息统计表.xlsx')
sheet_names = excel_file.sheet_names
sheet_names# 食谱提取foods = df1['1名男大学生的一日食谱'].dropna().values
meals = {}
name = ['早餐','午餐','晚餐']   
meal = []for item in foods:if item in name:key = itemmeal = []continueif item != '食物名称':meal.append(item)else:meals[key] = mealmeals

# 女大学生同理
df2 = pd.read_excel('附件2:1名女大学生的一日食谱.xlsx')
df2foods = df2['1名女大学生的1日食谱'].dropna().values
meals_nv = {}
name = ['早餐','午餐','晚餐']
meal = []for item in foods:if item in name:key = itemmeal = []continueif item != '食物名称':  meal.append(item)else:meals_nv[key] = mealmeals_nvfood_male = pd.read_excel('./食谱.xlsx',sheet_name='男大')
food_female = pd.read_excel('./食谱.xlsx',sheet_name='女大')
food_female.head()# 填充Nan值
# food_male=food_male.fillna(method='ffill', axis=0)
# food_female=food_female.fillna(method='ffill', axis=0)food_male.ffill(axis=0)
food_female.ffill(axis=0)food_female.head()# 读取食物营养素
foods_nutrients = pd.read_csv('./foods_nutrients.csv')
foods_nutrients.head()

# 计算营养素

# 计算每餐的总营养素 
whole_day_nutrients_male = {'热量 (kcal)': 0, '蛋白质 (g)': 0, '脂肪 (g)': 0, '碳水化合物 (g)': 0}
male_ls = []
for key in meals:total_nutrients = {'热量 (kcal)': 0, '蛋白质 (g)': 0, '脂肪 (g)': 0, '碳水化合物 (g)': 0}for item in meals[key]:for _, food in food_male.iterrows():if food['食物名称'] == item:nutrient = foods_nutrients[foods_nutrients['食物'] == food['主要成分']].iloc[0]portion_size = food['可食部(克/份)'] * food['食用份数'] / 100  # 换算成100g标准total_nutrients['热量 (kcal)'] += nutrient['热量 (kcal)'] * portion_sizetotal_nutrients['蛋白质 (g)'] += nutrient['蛋白质 (g)'] * portion_sizetotal_nutrients['脂肪 (g)'] += nutrient['脂肪 (g)'] * portion_sizetotal_nutrients['碳水化合物 (g)'] += nutrient['碳水化合物 (g)'] * portion_sizeprint(f"{key}的总营养素:", total_nutrients)male_ls.append(total_nutrients)whole_day_nutrients_male['热量 (kcal)'] += total_nutrients['热量 (kcal)']whole_day_nutrients_male['蛋白质 (g)'] += total_nutrients['蛋白质 (g)']whole_day_nutrients_male['脂肪 (g)'] += total_nutrients['脂肪 (g)']whole_day_nutrients_male['碳水化合物 (g)'] += total_nutrients['碳水化合物 (g)']
print(f"一天的总营养素:", whole_day_nutrients_male)

# 同理 计算女大
whole_day_nutrients_female = {'热量 (kcal)': 0, '蛋白质 (g)': 0, '脂肪 (g)': 0, '碳水化合物 (g)': 0}
female_ls = []
for key in meals_nv:total_nutrients = {'热量 (kcal)': 0, '蛋白质 (g)': 0, '脂肪 (g)': 0, '碳水化合物 (g)': 0}for item in meals_nv[key]:for _, food in food_female.iterrows():if food['食物名称'] == item:nutrient = foods_nutrients[foods_nutrients['食物'] == food['主要成分']].iloc[0]portion_size = food['可食部(克/份)'] * food['食用份数'] / 100  # 换算成100g标准total_nutrients['热量 (kcal)'] += nutrient['热量 (kcal)'] * portion_sizetotal_nutrients['蛋白质 (g)'] += nutrient['蛋白质 (g)'] * portion_sizetotal_nutrients['脂肪 (g)'] += nutrient['脂肪 (g)'] * portion_sizetotal_nutrients['碳水化合物 (g)'] += nutrient['碳水化合物 (g)'] * portion_sizefemale_ls.append(total_nutrients)print(f"{key}的总营养素:", total_nutrients)whole_day_nutrients_female['热量 (kcal)'] += total_nutrients['热量 (kcal)']whole_day_nutrients_female['蛋白质 (g)'] += total_nutrients['蛋白质 (g)']whole_day_nutrients_female['脂肪 (g)'] += total_nutrients['脂肪 (g)']whole_day_nutrients_female['碳水化合物 (g)'] += total_nutrients['碳水化合物 (g)']
print(f"一天的总营养素:", whole_day_nutrients_female)

绘制可视化图:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴负数显示问题# 推荐摄入量
recommended_nutrients_male = {'热量 (kcal)': 2400, '蛋白质 (g)': 75, '脂肪 (g)': 66.5, '碳水化合物 (g)': 345}
recommended_nutrients_female = {'热量 (kcal)': 1900, '蛋白质 (g)': 60, '脂肪 (g)': 49.5, '碳水化合物 (g)': 275}# 创建子图
fig, axes = plt.subplots(2, 2, figsize=(14, 10))# 男大学生热量
axes[0, 0].bar(['当前', '调整后', '推荐'], [whole_day_nutrients_male['热量 (kcal)'], adjusted_nutrients_male['热量 (kcal)'], recommended_nutrients_male['热量 (kcal)']], color=['red', 'blue', 'green'])
axes[0, 0].set_title('男大学生热量摄入')# 女大学生热量
axes[0, 1].bar(['当前', '调整后', '推荐'], [whole_day_nutrients_female['热量 (kcal)'], adjusted_nutrients_female['热量 (kcal)'], recommended_nutrients_female['热量 (kcal)']], color=['red', 'blue', 'green'])
axes[0, 1].set_title('女大学生热量摄入')# 男大学生主要营养素
axes[1, 0].bar(['蛋白质', '脂肪', '碳水化合物'], [whole_day_nutrients_male['蛋白质 (g)'], whole_day_nutrients_male['脂肪 (g)'], whole_day_nutrients_male['碳水化合物 (g)']], color='red', label='当前')
axes[1, 0].bar(['蛋白质', '脂肪', '碳水化合物'], [adjusted_nutrients_male['蛋白质 (g)'], adjusted_nutrients_male['脂肪 (g)'], adjusted_nutrients_male['碳水化合物 (g)']], color='blue', label='调整后', alpha=0.7)
axes[1, 0].bar(['蛋白质', '脂肪', '碳水化合物'], [recommended_nutrients_male['蛋白质 (g)'], recommended_nutrients_male['脂肪 (g)'], recommended_nutrients_male['碳水化合物 (g)']], color='green', label='推荐', alpha=0.5)
axes[1, 0].set_title('男大学生主要营养素摄入')
axes[1, 0].legend()# 女大学生主要营养素
axes[1, 1].bar(['蛋白质', '脂肪', '碳水化合物'], [whole_day_nutrients_female['蛋白质 (g)'], whole_day_nutrients_female['脂肪 (g)'], whole_day_nutrients_female['碳水化合物 (g)']], color='red', label='当前')
axes[1, 1].bar(['蛋白质', '脂肪', '碳水化合物'], [adjusted_nutrients_female['蛋白质 (g)'], adjusted_nutrients_female['脂肪 (g)'], adjusted_nutrients_female['碳水化合物 (g)']], color='blue', label='调整后', alpha=0.7)
axes[1, 1].bar(['蛋白质', '脂肪', '碳水化合物'], [recommended_nutrients_female['蛋白质 (g)'], recommended_nutrients_female['脂肪 (g)'], recommended_nutrients_female['碳水化合物 (g)']], color='green', label='推荐', alpha=0.5)
axes[1, 1].set_title('女大学生主要营养素摄入')
axes[1, 1].legend()# 设置总体布局
plt.tight_layout()
plt.show()

以上仅为部分第一问代码,其中更详细的思路、各题目思路、代码、讲解视频、成品论文及其他相关内容,可以看下方名片获取哦!

相关文章:

2024电工杯数学建模B题Python代码+结果表数据教学

2024电工杯B题保姆级分析完整思路代码数据教学 B题题目:大学生平衡膳食食谱的优化设计及评价 以下仅展示部分,完整版看文末的文章 import pandas as pd df1 pd.read_excel(附件1:1名男大学生的一日食谱.xlsx) df1# 获取所有工作表名称 e…...

LabVIEW和ZigBee无线温湿度监测

LabVIEW和ZigBee无线温湿度监测 随着物联网技术的迅速发展,温湿度数据的远程无线监测在农业大棚、仓库和其他需环境控制的场所变得日益重要。开发了一种基于LabVIEW和ZigBee技术的多区域无线温湿度监测系统。系统通过DHT11传感器收集温湿度数据,利用Zig…...

FastCopy

目录 背景: 简介: 原理: 下载地址: 工具的使用: 背景: 简介: FastCopy是一款速度非常快的拷贝软件,软件版本为5.7.1 Fastcopy是日本的最快的文件拷贝工具,磁盘间相互拷贝文件是司空见惯的事情,通常情况…...

stm32常用编写C语言基础知识,条件编译,结构体等

位操作 宏定义#define 带参数的宏定义 条件编译 下面是头文件中常见的编译语句,其中_LED_H可以认为是一个编译段的名字。 下面代码表示满足某个条件,进行包含头文件的编译,SYSTEM_SUPPORT_OS可能是条件,当非0时,可以…...

秋招突击——算法——模板题——区间DP——合并石子

文章目录 题目内容思路分析实现代码分析与总结 题目内容 思路分析 基本思路&#xff0c;先是遍历区间长度&#xff0c;然后再是遍历左端点&#xff0c;最后是遍历中间的划分点&#xff0c;将阶乘问题变成n三次方的问题 实现代码 // 组合数问题 #include <iostream> #in…...

数据库——实验12 数据库备份和还原

1. 备份设备的概念和方法 备份设备是指 SQL Server 中存储数据库和事务日志备份副本的载体&#xff0c;备份设备可以被定义成本地的磁盘文件、远程服务器上的磁盘文件、磁带。 在创建备份时&#xff0c;必须选择要将数据写入的备份设备。SQL Server 2005 可以将数据库、事务日…...

Node.js —— 前后端的身份认证 之用 express 实现 JWT 身份认证

JWT的认识 什么是 JWT JWT&#xff08;英文全称&#xff1a;JSON Web Token&#xff09;是目前最流行的跨域认证解决方案。 JWT 的工作原理 总结&#xff1a;用户的信息通过 Token 字符串的形式&#xff0c;保存在客户端浏览器中。服务器通过还原 Token 字符串的形式来认证用…...

文旅3d仿真数字人形象为游客提供全方位的便捷服务

在AI人工智能与VR虚拟现实技术的双重驱动下&#xff0c;文旅3D数字代言人正以其独特的魅力&#xff0c;频频亮相于各类文旅场景&#xff0c;为游客带来前所未有的个性化服务体验。他们不仅有趣有品&#xff0c;更能言善道&#xff0c;成为文旅业数字化发展的新亮点。 这些文旅3…...

leetcode算法常用函数

文章目录 字符相关字符串相关数组和集合相关数值相关容器相关 核心关注算法逻辑&#xff0c;其他的常见操作用标准库里函数即可&#xff0c;不用浪费时间。 Java语言作为参考&#xff0c;记录刷题时常用的函数 字符相关 Character.isDigit(); //判断是否为数字Character.isLet…...

element-plus表格的表单校验如何实现,重点在model和prop

文章目录 vue&#xff1a;3.x element-plus&#xff1a;2.7.3 重点&#xff1a; 1) tableData放到form对象里 2) form-item的prop要写成tableData.序号.属性 <!--table-表单校验--> <template><el-form ref"forms" :model"form"><e…...

WPF密码输入框明文掩码切换

1&#xff0c;效果 2&#xff0c;代码&#xff1a; WPF的PasswordBox不能像Winform中的PasswordBox那样&#xff0c;通过PasswordBox.PasswordChar(char)0显示明文。所以这里使用无外观控件构筑掩码明文切换。 无外观控件遵守Themes/Generic.xaml文件配置. <ResourceDicti…...

SaaS架构详细介绍及一个具体实现的示例

SaaS架构详细介绍 软件即服务&#xff08;SaaS&#xff0c;Software as a Service&#xff09;是一种通过互联网交付软件应用程序的模式。 SaaS提供商托管应用程序&#xff0c;并通过网络将其提供给最终用户&#xff0c;用户无需安装和维护软件&#xff0c;只需通过浏览器或其他…...

四川音盛佳云电子商务有限公司正规吗?靠谱吗?

在数字化浪潮席卷全球的今天&#xff0c;电子商务已成为推动经济发展的重要引擎。四川音盛佳云电子商务有限公司&#xff0c;作为抖音电商服务的佼佼者&#xff0c;正以其独特的视角和创新的策略&#xff0c;引领着抖音电商的新潮流&#xff0c;开启着电商服务的新篇章。 四川…...

C++ 写的_string类,兼容std::string, MFC CString和 C# 的string

代码例子&#xff1a; using namespace lf; int main() { CString s1 _t("http://www.csdn.net"); _string s2 s1; CString s3 s2; _pcn(s1); _pcn(s2); _pcn(s3); return 0; } 输出&#xff1a; _Str.h /***************************************…...

【揭开深度学习之核:反向传播算法简析】

文章目录 前言反向传播算法的基础工作原理伪代码示例关键点结论 前言 在深度学习的世界里&#xff0c;反向传播算法是一张藏在神秘面纱后的地图&#xff0c;它指引着神经网络通过复杂的数据迷宫&#xff0c;找到最优解的路径。本文将简要介绍反向传播算法的原理&#xff0c;探…...

Web3 知识体系架构图

Web3 知识体系架构图 │ ├── 1. 基础概念 │ │ │ ├── 1.1 区块链 │ │ ├── 工作原理 │ │ ├── 公链 vs 私链 │ │ └── 常见区块链平台&#xff08;如比特币、以太坊&#xff09; │ │ │ ├── 1.2 去中心化 │ │ ├── P2P 网络 │ │ ├── 去中心化…...

SQL、Mongo、Redis一般适用于那些场景

在一个项目中同时使用 MySQL、Redis 和 MongoDB 是相对常见的做法&#xff0c;因为它们各自具有不同的特点和适用场景&#xff0c;可以组合使用以满足不同的需求。下面是它们的一些常见用途和特点&#xff1a; MySQL&#xff1a; 关系型数据库&#xff1a; MySQL 是一个传统的关…...

学习图形推理

学习图形推理 1.位置规律1.1平移1.2翻转、旋转2.样式规律2.1加减异同2.2黑白运算3.属性规律3.1对称性3.2曲直性3.3开闭性4.数量规律4.1面4.2线数量4.3笔画数4.4点数量4.5素数量5.空间重构5.1相对面5.2相邻面-公共边5.3相邻面-公共点5.4相邻面-画边法题型 一组图:从左往右找规律…...

plsql 学习

过程化编程语言 赋值&#xff1a;&#xff1a; ||&#xff1a;连接符号 dbms_output.put_line() :输出的语句 var_name ACCOUNTLIBRARY.USERNAME%type; 变量名&#xff1b;某个表的数据类型&#xff1b;赋值给变量名 用下面的方法更好用 异常exception 循…...

如何远程连接默认端口?

远程连接是指通过网络实现两个或多个计算机之间的连接和通信。在进行远程连接时&#xff0c;使用的端口号是一个重要的参数。端口号是计算机上正在运行的特定应用程序的标识符。每个应用程序都会监听一个或多个特定的端口号&#xff0c;以便接收来自其他计算机的连接请求&#…...

The Quantization Model of Neural Scaling

文章目录 摘要1引言2 理论3 概念验证&#xff1a;一个玩具数据集3.1 “多任务稀疏奇偶校验”数据集3.2 幂律规模和新兴能力 4 拆解大型语言模型的规模定律4.1 单token损失的分布4.2 单基因&#xff08;monogenic&#xff09;与多基因&#xff08;polygenic&#xff09;的规模曲…...

在Ubuntu22.04 系统中安装Docker详细教程

1.更新系统软件包 #确保您的系统软件包是最新的。这有助于避免安装过程中可能遇到的问题 sudo apt update sudo apt upgrade -y2.安装必要的依赖 sudo apt install apt-transport-https ca-certificates curl software-properties-common -y3.替换软件源 echo "deb htt…...

虚拟机时间同步

一、常见同步方式 常见的虚拟机同步方式有给虚拟机配置ntp、或者用平台提供的agent对时与虚拟机所在的宿主机。第一种依赖网络、第二种依赖平台的agent这个三方工具。 二、利用ptp_kvm.ko来直接和宿主机同步时间 关键组件 ptp_kvm驱动、chrony。 PTP_KVM同步原理 |--------…...

Web3 借贷与清算机制全解析:链上金融的运行逻辑

Web3 借贷与清算机制全解析&#xff1a;链上金融的运行逻辑 超额抵押借款 例如&#xff0c;借款人用ETH为抵押借入DAI&#xff1b;借款人的ETH的价值一定是要超过DAI的价值&#xff1b;借款人可以任意自由的使用自己借出的DAI 稳定币 第一步&#xff1a;借款人需要去提供一定…...

LLMs 系列科普文(6)

截止到目前&#xff0c;我们从模型预训练阶段的数据准备讲起&#xff0c;谈到了 Tokenizer、模型的结构、模型的训练&#xff0c;基础模型、预训练阶段、后训练阶段等&#xff0c;这里存在大量的术语或名词&#xff0c;也有一些奇奇怪怪或者说是看起来乱七八糟的内容。这期间跳…...

信息最大化(Information Maximization)

信息最大化在目标域无标签的域自适应任务中&#xff0c;它迫使模型在没有真实标签的情况下&#xff0c;对未标记数据产生高置信度且类别均衡的预测。此外&#xff0c;这些预测也可以作为伪标签用于自训练。 例如&#xff0c;在目标域没有标签时&#xff0c;信息最大化损失可以…...

react+taro 开发第五个小程序,解决拼音的学习

1.找一个文件夹 cmd 2.taro init 3.vscode 找开该文件夹cd help-letters 如&#xff1a;我的是(base) PS D:\react\help-letters> pnpm install 4.先编译一下吧。看下开发者工具什么反应。 pnpm dev:weapp 5.开始规则。我用cursor就是不成功。是不是要在这边差不多了&…...

【Java学习笔记】StringBuilder类(重点)

StringBuilder&#xff08;重点&#xff09; 1. 基本介绍 是一个可变的字符串序列。该类提供一个与 StringBuffer 兼容的 API&#xff0c;但不保证同步&#xff08;StringBuilder 不是线程安全的&#xff09; 该类被设计用作 StringBuffer 的一个简易替换&#xff0c;用在字符…...

【DAY41】简单CNN

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点&#xff1a; 数据增强卷积神经网络定义的写法batch归一化&#xff1a;调整一个批次的分布&#xff0c;常用与图像数据特征图&#xff1a;只有卷积操作输出的才叫特征图调度器&#xff1a;直接修改基础学习率 卷积操作常…...

LeetCode 08.06 面试题 汉诺塔 (Java)

经典递归解决汉诺塔问题&#xff1a;清晰的三步移动策略 问题描述 在汉诺塔问题中&#xff0c;有 3 根柱子和 N 个大小不同的盘子&#xff0c;盘子初始按升序堆叠在第一根柱子上&#xff08;最小的在顶部&#xff09;。目标是将所有盘子移动到第三根柱子上&#xff0c;并满足…...