目录
数据可视化的好处主要体现在两大方面。首先,它能够把原本抽象、复杂的数据转化为直观、生动的图形和图像,使得数据和信息更加易于理解和消化。在快节奏的工作环境中,这样的呈现方式能极大地提高我们处理和理解数据的能力,帮助我们迅速抓住数据的关键特征和趋势,从而做出更加明智和及时的决策。无论是管理层制定战略计划,还是分析师进行数据挖掘,数据可视化都能提供有力的支持,确保决策的科学性和准确性。
其次,数据可视化在揭示数据内在规律和趋势方面发挥着重要作用。通过巧妙的图表设计和数据呈现,我们能够发现数据中隐藏的关联和模式,这些往往是我们通过简单浏览数字表格所难以捕捉到的。数据可视化让我们得以深入挖掘数据的价值,揭示数据背后的故事和洞见,为业务分析和探索提供新的视角和思路。这种能力对于推动业务发展、优化运营策略、提升用户体验等方面都具有不可估量的价值,是现代数据科学和商业智能不可或缺的一部分。
一、下载数据集
iris.csv(iris数据集、鸢尾花数据集)资源-CSDN文库https://download.csdn.net/download/Z0412_J0103/90215255
二、本文总代码
鸢尾花数据集可视化代码资源-CSDN文库https://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
函数用于创建散点图。x
和y
参数分别指定了散点图中数据点的横坐标和纵坐标所对应的变量名。在这个例子中,横坐标是鸢尾花(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
到变量大小的映射(与lmplot
或regplot
中的size
参数不同)。正确的做法是使用s
参数来控制所有点的大小,或者如果确实想根据某个变量调整大小,应该使用sizes
参数配合一个数值范围,但size
参数本身应该指向一个分类变量(在seaborn的较新版本中,直接传递数值给size
可能会导致错误或警告)。不过,在这个例子中,size = "SepalLengthCm"
实际上会被忽略,因为sizes
参数已经指定了大小范围。sizes = (20, 200)
: 指定数据点大小的范围。由于size
参数的使用不当(如上所述),这里的sizes
实际上没有与任何变量映射,而是会被解释为所有点的大小在这个范围内(但具体大小如何分配在这个例子中是不明确的,因为size
参数没有被正确使用)。在seaborn的较新版本中,如果没有使用hue
或style
参数与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"
: 指定图例的位置。然而,由于在这个例子中并没有生成任何基于颜色或标记符号区分的类别(没有使用hue
或style
参数),图例可能不包含任何有用的信息。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博客https://blog.csdn.net/Z0412_J0103/article/details/144956087下一篇文章:
标签:iris,plt,Python,matplotlib,可视化,sns,import,鸢尾花,数据 From: https://blog.csdn.net/Z0412_J0103/article/details/144978793