【数据可视化案列】白葡萄酒质量数据的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可视化分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
Postman接口测试:全局变量/接口关联/加密/解密
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 全局变量和环境变量 全局变量:在postman全局生效的变量,全局唯一 环境变量:在特定环境下生效的变量,本环境内唯一 …...
vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
一、vueelementui实现下拉表格多选搜索1.0 二、vueelementui实现下拉表格多选搜索分页回显全选2.0 在1.0的基础上,终于可以实现在下拉框表格分页的前提下不同页码的回显辣,分页是前端来分页的(代码略乱且没有封装还很长,随便看看…...
电商系统-产品经理
电视产品经理的工作体系: 产品经理的分类与职责 C端产品经理:面向个人用户,关注用户体验和产品易用性B端产品经理:面向企业客户,注重功能完整性和商业价值专业方向细分: 用户产品经理:专注用户…...
《庐山派从入门到...》PWM板载蜂鸣器
《庐山派从入门到...》PWM板载蜂鸣器 配置PWM模块控制板载无源蜂鸣器播放【一闪一闪亮晶晶】播放do re mi 《庐山派从入门到...》PWM控制无源蜂鸣器 PWM(Pulse Width Modulation,脉宽调制)是一种在嵌入式系统中常用的技术,它可以用…...
【河南新标】豫财预〔2024〕105号-《关于省级政务信息化建设项目支出预算标准的规定》-费用标准解读系列29
2024年12月3日,河南省财政厅发布了《关于省级政务信息化建设项目支出预算标准的规定》豫财预〔2024〕105号。《关于省级政务信息化建设项目支出预算标准的规定 (试行)》(豫财预 〔2020〕81号)同时废止。新的豫财预〔20…...
【数据结构】数据结构整体大纲
数据结构用来干什么的?很简单,存数据用的。 (这篇文章仅介绍数据结构的大纲,详细讲解放在后面的每一个章节中,逐个击破) 那为什么不直接使用数组、集合来存储呢 ——> 如果有成千上亿条数据呢ÿ…...
【C++基础】09、结构体
一、结构体(struct) C/C 数组允许定义可存储相同类型数据项的变量,但是结构体是 C 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项。 结构体用于表示一条记录,假设现在想要跟踪图书馆中书本的动态,可能需要跟踪每…...
大恒相机开发(2)—Python软触发调用采集图像
大恒相机开发(2)—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序,用于从大恒相机采集图像,通过软件触发来采集图像。 完整代码 咱们直接上python的完整代码: # version:…...
QT的前景与互联网岗位发展
qt是用来干什么的 --》桌面应用开发(做电脑的应用程序,面对客户端)。 主要用于开发跨平台的应用程序和用户界面(UI)。它是一个全面的C库集合,提供了构建软件应用所需的各种工具和功能。 客户端开发的重…...
青藤入选工信部“2024年网络安全技术应用典型案例拟支持项目名单”
近日,工业和信息化部公示了“2024年网络安全技术应用典型案例拟支持项目名单”,青藤云安全联合某股份制银行共同申报的主机威胁狩猎平台项目凭借其技术先进性及行业示范性成功入选。 网络安全技术应用试点示范工作是由工业和信息化部、国家互联网信息办公…...
NVIDIA GPU 内部架构介绍
NVIDIA GPU 架构 NVIDIA GPU 的 SM(Streaming Multiprocessor) 和 GPC(Graphics Processing Cluster) 是 GPU 架构中的关键组成部分。它们决定了 GPU 的计算能力和性能,以下是对这两个参数的详细介绍: 1. …...
重温设计模式----装饰模式
文章目录 装饰模式定义UML 图其主要优点包括:装饰模式的主要角色有:C 代码示例总结 装饰模式定义 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式必生成子类更加灵活 装饰模式(Decorator Pattern&…...
第十六章 C++ 字符串
C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 终止的一维字符数组。因此,一个以 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 开发中,我们经常需要使用设备的原生功能,比如蓝牙、打印机等。本文将以集成打印机功能为例,详细介绍如何在 React Native 项目中集成 Android 原生功能。 集成步骤概述 创建原生…...
Mac mini m4安装PD和Crack和关闭SIP
文章目录 说明PD下载地址Crack下载地址PD版本补丁版本说明SIP简介SIP关闭方法启用 SIP:补充说明 说明 参考文章地址 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语言中一个非常重要的关键字,用于声明变量或函数的 外部链接性,即在当前文件中使用另一个文件中定义的变量或函数。以下是 extern 的作用和使用场景: 1. extern 的作用 跨文件访问: extern 告诉编译器,某个…...
框架程序设计-简答以及论述
目录 maven的pom作用: Pointcut("execution(*com.example.dome.*.*(……))") 缓存的作用,redis配置过程 Redis配置过程: SpringBoot缓存配置过程: AOP的五种增强注解: 论述题:包结构作用、…...
ce第六次作业
1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。 [rootServer ~]# yum install -y mailx [rootServer ~]# yum -y install bind-utils [rootServer ~]# vim /etc/mail.rc set from15339…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
