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

【数据可视化案列】白葡萄酒质量数据的EDA可视化分析

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

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

在这里插入图片描述

【数据可视化案列】白葡萄酒质量数据的EDA可视化分析

  • 一、引言
  • 二、数据准备
  • 三、数据探索
    • 3.1 数据概览
    • 3.2 数据分布
    • 3.3 数据相关性
  • 四、数据可视化分析
    • 4.1 酒精含量与质量的关系
    • 4.2 硫酸盐含量与质量的关系
    • 4.3 挥发性酸含量与质量的关系
    • 4.4 氯化物含量与质量的关系
    • 4.5 酸碱度与质量的关系
    • 4.6 密度与质量的关系
    • 4.7 箱线图分析
    • 4.8 聚类分析
  • 五、结论

一、引言

  葡萄酒作为一种广受欢迎的饮品,其质量评价一直是消费者和酿酒师们关注的焦点。通过数据分析,我们可以更好地了解葡萄酒的化学成分与其质量之间的关系。本文将使用Python进行白葡萄酒质量数据的探索性数据分析(EDA)和可视化分析,从而揭示不同化学成分对葡萄酒质量的影响。

二、数据准备

  我们将使用pandas库读取CSV文件,并进行初步的数据处理。数据集包含以下字段:
  本次案列的数据来源于:https://www.kaggle.com/datasets/uciml/red-wine-quality-cortez-et-al-2009

   其中包括以下字段:

  • 非挥发性酸(fixed acidity)
  • 挥发性酸(volatile acidity)
  • 柠檬酸(citric acid)
  • 残糖(residual sugar)
  • 氯化物(chlorides)
  • 游离二氧化硫(free sulfur dioxide)
  • 总二氧化硫(total sulfur dioxide)
  • 密度(density)
  • 酸碱度(pH)
  • 硫酸盐(sulphates)
  • 酒精(alcohol)
  • 葡萄酒质量(quality,0-10)

  首先,我们需要加载数据并进行简单的预处理。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 读取数据
df = pd.read_csv('winequality-white.csv', sep=';')print(df.info())
print(df.shape)

在这里插入图片描述
  白葡萄酒数据集一共有4898个样本,12个特征。其中11个为白葡萄酒的理化性质,quality列为白葡萄酒的品质(10分制)。

三、数据探索

3.1 数据概览

  我们先来看一下数据的基本信息,包括每列的缺失值情况。

# 检查缺失值
print(df.isnull().sum())

在这里插入图片描述
  通过上面数据中可以发现数据集中无缺失值;

3.2 数据分布

  接下来,我们绘制每个特征的分布图,以了解数据的分布情况。

# 设置绘图风格
sns.set(style="whitegrid")
color = sns.color_palette()
column= df.columns.tolist()
fig = plt.figure(figsize = (10,8))
for i in range(12):plt.subplot(4,3,i+1)df[column[i]].hist(bins = 100,color = color[3])plt.xlabel(column[i],fontsize = 12)plt.ylabel('Frequency',fontsize = 12)
plt.tight_layout()

在这里插入图片描述

3.3 数据相关性

  使用热力图来展示各特征之间的相关性,这有助于我们识别哪些特征对葡萄酒质量有显著影响。

# 计算相关性矩阵
correlation_matrix = df.corr()# 绘制热力图
plt.figure(figsize=(12, 10))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Matrix')
plt.show()

在这里插入图片描述

  从热力图可以看出,chlorides(酒精)和sulphates(硫酸盐)与quality(质量)的相关性较高,而volatile acidity(挥发性酸)和chlorides(氯化物)与quality的相关性较高且为负。

四、数据可视化分析

4.1 酒精含量与质量的关系

# 绘制酒精含量与质量的散点图mean_quality_by_category = df.groupby('quality')['alcohol'].mean()
result_df = mean_quality_by_category.reset_index()# 重命名列(可选,但通常是个好习惯)
result_df.columns = ['quality', 'mean_alcohol']plt.figure(figsize=(10, 6))
sns.barplot(x='quality', y='mean_alcohol', data=result_df, alpha=0.6)
plt.title('Sulphates Content vs Quality')
plt.xlabel('Quality (1-10)')
plt.ylabel('Mean Alcohol Content (%)')
plt.show()

在这里插入图片描述
  从图中可以看出,酒精含量较高的葡萄酒往往质量也较高。

4.2 硫酸盐含量与质量的关系

# 绘制硫酸盐含量与质量的散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(x='sulphates', y='quality', data=df, alpha=0.6)
plt.title('Sulphates Content vs Quality')
plt.xlabel('Sulphates Content')
plt.ylabel('Quality (1-10)')
plt.show()

在这里插入图片描述
  平均硫酸盐含量与质量之间也quality<7时呈现出正相关关系,即硫酸盐含量越高,葡萄酒的质量也越高。而当quality>7时呈现出负相关关系,即硫酸盐含量越低,葡萄酒的质量也越高。负相关的变化速率高于正相关。

4.3 挥发性酸含量与质量的关系

# 绘制挥发性酸含量与质量的散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(x='volatile acidity', y='quality', data=df, alpha=0.6)
plt.title('Volatile Acidity vs Quality')
plt.xlabel('Volatile Acidity')
plt.ylabel('Quality (1-10)')
plt.show()

在这里插入图片描述

  挥发性酸含量与质量之间呈现出负相关关系,即挥发性酸含量越高,葡萄酒的质量越低。

4.4 氯化物含量与质量的关系

# 绘制氯化物含量与质量的散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(x='chlorides', y='quality', data=df, alpha=0.6)
plt.title('Chlorides Content vs Quality')
plt.xlabel('Chlorides Content')
plt.ylabel('Quality (1-10)')
plt.show()

在这里插入图片描述

  请读者自行补充描述

4.5 酸碱度与质量的关系

# 绘制酸碱度与质量的散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(x='pH', y='quality', data=df, alpha=0.6)
plt.title('pH vs Quality')
plt.xlabel('pH')
plt.ylabel('Quality (1-10)')
plt.show()

在这里插入图片描述

  请读者自行补充描述

4.6 密度与质量的关系

# 绘制密度与质量的散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(x='density', y='quality', data=df, alpha=0.6)
plt.title('Density vs Quality')
plt.xlabel('Density')
plt.ylabel('Quality (1-10)')
plt.show()

在这里插入图片描述

  密度基本都其中再0.99-1.00之间,酒的品质和密度的相关性不大;

4.7 箱线图分析

  为了更直观地比较不同质量分数的葡萄酒在各特征上的分布情况,我们可以绘制箱线图。

# 绘制箱线图
fig = plt.figure(figsize = (12,8))
plt.subplot(2,3,1)
sns.boxplot(x='quality', y='alcohol', data=df)
plt.suptitle('Boxplot Analysis')
plt.subplot(2,3,2)
sns.boxplot(x='quality', y='sulphates', data=df)
plt.subplot(2,3,3)
sns.boxplot(x='quality', y='volatile acidity', data=df)
plt.subplot(2,3,4)
sns.boxplot(x='quality', y='chlorides', data=df)
plt.subplot(2,3,5)
sns.boxplot(x='quality', y='pH', data=df)
plt.subplot(2,3,6)
sns.boxplot(x='quality', y='density', data=df)
plt.show()

在这里插入图片描述

  从箱线图中可以看出,随着质量的提升,酒精含量和硫酸盐含量的中位数逐渐升高,而挥发性酸含量、氯化物含量和密度的中位数逐渐降低,pH值的中位数则相对稳定。

4.8 聚类分析

  为了进一步探索数据中的潜在模式,我们可以使用K-means聚类算法对数据进行聚类分析。

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler# 选择特征列进行标准化处理
features = ['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol']
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df[features])# 使用K-means算法进行聚类(假设分为3类)
kmeans = KMeans(n_clusters=3, random_state=42)
df['cluster'] = kmeans.fit_predict(scaled_features)# 绘制聚类结果与质量的关系
plt.figure(figsize=(10, 6))
sns.scatterplot(x='alcohol', y='sulphates', hue='cluster', data=df, palette='viridis', alpha=0.6)
plt.title('Clusters based on K-means Algorithm')
plt.xlabel('Alcohol Content (%)')
plt.ylabel('Sulphates Content')
plt.legend(title='Cluster')
plt.show()

在这里插入图片描述

  通过聚类分析,我们可以将葡萄酒分为不同的类别,并观察各类别在特征空间中的分布情况。虽然这里的聚类结果并未直接用于质量预测,但它为我们提供了对数据更深层次的理解。

五、结论

  通过对白葡萄酒质量数据的EDA和可视化分析,我们得出了以下结论:酒精含量和硫酸盐含量与葡萄酒质量呈正相关关系,而挥发性酸含量、氯化物含量和密度则与质量呈负相关关系。此外,酸碱度对质量的影响相对复杂,但在特定范围内(如pH值约为3)葡萄酒质量较高。箱线图分析进一步证实了这些特征与质量之间的关系。聚类分析虽然未直接用于质量预测,但揭示了数据中的潜在模式,为深入理解葡萄酒质量提供了有价值的见解。这些发现对酿酒师和消费者在选择和评价葡萄酒时具有重要的指导意义。

相关文章:

【数据可视化案列】白葡萄酒质量数据的EDA可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

Postman接口测试:全局变量/接口关联/加密/解密

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 全局变量和环境变量 全局变量&#xff1a;在postman全局生效的变量&#xff0c;全局唯一 环境变量&#xff1a;在特定环境下生效的变量&#xff0c;本环境内唯一 …...

vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0

一、vueelementui实现下拉表格多选搜索1.0 二、vueelementui实现下拉表格多选搜索分页回显全选2.0 在1.0的基础上&#xff0c;终于可以实现在下拉框表格分页的前提下不同页码的回显辣&#xff0c;分页是前端来分页的&#xff08;代码略乱且没有封装还很长&#xff0c;随便看看…...

电商系统-产品经理

电视产品经理的工作体系&#xff1a; 产品经理的分类与职责 C端产品经理&#xff1a;面向个人用户&#xff0c;关注用户体验和产品易用性B端产品经理&#xff1a;面向企业客户&#xff0c;注重功能完整性和商业价值专业方向细分&#xff1a; 用户产品经理&#xff1a;专注用户…...

《庐山派从入门到...》PWM板载蜂鸣器

《庐山派从入门到...》PWM板载蜂鸣器 配置PWM模块控制板载无源蜂鸣器播放【一闪一闪亮晶晶】播放do re mi 《庐山派从入门到...》PWM控制无源蜂鸣器 PWM&#xff08;Pulse Width Modulation&#xff0c;脉宽调制&#xff09;是一种在嵌入式系统中常用的技术&#xff0c;它可以用…...

【河南新标】豫财预〔2024〕105号-《关于省级政务信息化建设项目支出预算标准的规定》-费用标准解读系列29

2024年12月3日&#xff0c;河南省财政厅发布了《关于省级政务信息化建设项目支出预算标准的规定》豫财预〔2024〕105号。《关于省级政务信息化建设项目支出预算标准的规定 &#xff08;试行&#xff09;》&#xff08;豫财预 〔2020〕81号&#xff09;同时废止。新的豫财预〔20…...

【数据结构】数据结构整体大纲

数据结构用来干什么的&#xff1f;很简单&#xff0c;存数据用的。 &#xff08;这篇文章仅介绍数据结构的大纲&#xff0c;详细讲解放在后面的每一个章节中&#xff0c;逐个击破&#xff09; 那为什么不直接使用数组、集合来存储呢 ——> 如果有成千上亿条数据呢&#xff…...

【C++基础】09、结构体

一、结构体(struct) C/C 数组允许定义可存储相同类型数据项的变量&#xff0c;但是结构体是 C 中另一种用户自定义的可用的数据类型&#xff0c;它允许存储不同类型的数据项。 结构体用于表示一条记录&#xff0c;假设现在想要跟踪图书馆中书本的动态&#xff0c;可能需要跟踪每…...

大恒相机开发(2)—Python软触发调用采集图像

大恒相机开发&#xff08;2&#xff09;—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序&#xff0c;用于从大恒相机采集图像&#xff0c;通过软件触发来采集图像。 完整代码 咱们直接上python的完整代码&#xff1a; # version:…...

QT的前景与互联网岗位发展

qt是用来干什么的 --》桌面应用开发&#xff08;做电脑的应用程序&#xff0c;面对客户端&#xff09;。 主要用于开发跨平台的应用程序和用户界面&#xff08;UI&#xff09;。它是一个全面的C库集合&#xff0c;提供了构建软件应用所需的各种工具和功能。 客户端开发的重…...

青藤入选工信部“2024年网络安全技术应用典型案例拟支持项目名单”

近日&#xff0c;工业和信息化部公示了“2024年网络安全技术应用典型案例拟支持项目名单”&#xff0c;青藤云安全联合某股份制银行共同申报的主机威胁狩猎平台项目凭借其技术先进性及行业示范性成功入选。 网络安全技术应用试点示范工作是由工业和信息化部、国家互联网信息办公…...

NVIDIA GPU 内部架构介绍

NVIDIA GPU 架构 NVIDIA GPU 的 SM&#xff08;Streaming Multiprocessor&#xff09; 和 GPC&#xff08;Graphics Processing Cluster&#xff09; 是 GPU 架构中的关键组成部分。它们决定了 GPU 的计算能力和性能&#xff0c;以下是对这两个参数的详细介绍&#xff1a; 1. …...

重温设计模式----装饰模式

文章目录 装饰模式定义UML 图其主要优点包括&#xff1a;装饰模式的主要角色有&#xff1a;C 代码示例总结 装饰模式定义 动态的给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式必生成子类更加灵活 装饰模式&#xff08;Decorator Pattern&…...

第十六章 C++ 字符串

C 字符串 C 提供了以下两种类型的字符串表示形式&#xff1a; C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言&#xff0c;并在 C 中继续得到支持。字符串实际上是使用 null 字符 终止的一维字符数组。因此&#xff0c;一个以 null 结尾的…...

MySQL中Seconds_Behind_Master是怎么计算的

目录 1.Seconds_Behind_Master计算方式2.Seconds_Behind_Master 计算方式会存在什么问题3.更好的方式3.1 实现方法3.2 优点在MySQL中,Seconds_Behind_Master是一个用于表示从库(Slave)落后于主库(Master)的时间(以秒为单位)的指标。 1.Seconds_Behind_Master计算方式 其…...

React Native 集成原生Android功能

React Native 集成原生功能完整指南 前言 在 React Native 开发中&#xff0c;我们经常需要使用设备的原生功能&#xff0c;比如蓝牙、打印机等。本文将以集成打印机功能为例&#xff0c;详细介绍如何在 React Native 项目中集成 Android 原生功能。 集成步骤概述 创建原生…...

Mac mini m4安装PD和Crack和关闭SIP

文章目录 说明PD下载地址Crack下载地址PD版本补丁版本说明SIP简介SIP关闭方法启用 SIP&#xff1a;补充说明 说明 参考文章地址 PD下载地址 PD20.0.0 PD20.0.1 PD20.1.0 PD20.1.1 PD20.1.2 PD20.1.3 Crack下载地址 Parallels Desktop Activation Tool PD版本补丁版本…...

详解C语言中的关键词:extern以及它需要注意的事项

extern 是C语言中一个非常重要的关键字&#xff0c;用于声明变量或函数的 外部链接性&#xff0c;即在当前文件中使用另一个文件中定义的变量或函数。以下是 extern 的作用和使用场景&#xff1a; 1. extern 的作用 跨文件访问&#xff1a; extern 告诉编译器&#xff0c;某个…...

框架程序设计-简答以及论述

目录 maven的pom作用&#xff1a; Pointcut("execution(*com.example.dome.*.*(……))") 缓存的作用&#xff0c;redis配置过程 Redis配置过程&#xff1a; SpringBoot缓存配置过程&#xff1a; AOP的五种增强注解&#xff1a; 论述题&#xff1a;包结构作用、…...

ce第六次作业

1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 [rootServer ~]# yum install -y mailx [rootServer ~]# yum -y install bind-utils [rootServer ~]# vim /etc/mail.rc set from15339…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...