首页 > 编程语言 >Python实现鸢尾花数据集可视化分析(超详细教程)

Python实现鸢尾花数据集可视化分析(超详细教程)

时间:2025-01-13 09:04:50浏览次数:3  
标签:iris plt Python matplotlib 可视化 sns import 鸢尾花 数据

 目录

一、下载数据集

二、本文总代码

三、连续变量可视化

3.1 散点图

3.1.1 定义

3.1.2 代码

3.1.3 代码解析

3.1.4 结果展示

3.2 2D曲线图

3.2.1 定义

3.2.2 代码

3.2.3 代码解析

3.2.4 结果展示

3.3 分组直方图

3.3.1 定义

3.3.2 代码

3.3.3 代码解析

3.3.4 结果展示

3.4 气泡图

3.4.1 定义

3.4.2 代码

3.4.3 代码解析

3.4.4 结果展示

3.5 小提琴图

3.5.1 定义

3.5.2 代码

3.5.3 代码解析

3.5.4 结果展示

3.6 蒸汽图

3.6.1 定义

3.6.2 代码

3.6.3 代码解析

3.6.4 结果展示


         数据可视化的好处主要体现在两大方面。首先,它能够把原本抽象、复杂的数据转化为直观、生动的图形和图像,使得数据和信息更加易于理解和消化。在快节奏的工作环境中,这样的呈现方式能极大地提高我们处理和理解数据的能力,帮助我们迅速抓住数据的关键特征和趋势,从而做出更加明智和及时的决策。无论是管理层制定战略计划,还是分析师进行数据挖掘,数据可视化都能提供有力的支持,确保决策的科学性和准确性。

        其次,数据可视化在揭示数据内在规律和趋势方面发挥着重要作用。通过巧妙的图表设计和数据呈现,我们能够发现数据中隐藏的关联和模式,这些往往是我们通过简单浏览数字表格所难以捕捉到的。数据可视化让我们得以深入挖掘数据的价值,揭示数据背后的故事和洞见,为业务分析和探索提供新的视角和思路。这种能力对于推动业务发展、优化运营策略、提升用户体验等方面都具有不可估量的价值,是现代数据科学和商业智能不可或缺的一部分。

一、下载数据集

iris.csv(iris数据集、鸢尾花数据集)资源-CSDN文库icon-default.png?t=O83Ahttps://download.csdn.net/download/Z0412_J0103/90215255

二、本文总代码

鸢尾花数据集可视化代码资源-CSDN文库icon-default.png?t=O83Ahttps://download.csdn.net/download/Z0412_J0103/90242251

三、连续变量可视化

3.1 散点图

3.1.1 定义

        散点图是一种以坐标点的位置来表示数据之间关系的图表形式。通过在坐标轴上绘制各个数据点的位置,并根据数据属性进行标记,散点图可以帮助用户观察和理解数据之间的相关性、趋势、离群值等。

  • 数据关系可视化:直观地展示数据之间的关系,如线性相关性、聚类情况等。
  • 异常值检测:通过观察偏离主要数据区域的点,发现潜在的异常值。
  • 多维度分析:支持在同一个图表中展示多个指标或维度的关系。

3.1.2 代码

import matplotlib.pyplot as plt
import pandas as pd
# 图像中文显示问题
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False
import seaborn as sns
sns.set(font = "Kaiti", style = "ticks", font_scale = 1.4)
import altair as alt

# 读取鸢尾花数据集
Iris = pd.read_csv("D:/iris.csv")
iris = Iris.drop(["Id", "Species"], axis = 1)
print(iris.head(3))

# 散点图
plt.figure(figsize = (10,10))
sns.scatterplot(x = "SepalLengthCm", y = "SepalWidthCm", data = iris, s = 50)
plt.title("散点图")
plt.grid(True)
plt.show()

3.1.3 代码解析

plt.figure(figsize = (10,10))
  • plt是matplotlib.pyplot的常见缩写,是Python中一个广泛使用的绘图库。
  • figure函数用于创建一个新的图形或激活一个已存在的图形。
  • figsize参数用于指定图形的宽度和高度(单位为英寸)。在这里,图形的大小被设置为10英寸x10英寸。
sns.scatterplot(x = "SepalLengthCm", y = "SepalWidthCm", data = iris, s = 50)
  • sns是seaborn的常见缩写,seaborn是基于matplotlib的一个高级绘图库,提供了更美观和更多功能的图表。
  • scatterplot函数用于创建散点图。
  • xy参数分别指定了散点图中数据点的横坐标和纵坐标所对应的变量名。在这个例子中,横坐标是鸢尾花(iris)数据集中的“SepalLengthCm”(花萼长度,单位为厘米),纵坐标是“SepalWidthCm”(花萼宽度,单位为厘米)。
  • data参数指定了包含数据的数据集。在这个例子中,数据集是iris,它应该是一个pandas DataFrame,包含了鸢尾花的数据。
  • s参数指定了数据点的大小。在这里,所有数据点的大小都被设置为50。

3.1.4 结果展示

3.2 2D曲线图

3.2.1 定义

        2D曲线图是通过绘制数据点在二维平面上的连线,来展示数据随时间或其他连续变量的变化趋势。

  • 趋势展示:清晰地展示数据的变化趋势和周期性波动。
  • 变化分析:便于用户观察数据在不同时间或条件下的变化情况。

3.2.2 代码

import matplotlib.pyplot as plt
import pandas as pd
# 图像中文显示问题
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False
import seaborn as sns
sns.set(font = "Kaiti", style = "ticks", font_scale = 1.4)
import altair as alt

# 读取鸢尾花数据集
Iris = pd.read_csv("D:/iris.csv")
iris = Iris.drop(["Id", "Species"], axis = 1)
print(iris.head(3))

# 2D密度曲线
sns.jointplot(x = "SepalLengthCm", y = "SepalWidthCm", data = iris, kind = "kde", color = "blue")
plt.grid(True)
plt.show()

3.2.3 代码解析

sns.jointplot(x = "SepalLengthCm", y = "SepalWidthCm", data = iris, kind = "kde", color = "blue")
  • sns:这是seaborn库的常见缩写,seaborn是基于matplotlib的一个高级绘图库,提供了更多样化和美观的统计图表。

  • jointplot:这是seaborn库中用于创建联合分布图的函数。联合分布图可以展示两个变量之间的分布关系,包括它们的散点图、直方图以及核密度估计(KDE)等。

  • x 和 y:这两个参数分别指定了联合分布图中数据点的横坐标和纵坐标所对应的变量名。在这个例子中,横坐标是鸢尾花(iris)数据集中的“SepalLengthCm”(花萼长度,单位为厘米),纵坐标是“SepalWidthCm”(花萼宽度,单位为厘米)。

  • data:这个参数指定了包含数据的数据集。在这个例子中,数据集是iris,它应该是一个pandas DataFrame,包含了鸢尾花的数据。

  • kind:这个参数指定了联合分布图的类型。在这个例子中,它被设置为"kde",表示将使用核密度估计来绘制两个变量的联合分布。核密度估计是一种非参数方法,用于估计随机变量的概率密度函数。

  • color:这个参数指定了图表中元素的颜色。在这个例子中,它被设置为"blue",意味着图表中的元素(如KDE曲线)将使用蓝色来绘制。

3.2.4 结果展示

3.3 分组直方图

3.3.1 定义

        分组直方图是在直方图的基础上,对数据进行分组展示,每个组别都有其对应的条形,以表示该组别内数据的频率分布。

  • 数据分布可视化:清晰地展示不同组别数据的分布情况。
  • 组别比较:便于用户比较不同组别数据之间的差异和相似性。

3.3.2 代码

import matplotlib.pyplot as plt
import pandas as pd
# 图像中文显示问题
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False
import seaborn as sns
sns.set(font = "Kaiti", style = "ticks", font_scale = 1.4)
import altair as alt

# 读取鸢尾花数据集
Iris = pd.read_csv("D:/iris.csv")
iris = Iris.drop(["Id", "Species"], axis = 1)
print(iris.head(3))

# 直方图
iris.iloc[ : , 0 : 2].plot(kind = "hist", bins = 30, figsize = (10,8))
plt.title("直方图")
plt.show()

3.3.3 代码解析

iris.iloc[ : , 0 : 2].plot(kind = "hist", bins = 30, figsize = (10,8))
  • iris:这通常是一个pandas DataFrame,包含了鸢尾花(iris)数据集。

  • iloc[ : , 0 : 2]:这是pandas中的基于位置的索引器,用于选择DataFrame中的子集。iloc[ : , 0 : 2]表示选择所有行(:代表所有行)和第0列到第1列(Python索引从0开始,且是左闭右开区间,所以0:2包括第0列和第1列,但不包括第2列之后的列)。在这个例子中,它选择了“SepalLengthCm”和“SepalWidthCm”这两列。

  • .plot(kind = "hist", bins = 30, figsize = (10,8)):这是pandas DataFrame的plot方法,用于生成图表。在这个例子中,它被用来生成直方图。

    • kind = "hist":指定图表类型为直方图。
    • bins = 30:指定直方图的条数为30。
    • figsize = (10,8):指定图表的大小为10英寸宽和8英寸高。

3.3.4 结果展示

3.4 气泡图

3.4.1 定义

        气泡图是一种通过绘制二维平面上的气泡来表示数据点的图表,气泡的大小、位置和颜色可以分别代表不同的变量或维度。

  • 多维数据可视化:同时展示三个甚至四个变量的关系。
  • 可视化对比:气泡大小直观表现数据点的相对重要性或权重。
  • 异常值识别:帮助用户识别在某些维度上特别显著的数据点。

3.4.2 代码

import matplotlib.pyplot as plt
import pandas as pd
# 图像中文显示问题
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False
import seaborn as sns
sns.set(font = "Kaiti", style = "ticks", font_scale = 1.4)
import altair as alt

# 读取鸢尾花数据集
Iris = pd.read_csv("D:/iris.csv")
iris = Iris.drop(["Id", "Species"], axis = 1)
print(iris.head(3))

# 气泡图
plt.figure(figsize = (11,9))
sns.scatterplot(x = "PetalWidthCm", y = "SepalLengthCm", data = iris, size = "SepalLengthCm", sizes = (20, 200), palette = "muted")
plt.title("气泡图")
plt.legend(loc = "center right", bbox_to_anchor = (1.15, 0.5))
plt.grid()
plt.show()

3.4.3 代码解析

sns.scatterplot(x = "PetalWidthCm", y = "SepalLengthCm", data = iris, size = "SepalLengthCm", sizes = (20, 200), palette = "muted")
  • x = "PetalWidthCm": 指定散点图中数据点的横坐标对应的变量名,这里是鸢尾花数据集中的“花瓣宽度(厘米)”。
  • y = "SepalLengthCm": 指定散点图中数据点的纵坐标对应的变量名,这里是“花萼长度(厘米)”。
  • data = iris: 指定包含数据的数据集,这里是鸢尾花数据集iris
  • size = "SepalLengthCm": 这里有一个常见的误解。在seaborn的scatterplot中,size参数通常用于指定一个变量来控制数据点的大小。然而,这里尝试用SepalLengthCm(花萼长度)来控制大小,这实际上不是scatterplot的标准用法,因为scatterplot没有直接的size到变量大小的映射(与lmplotregplot中的size参数不同)。正确的做法是使用s参数来控制所有点的大小,或者如果确实想根据某个变量调整大小,应该使用sizes参数配合一个数值范围,但size参数本身应该指向一个分类变量(在seaborn的较新版本中,直接传递数值给size可能会导致错误或警告)。不过,在这个例子中,size = "SepalLengthCm"实际上会被忽略,因为sizes参数已经指定了大小范围。
  • sizes = (20, 200): 指定数据点大小的范围。由于size参数的使用不当(如上所述),这里的sizes实际上没有与任何变量映射,而是会被解释为所有点的大小在这个范围内(但具体大小如何分配在这个例子中是不明确的,因为size参数没有被正确使用)。在seaborn的较新版本中,如果没有使用huestyle参数与sizes配合,sizes可能不会有预期的效果。
  • palette = "muted": 指定图表的颜色调色板。"muted"是seaborn提供的一种颜色方案,用于生成柔和、不太鲜艳的颜色。然而,由于这个例子中没有使用hue参数来区分不同的类别,palette参数实际上不会有任何效果。
plt.legend(loc = "center right", bbox_to_anchor = (1.15, 0.5))
  • plt.legend(): 添加图例到图表中。图例通常用于解释图表中不同颜色或标记符号所代表的含义。
  • loc = "center right": 指定图例的位置。然而,由于在这个例子中并没有生成任何基于颜色或标记符号区分的类别(没有使用huestyle参数),图例可能不包含任何有用的信息。
  • bbox_to_anchor = (1.15, 0.5): 进一步指定图例的位置,通过设置一个边界框(bounding box)并将其锚定到图表上的特定位置。这里的(1.15, 0.5)意味着图例将被放置在图表右侧稍微超出的位置,且垂直居中对齐。

3.4.4 结果展示

3.5 小提琴图

3.5.1 定义

        小提琴图结合了箱线图和核密度估计图的优点,能够更全面地揭示数据的分布情况,包括中位数、四分位数、离群值等统计信息。

  • 数据分布展示:清晰地展示数据的分布情况,包括中位数、四分位数等。
  • 多样性与比较性:同时展示多个类别的数据分布,便于比较不同类别之间的差异。
  • 美观性与信息量:既能够提供详细的数据分布信息,又能够以直观且美观的方式呈现。

3.5.2 代码

import matplotlib.pyplot as plt
import pandas as pd
# 图像中文显示问题
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False
import seaborn as sns
sns.set(font = "Kaiti", style = "ticks", font_scale = 1.4)
import altair as alt

# 读取鸢尾花数据集
Iris = pd.read_csv("D:/iris.csv")
iris = Iris.drop(["Id", "Species"], axis = 1)
print(iris.head(3))

# 小提琴图
plt.figure(figsize = (10,8))
sns.violinplot(data = iris.iloc[ : , 0 : 4], palette = "Set3", bw = 0.5, )
plt.title("小提琴图")
plt.grid(True)
plt.show()

3.5.3 代码解析

sns.violinplot(data = iris.iloc[ : , 0 : 4], palette = "Set3", bw = 0.5, )
  • data = iris.iloc[ : , 0 : 4]: 这里您选择了iris数据集中的所有行(:表示所有行)和前四列(0到3,因为Python索引是从0开始的,并且区间是左闭右开的)。通常,iris数据集包含“SepalLengthCm”, “SepalWidthCm”, “PetalLengthCm”, 和 “PetalWidthCm”这四个数值变量以及一个分类变量“Species”。但是,violinplot函数需要一个分类变量来区分不同的小提琴(即不同组的数据分布),以及一个或多个数值变量来表示分布的形状。

  • palette = "Set3": 这指定了用于不同类别的小提琴图的颜色调色板。"Set3"是seaborn提供的一种颜色方案。

  • bw = 0.5: 这指定了小提琴图内部的核密度估计(KDE)曲线的带宽。带宽越小,曲线越崎岖;带宽越大,曲线越平滑。然而,需要注意的是,在较新版本的seaborn中,bw参数可能已经被重命名或移除,因为小提琴图内部的KDE曲线可能由其他参数控制(如inner参数,它决定了小提琴图内部显示什么类型的信息,比如“box”, “stick”, “kde”, 或 “point”等)。

3.5.4 结果展示

3.6 蒸汽图

3.6.1 定义

        蒸汽图是一种水的热力学性质图,它通常以压力和焓(或温度)为坐标轴,展示水在不同状态下的热力学性质。图中包括液相区、汽液两相区和过热蒸汽区,以及等容线、等温线和等熵线等。

  • 状态参数查询:根据蒸气的两个独立状态参数值(如压力和温度),可以从图上查得所需的其他状态参数(如焓、熵等),这对于热力学计算和设计至关重要。
  • 过程模拟与优化:在蒸汽轮机、锅炉等热力设备的设计和运行中,蒸汽图可用于模拟和优化热力过程,提高设备的效率和安全性。
  • 教学与科研:蒸汽图是热力学教学和科研中的重要工具,有助于深入理解水的热力学性质及其在工程应用中的表现。

3.6.2 代码

import matplotlib.pyplot as plt
import pandas as pd
# 图像中文显示问题
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False
import seaborn as sns
sns.set(font = "Kaiti", style = "ticks", font_scale = 1.4)
import altair as alt

# 读取鸢尾花数据集
Iris = pd.read_csv("D:/iris.csv")
iris = Iris.drop(["Id", "Species"], axis = 1)
print(iris.head(3))

# 蒸汽图
irislong = Iris.melt(["Id", "Species"], var_name = "Measurement_type", value_name = "value")
print(irislong.head())
alt.Chart(irislong).mark_area().encode(
    alt.X("Id:Q"),
    alt.Y("value:Q", stack = "center", axis = None),
    alt.Color('Measurement_type:N'),
).properties(width = 500, height = 300)

3.6.3 代码解析

irislong = Iris.melt(["Id", "Species"], var_name = "Measurement_type", value_name = "value")
  • Iris: 假设这是一个已经加载到Python环境中的pandas DataFrame,包含了鸢尾花数据集。
  • melt: 这是pandas提供的一个函数,用于将DataFrame从宽格式转换为长格式。宽格式是指数据集的列表示不同的变量(例如,花萼长度、花萼宽度、花瓣长度、花瓣宽度),而行表示观测值。长格式则是指数据集只有一列用于变量名(在这里是“Measurement_type”),另一列用于对应的值(在这里是“value”),以及用于标识观测值的其他列(在这里是“Id”和“Species”)。
  • ["Id", "Species"]: 这些是melt函数中的id_vars参数,指定了在转换过程中应该保持为列的变量。
  • var_name = "Measurement_type": 指定了用于存储原始列名(即测量类型,如花萼长度、花萼宽度等)的新列名。
  • value_name = "value": 指定了用于存储原始数据值的新列名。
alt.Chart(irislong).mark_area().encode(
    alt.X("Id:Q"),
    alt.Y("value:Q", stack = "center", axis = None),
    alt.Color('Measurement_type:N'),
).properties(width = 500, height = 300)
  • alt.Chart(irislong): 创建一个altair图表对象,数据源是irislong DataFrame。
  • .mark_area(): 指定图表类型为面积图。
  • .encode(): 用于定义图表的编码,即如何将数据映射到图表的视觉元素上。
    • alt.X("Id:Q"): 指定横轴为“Id”列,数据类型为定量(Quantitative,简写为Q)。
    • alt.Y("value:Q", stack = "center", axis = None): 指定纵轴为“value”列,数据类型为定量,并设置堆叠方式为“center”(这通常用于堆叠面积图,使每个区域都相对于其下方的区域居中),同时隐藏纵轴(axis = None)。
    • alt.Color('Measurement_type:N'): 指定颜色编码为“Measurement_type”列,数据类型为名义(Nominal,简写为N),这意味着不同的测量类型将用不同的颜色表示。
  • .properties(width = 500, height = 300): 设置图表的宽度和高度。

3.6.4 结果展示

 

上一篇文章:Python实现简单的缺失值处理(超详细教程)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/144956087下一篇文章: 

标签:iris,plt,Python,matplotlib,可视化,sns,import,鸢尾花,数据
From: https://blog.csdn.net/Z0412_J0103/article/details/144978793

相关文章

  • Python实现:两个朋友的最大共同行走距离
    问题背景Alan和Bob是住在城市中的两个邻居,他们的城市里只有三栋建筑:电影院、商店和他们的家。一天,他们一起去看电影,看完后他们决定继续讨论电影,但由于各自有不同的任务,他们的路径有所不同。Bob打算直接回家,而Alan则需要先去商店,再回家。在离开电影院后,他们决定一起走一段路,讨......
  • Python在生成式AI驱动的电影特效中的作用
    文章目录引言一、生成式AI在电影特效中的应用1.1生成式AI简介1.2生成式AI在电影特效中的角色二、Python的优势及其在生成式AI中的应用2.1Python的生态系统2.2Python在生成式AI中的应用三、虚拟角色生成3.1虚拟角色生成的挑战3.2利用GAN生成虚拟角色四、场景重建......
  • Python与大语言模型的透明度与可解释性研究
    文章目录一、透明度与可解释性的重要性二、Python在大语言模型透明度与可解释性中的应用2.1LIME(LocalInterpretableModel-agnosticExplanations)2.2SHAP(SHapleyAdditiveexPlanations)2.3Captum2.4ELI5三、提升大语言模型透明度与可解释性的策略3.1模型可视化3.2......
  • 如何用Python实现大语言模型的公平性优化
    在当今的人工智能领域,大语言模型(LLMs)如GPT-3、BERT等已经展示了其在自然语言处理任务中的强大能力。然而,随着这些模型的应用范围不断扩大,其潜在的公平性问题也日益凸显。公平性问题可能表现为模型在处理不同性别、种族、文化背景等敏感属性时的偏见。因此,如何优化大语言模型......
  • python安装
    3.9.6在RedHat7.6系统上编译和安装Python3.9.6,你可以按照以下步骤操作:步骤:1.安装必要的依赖项sudoyumgroupinstall-y"DevelopmentTools"(没有不装)sudoyuminstall-yzlib-develncurses-develgdbm-develnss-developenssl-develreadline-develsqlite-devel......
  • 跟我一起学 Python 数据处理(三十五):数据获取与存储的关键要点
    跟我一起学Python数据处理(三十五):数据获取与存储的关键要点在数据处理的领域中,我们不断探索前行,今天的目标是深入了解数据获取与存储方面的知识,希望能与大家共同提升这方面的技能,一起在数据处理的道路上迈出坚实的步伐。一、文章写作初衷在数据的世界里,获取高质量、可靠......
  • 跟我一起学 Python 数据处理(三十四):进阶文件类型处理与技巧
    跟我一起学Python数据处理(三十四):进阶文件类型处理与技巧在数据的海洋中,我们常常会遇到各种各样的文件类型,而Python作为强大的数据处理工具,能够帮助我们应对诸多挑战。今天,我们继续深入学习Python数据处理的相关知识,希望能与大家共同进步,更好地掌握数据处理的技能。......
  • 【AI中数学-线代-综合实例-包括python实现】 聚焦注意力:解析GPT等大模型中的注意力机
    第三章线性代数--综合实例第11节聚焦注意力:解析GPT等大模型中的注意力机制在人工智能的众多技术中,注意力机制(AttentionMechanism)无疑是推动大规模模型如GPT(GenerativePre-trainedTransformer)取得突破性进展的关键因素之一。本节将通过五个实际应用案例,深入解析注意力机......
  • Python函数
    在Python编程中,函数是构建程序的关键模块,它允许将复杂的任务分解为可管理、可重复使用的代码片段,极大地提高了代码的可读性、可维护性和可扩展性。以下为函数的详细内容:函数的定义与基本结构定义方式使用def关键字来定义函数,其基本语法结构为:deffunction_name(parame......
  • 2025 年 1 月 TIOBE 指数,一月头条:Python 是 TIOBE 2024 年度编程语言!
    2025年1月TIOBE指数一月头条:Python是TIOBE2024年度编程语言!编程语言Python赢得了“TIOBE2024年度编程语言”称号。该奖项授予一年内评级增幅最高的编程语言。Python在2024年增长了9.3%。这远远领先于其竞争对手:Java+2.3%、JavaScript+1.4%和Go+1.2%。......