【数据可视化-29】食物营养成分数据可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

一、引言

  食物营养成分数据的可视化分析,对于理解饮食结构、制定健康饮食计划以及营养科学研究具有重要意义。本文将基于包含3500多种食物营养成分的数据集,从多个角度进行可视化探索,帮助大家更直观地把握食物营养成分的分布特征与关联。

二、数据探索

2.1 数据集介绍

本数据集包含以下变量:

  • food:食物名称(唯一标识符)
  • Carbohydrates:碳水化合物含量
  • Sugars:糖分含量
  • Dietary Fiber:膳食纤维含量
  • Fat:脂肪含量
  • Protein:蛋白质含量
  • Calcium:钙含量
  • Iron:铁含量
  • Sodium:钠含量
  • Vitamin C:维生素C含量
  • Vitamin B11:叶酸含量
  • Caloric Value:卡路里含量(千卡)

2.2 数据清洗与探索

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 加载数据
df = pd.read_csv('food_nutrition.csv')  # 请替换为实际文件路径

# 查看数据基本信息
print(df.info())
print(df.describe())

# 查看各列唯一值数量
print(df.nunique())

  从数据的基本信息中,我们可以发现:

  • 数据集包含多个数值型变量,记录了食物的各类营养成分含量
  • 一共包含3454条数据,而且数据中无缺失值的存在

三、单维度特征可视化

3.1 卡路里分布

plt.figure(figsize=(12, 6))
sns.histplot(df['Caloric Value'], kde=True, color='teal', bins=100)
plt.title('Caloric Value Distribution')
plt.xlabel('Calories (kcal)')
plt.tight_layout()
plt.show()

  观察结果:大部分食物的卡路里含量集中在中低区间,少数高热量食物分布在右侧。

3.2 蛋白质含量分布

plt.figure(figsize=(12, 6))
sns.histplot(df['Protein'], kde=True, color='coral', bins=50)
plt.title('Protein Content Distribution')
plt.xlabel('Protein (g)')
plt.tight_layout()
plt.show()

  观察结果:蛋白质含量呈现右偏分布,大部分食物蛋白质含量在较低水平,少量食物(如肉类、豆类)蛋白质含量较高。

3.3 各营养素的基本统计图

# 选择需要展示的营养素列
nutrients = ['Carbohydrates', 'Sugars', 'Dietary Fiber', 'Fat', 'Protein', 'Calcium', 'Iron', 'Sodium', 'Vitamin C', 'Vitamin B11 (Folate)']

# 创建子图
fig, axes = plt.subplots(5, 2, figsize=(15, 20))
fig.suptitle('Distribution of Nutrients', fontsize=16)

for i, nutrient in enumerate(nutrients):
    row, col = divmod(i, 2)
    sns.histplot(df[nutrient], kde=True, ax=axes[row, col], bins=30)
    axes[row, col].set_title(f'{nutrient} Distribution')
    axes[row, col].set_xlabel(f'{nutrient} (g/mg)')
    
plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.show()

  观察结果:不同营养素的分布特征差异显著,例如糖分和膳食纤维含量多集中在低水平,而钠含量在部分食物中异常高。

四、多维度关系可视化

4.1 卡路里与蛋白质的关系

plt.figure(figsize=(12, 8))
sns.scatterplot(x='Protein', y='Caloric Value', data=df, alpha=0.6, color='purple')
plt.title('Relationship Between Protein and Calories')
plt.xlabel('Protein (g)')
plt.ylabel('Calories (kcal)')
plt.tight_layout()
plt.show()

  观察结果:卡路里与蛋白质存在一定的正相关关系,高蛋白食物往往热量也较高。

4.2 碳水化合物、脂肪与卡路里的关系

plt.figure(figsize=(12, 8))
sns.scatterplot(x='Carbohydrates', y='Caloric Value', hue='Fat', data=df, palette='viridis', alpha=0.6)
plt.title('Relationship Between Carbohydrates, Fat, and Calories')
plt.xlabel('Carbohydrates (g)')
plt.ylabel('Calories (kcal)')
plt.legend(title='Fat (g)')
plt.tight_layout()
plt.show()

  观察结果:碳水化合物和脂肪都是卡路里的主要贡献者,高碳水或高脂肪食物通常热量较高。

4.3 营养素之间的相关性矩阵

# 计算营养素之间的相关性
corr_matrix = df[nutrients].corr()

# 绘制热力图
plt.figure(figsize=(15, 10))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Matrix of Nutrients')
plt.tight_layout()
plt.show()

  观察结果:营养素之间存在多种相关性,例如碳水化合物与糖分高度正相关,蛋白质与脂肪也有一定正相关性。

4.4 高蛋白低脂食物筛选

# 筛选条件:蛋白质含量高于中位数且脂肪含量低于中位数的食物
high_protein_low_fat = df[(df['Protein'] > df['Protein'].median()) & (df['Fat'] < df['Fat'].median())]

plt.figure(figsize=(15, 8))
sns.barplot(x='Protein', y='Food Names', data=high_protein_low_fat.sort_values('Protein', ascending=False).head(20))
plt.title('Top 20 High Protein Low Fat Foods')
plt.xlabel('Protein (g)')
plt.ylabel('Food Names')
plt.tight_layout()
plt.show()

  观察结果:部分食物(如某些鱼类和豆类)兼具高蛋白和低脂肪特性,是健康饮食的良好选择。

五、总结与洞察

  通过以上多维度的可视化分析,我们得出以下关键洞察:

  1. 卡路里分布不均:少数高热量食物贡献了大部分热量,需注意平衡摄入。

  2. 营养素分布差异显著:不同营养素在各类食物中的分布极不均匀,例如蛋白质在肉类和豆类中含量高,而蔬果中相对较低。

  3. 营养素相关性复杂:碳水化合物与糖分高度正相关,蛋白质与脂肪也有一定正相关性,反映食物的综合营养特征。

  4. 健康食物选择:部分食物兼具高蛋白、低脂肪和低糖特性,是理想的健康食品。

  以上分析为理解食物营养成分的分布特征提供了多维度视角,揭示了各营养素之间的潜在关系,为进一步的营养研究和健康饮食规划提供了数据支持。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云天徽上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值