揭秘数据之美:【Seaborn】在现代【数学建模】中的革命性应用

目录

已知数据集 tips

生成数据集并保存为CSV文件 

数据预览:

导入和预览数据

步骤1:绘制散点图(Scatter Plot)

步骤2:添加回归线(Regression Analysis)

步骤3:分类变量分析(Categorical Variables)

步骤4:箱线图(Box Plot)

步骤5:小提琴图(Violin Plot)

步骤6:绘制热力图(Heatmap)

 ​编辑

总结

1. 生成数据集并保存为CSV文件

2. 导入和预览数据

3. 绘制散点图(Scatter Plot)

4. 添加回归线(Regression Analysis)

5. 分类变量分析(Categorical Variables)

6. 绘制箱线图(Box Plot)

7. 绘制小提琴图(Violin Plot)

8. 绘制热力图(Heatmap)


 

ce6fbd68767d465bbe94b775b8b811db.png

731bd47804784fa2897220a90a387b28.gif

 

专栏:数学建模学习笔记

python相关库的安装:pandas,numpy,matplotlib,statsmodels

总篇:【数学建模】—【新手小白到国奖选手】—【学习路线】

第一卷:Numpy

第二卷:Pandas

第三卷:Matplotlib

在数据科学和数学建模的过程中,数据可视化是非常重要的一环。通过可视化,我们能够更直观地理解数据的分布和关系,从而为后续的分析和建模打下坚实的基础。本篇文章将围绕一个具体的实例,详细讲解如何使用Seaborn库进行数据可视化。我们将使用Seaborn内置的数据集tips,该数据集包含了一些餐馆的小费数据。我们的目标是通过数据可视化,探索影响小费金额的因素,并尝试建立一个数学模型。

已知数据集 tips

tips 数据集包含以下几个主要字段:

  • total_bill: 总账单金额
  • tip: 小费金额
  • sex: 性别
  • smoker: 是否吸烟
  • day: 就餐日期
  • time: 就餐时间(午餐或晚餐)
  • size: 就餐人数

生成数据集并保存为CSV文件 

import pandas as pd
import numpy as np# 设置随机种子
np.random.seed(0)# 生成数据
n = 1000
total_bill = np.round(np.random.uniform(5, 50, n), 2)
tip = np.round(total_bill * np.random.uniform(0.1, 0.3, n), 2)
sex = np.random.choice(['Male', 'Female'], n)
smoker = np.random.choice(['Yes', 'No'], n)
day = np.random.choice(['Thur', 'Fri', 'Sat', 'Sun'], n)
time = np.random.choice(['Lunch', 'Dinner'], n)
size = np.random.randint(1, 6, n)# 创建DataFrame
tips = pd.DataFrame({'total_bill': total_bill,'tip': tip,'sex': sex,'smoker': smoker,'day': day,'time': time,'size': size
})# 保存数据集到CSV文件
tips.to_csv('tips.csv', index=False)# 显示数据集的前几行
print(tips.head())

数据预览

total_billtipsexsmokerdaytimesize
29.706.49FemaleNoFriLunch5
37.183.79FemaleYesThurLunch2
32.126.27FemaleNoThurLunch4
29.527.14FemaleNoFriLunch5
24.062.62FemaleYesSunDinner5

导入和预览数据

在生成数据后,我们导入必要的可视化库,并预览数据。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd# 读取本地示例数据集
tips = pd.read_csv('tips.csv')# 显示数据集的前几行
print(tips.head())

详解:

  1. 导入必要的库

    • seaborn: 用于数据可视化的主要库。
    • matplotlib.pyplot: Seaborn是基于Matplotlib构建的,所以我们需要同时导入Matplotlib来进行图表的展示。
  2. 读取数据

    • 使用pandas.read_csv函数从CSV文件中读取数据。
  3. 预览数据

    • 使用print(tips.head())函数来显示数据集的前几行,帮助我们快速了解数据的结构和内容。

步骤1:绘制散点图(Scatter Plot)

我们首先绘制一个散点图,展示总账单(total_bill)与小费(tip)之间的关系。

# 绘制散点图
sns.scatterplot(data=tips, x='total_bill', y='tip')
plt.title('Scatter plot of Total Bill vs Tip')
plt.xlabel('Total Bill')
plt.ylabel('Tip')
plt.show()

 

  1. 绘制散点图

    • 使用seaborn.scatterplot函数,其中data参数指定数据集,xy参数分别指定横轴和纵轴的数据字段。
  2. 设置图表标题和标签

    • 使用plt.title设置图表标题。
    • 使用plt.xlabelplt.ylabel分别设置横轴和纵轴的标签。
  3. 显示图表

    • 使用plt.show()函数来显示图表。

散点图是一种常用的图表类型,用于展示两个变量之间的关系。在这个例子中,使用seaborn.scatterplot函数绘制总账单(total_bill)与小费(tip)之间的散点图。通过散点图,可以直观地看到总账单和小费之间的关系。从图中可以看出,小费随总账单的增加而增加,但这种关系是否是线性的还需要进一步分析。

步骤2:添加回归线(Regression Analysis)

为了更好地了解总账单和小费之间的关系,我们可以使用Seaborn的 lmplot 函数来添加一条回归线。

# 绘制带回归线的散点图
sns.lmplot(data=tips, x='total_bill', y='tip')
plt.title('Total Bill vs Tip with Regression Line')
plt.xlabel('Total Bill')
plt.ylabel('Tip')
plt.show()

 

  1. 绘制带回归线的散点图

    • 使用seaborn.lmplot函数,其中data参数指定数据集,xy参数分别指定横轴和纵轴的数据字段。
    • lmplot函数不仅绘制散点图,还会自动添加一条回归线,用于展示两个变量之间的线性关系。
  2. 设置图表标题和标签

    • 同样使用plt.titleplt.xlabelplt.ylabel设置图表的标题和轴标签。
  3. 显示图表

    • 使用plt.show()函数来显示图表。

回归分析是一种统计方法,用于研究两个变量之间的关系。在这个例子中,使用Seaborn的lmplot函数来绘制带有回归线的散点图。通过添加回归线,可以更清楚地看到总账单和小费之间的线性关系。这条回归线表示小费随总账单增加的趋势,图中还会显示回归线的置信区间。

步骤3:分类变量分析(Categorical Variables)

接下来,我们分析性别、吸烟情况等分类变量对小费的影响。

# 使用hue参数根据性别绘制不同颜色的散点图
sns.scatterplot(data=tips, x='total_bill', y='tip', hue='sex')
plt.title('Total Bill vs Tip by Gender')
plt.xlabel('Total Bill')
plt.ylabel('Tip')
plt.show()

 

  1. 根据分类变量绘制散点图

    • 使用seaborn.scatterplot函数,通过hue参数指定分类变量(例如性别),从而根据不同类别绘制不同颜色的点。
  2. 设置图表标题和标签

    • 使用plt.titleplt.xlabelplt.ylabel设置图表的标题和轴标签。
  3. 显示图表

    • 使用plt.show()函数来显示图表。

分类变量(如性别、吸烟情况等)在数据分析中非常重要,因为它们能够提供关于数据分布的更多信息。在这个例子中,使用seaborn.scatterplot函数,根据性别绘制不同颜色的散点图。通过这种方式,可以看到性别对总账单和小费关系的影响。例如,可以观察到男性和女性在小费上的差异。

步骤4:箱线图(Box Plot)

箱线图可以帮助我们了解数据的分布及其异常值。

# 绘制箱线图展示不同日期的总账单分布
sns.boxplot(data=tips, x='day', y='total_bill')
plt.title('Box plot of Total Bill by Day')
plt.xlabel('Day')
plt.ylabel('Total Bill')
plt.show()

 

  1. 绘制箱线图

    • 使用seaborn.boxplot函数,其中data参数指定数据集,xy参数分别指定分类变量和连续变量。
    • 箱线图可以展示数据的中位数、四分位数及其异常值。
  2. 设置图表标题和标签

    • 使用plt.titleplt.xlabelplt.ylabel设置图表的标题和轴标签。
  3. 显示图表

    • 使用plt.show()函数来显示图表。

箱线图是一种统计图表,用于展示数据分布的五个统计量:最小值、第一四分位数、中位数、第三四分位数和最大值。箱线图还可以展示异常值。在这个例子中,使用seaborn.boxplot函数绘制不同日期(day)的总账单(total_bill)分布。通过箱线图,可以看到不同日期的总账单分布情况,并识别出哪些数据点是异常值。例如,可以观察到在某些日期,总账单的分布范围较广,而在另一些日期,分布范围较窄。

步骤5:小提琴图(Violin Plot)

小提琴图结合了箱线图和核密度图,可以提供关于数据分布的更多信息。

# 绘制小提琴图展示不同日期的小费分布
sns.violinplot(data=tips, x='day', y='tip')
plt.title('Violin plot of Tip by Day')
plt.xlabel('Day')
plt.ylabel('Tip')
plt.show()

  1. 绘制小提琴图

    • 使用seaborn.violinplot函数,其中data参数指定数据集,xy参数分别指定分类变量和连续变量。
    • 小提琴图展示了数据分布的核密度估计,并结合了箱线图的元素。
  2. 设置图表标题和标签

    • 使用plt.titleplt.xlabelplt.ylabel设置图表的标题和轴标签。
  3. 显示图表

    • 使用plt.show()函数来显示图表。

小提琴图结合了箱线图和核密度图的优点,可以更详细地展示数据分布的特征。在这个例子中,使用seaborn.violinplot函数绘制不同日期(day)的小费(tip)分布。通过小提琴图,可以看到不同日期的小费分布情况,并识别出数据分布的密度和异常值。例如,可以观察到在某些日期,小费的分布较为集中,而在另一些日期,分布较为分散。

步骤6:绘制热力图(Heatmap)

热力图适合展示矩阵数据,比如相关矩阵。例如,绘制数据集的相关矩阵:

# 选择数值列
numeric_tips = tips.select_dtypes(include='number')# 计算相关矩阵并绘制热力图
corr = numeric_tips.corr()
plt.figure(figsize=(10, 8))
sns.heatmap(corr, annot=True, cmap='coolwarm', linewidths=0.5)
plt.title('Heatmap of Correlation Matrix')
plt.show()

  1. 计算相关矩阵

    • 使用DataFrame.corr()函数计算数据集中数值变量之间的相关系数。
  2. 绘制热力图

    • 使用seaborn.heatmap函数绘制热力图。
    • corr:相关矩阵,作为热力图的数据输入。
    • annot=True:在每个单元格中显示相关系数的数值。
    • cmap='coolwarm':设置热力图的颜色映射,coolwarm颜色映射使得正相关和负相关的数据点能够通过颜色区分开来。
    • linewidths=0.5:设置每个单元格之间的间隔线宽度。
  3. 设置图表大小:使用plt.figure(figsize=(10, 8))设置图表的大小,确保图表清晰可读。

  4. 设置图表标题:使用plt.title设置图表的标题。

  5. 显示图表:使用plt.show()函数来显示热力图。

相关矩阵热力图解释:

  • 对角线:热力图的对角线上的值都是1,因为每个变量与自身的相关系数都是1。
  • 变量之间的相关性:热力图的非对角线单元格显示了不同变量之间的相关系数。颜色的深浅表示相关性强弱,颜色的方向(冷暖)表示正相关或负相关。

通过这些详细的步骤,我们能够全面地分析和可视化餐馆小费数据,深入了解影响小费的各种因素,为进一步的数学建模和决策提供有力的支持。

 

总结

1. 生成数据集并保存为CSV文件

首先,我们生成了一个包含餐馆小费信息的模拟数据集,并将其保存为CSV文件。数据集包含以下字段:total_billtipsexsmokerdaytimesize

2. 导入和预览数据

使用Pandas库读取本地CSV文件,并预览数据集的前几行,以了解数据的结构和内容。

3. 绘制散点图(Scatter Plot)

使用Seaborn的scatterplot函数绘制散点图,展示总账单(total_bill)与小费(tip)之间的关系。

4. 添加回归线(Regression Analysis)

使用Seaborn的lmplot函数在散点图上添加回归线,以更清晰地展示总账单和小费之间的线性关系。

5. 分类变量分析(Categorical Variables)

使用scatterplot函数的hue参数,根据性别绘制不同颜色的散点图,分析性别对总账单和小费关系的影响。

6. 绘制箱线图(Box Plot)

使用Seaborn的boxplot函数绘制箱线图,展示不同日期的总账单分布,帮助识别数据的中位数、四分位数及其异常值。

7. 绘制小提琴图(Violin Plot)

使用Seaborn的violinplot函数绘制小提琴图,结合箱线图和核密度图,提供更多关于数据分布的信息。

8. 绘制热力图(Heatmap)

计算数据集中数值变量之间的相关矩阵,使用Seaborn的heatmap函数绘制热力图,直观地展示各变量之间的相关性。

通过这些步骤,可以全面地分析和可视化餐馆小费数据,深入了解影响小费的各种因素,为进一步的数学建模和决策提供有力的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1472507.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习——深度学习中感受野的计算

感受野 在卷积神经网络(CNN)中,感受野(Receptive Field) 是一个非常重要的概念。它描述了网络中某一层的输出(通常是特征图上的一个像素点)所对应的输入图像上的空间范围。这个范围代表了该输出…

更新GCC版本问题处理(Could not resolve host: mirrorlist.centos.org;)更换SCL配置源/SCL后yum使用不了

SCL: 在 Linux 系统中,更新 GCC(GNU Compiler Collection)编译器需要使用 Software Collections (SCL) 库的原因主要有以下几点: https://wiki.centos.org/AdditionalResources/Repositories/SCLhttps://wiki.centos…

【C++】 解决 C++ 语言报错:未定义行为(Undefined Behavior)

文章目录 引言 未定义行为(Undefined Behavior, UB)是 C 编程中非常危险且难以调试的错误之一。未定义行为发生时,程序可能表现出不可预测的行为,导致程序崩溃、安全漏洞甚至硬件损坏。本文将深入探讨未定义行为的成因、检测方法…

【LLM大模型】LangChain从到入门到实战

1.概述 最近,在研究LangChain时,发现一些比较有意思的点,今天笔者将给大家分享关于LangChain的一些内容。 2.内容 2.1 什么是LangChain? LangChain是一项旨在赋能开发人员利用语言模型构建端到端应用程序的强大框架。它的设计…

电子元器件基础知识总结

1.0 电阻 电阻的定义:导体对电流的阻碍作用称之为电阻【每一种导体都有内阻的存在】 闭合的电路中电子的移动输出有多快?电子在导体中的移动速度是很慢的 【铜线中电流的移动速度】 电子受到原子核的束缚,移动的速度很慢,在电压足…

WPS图片无法居中、居中按钮无法点击(是灰色的)

在PPT中复制对象到WPS word中后,导致图片一直靠左,而无法居中 直接选中图片是错误的: 这时你会发现居中按钮无法点击(是灰色的) 正确的是选中图片的前面的部分,然后点击居中,或者Ctrl E

【网络安全】第4讲 身份认证技术(笔记)

一、身份认证技术概述 1、身份认证 是网络安全的第一道防线。是最基本的安全服务,其他的安全服务都依赖于它。在物联网应用系统中,身份认证也是整个物联网应用层信息安全体系的基础。 2、基本身份认证技术 (1)双方认证 是一种双…

收银系统源码-营销活动-幸运抽奖

1. 功能描述 营运抽奖:智慧新零售收银系统,线上商城营销插件,商户/门店在小程序商城上设置抽奖活动,中奖人员可内定; 2.适用场景 新店开业、门店周年庆、节假日等特定时间促销;会员拉新,需会…

亚信安全:《2024云安全技术发展白皮书》

标签 云计算 安全威胁 云安全技术 网络攻击 数据保护 一句话总结 《云安全技术发展白皮书》全面分析了云计算安全威胁的演进,探讨了云安全技术的发展历程、当前应用和未来趋势,强调了构建全面云安全防护体系的重要性。 摘要 云安全威胁演进&#xff…

Android14之获取包名/类名/服务名(二百二十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Python酷库之旅-第三方库Pandas(003)

目录 一、用法精讲 4、pandas.read_csv函数 4-1、语法 4-2、参数 4-3、功能 4-4、返回值 4-5、说明 4-6、用法 4-6-1、创建csv文件 4-6-2、代码示例 4-6-3、结果输出 二、推荐阅读 1、Python筑基之旅 2、Python函数之旅 3、Python算法之旅 4、Python魔法之旅 …

react 项目中预防xss攻击的插件 dompurify

一、安装 $ yarn add dompurify $ yarn add --dev types/dompurify 二、使用 import DOMPurify from dompurify;// 1、处理: DOMPurify.sanitize(htmlContent)// 2、之后放进 dangerouslySetInnerHTML dangerouslySetInnerHTML{{ __html: cleanHTML }} 如&#…

nftables(1)基本原理

简介 nftables 是 Linux 内核中用于数据包分类的现代框架,用来替代旧的 iptables(包括 ip6tables, arptables, ebtables 等,统称为 xtables)架构。nftables 提供了更强大、更灵活以及更易于管理的规则集配置方式,使得…

没有网络安全就没有信息的未来!

👇👇👇 如果你也想学习:黑客&网络安全的零基础攻防教程 今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。 在这里领取: 这个是我花了几天几夜自整理的最新最全…

CFS三层内网渗透——外网打点(一)

目录 外网打点 先爆破一下看看有没有啥可进攻路径 尝试那个可疑的路径发现是thinkphp这个框架,同时也知道了版本,那就nday打吧 写入php ​编辑写入php成功,简简单单nday拿下​编辑 蚁剑rce尝试链接 打点成功 外网打点 先爆破一下看看有…

Windows 上帝模式是什么?开启之后有什么用处?

Windows 上帝模式是什么 什么是上帝模式?Windows 上帝模式(God Mode)是一个隐藏的文件夹,通过启用它,用户可以在一个界面中访问操作系统的所有管理工具和设置选项。这个功能最早出现在 Windows Vista 中,并…

七月开刷|50天吃透660+880‼️

现在只刷一本题集根本不够 去做做24年的考研真题卷就什么都明白了,24年的卷子就是典型的知识点多,杂,计算量大。 而现在市面上的任何一本题集,都无法做到包含所有的知识点,毕竟版面有限! 所以&#xff0…

HY Lisp 读取宏(reader macro)学习

在学习HY lisp语言的时候HY编程快速入门实践课第三章 HY宏入门-CSDN博客,学习到了读取宏(reader macro),尝试将其概念弄明白。 首先,读取宏是Lisp语言中都有的一种概念,所以可以通过任意一种Lisp语言的文档…

完全理解C语言函数

文章目录 1.函数是什么2.C语言中的函数分类2.1 库函数2.1.1 如何使用库函数 2.2自定义函数 3.函数的参数3.1 实际参数(实参)3.2 形式参数(形参) 4.函数调用4.1传值调用4.2 传址调用4.3 练习 5.函数的嵌套调用和链式访问5.1 嵌套调…

【总线】AXI4第八课时:介绍AXI的 “原子访问“ :独占访问(Exclusive Access)和锁定访问(Locked Access)

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…