数据可视化

发布于:2025-02-15 ⋅ 阅读:(32) ⋅ 点赞:(0)

常见图表

如果数据仅包含一个数值变量(一列数据):

直方图:数据分布

条形高度统计的是频数(个数)或频率。
在这里插入图片描述

密度图:数据分布

在这里插入图片描述

箱型图:四分位数

在这里插入图片描述
注意:为了帮助发现数据里的异常值
不能直接让上界=最大值,而是
上界= min{最大值,第三四分位数+1.5*四分位距},取更靠近中位数的。

四分位距 = 第三四分位数 - 第一四分位数(箱子长度就是四分位距)
为什么是乘以1.5?因为在理想的正态分布数据中,大约 99.7% 的数据会落在均值左右 3 个标准差的范围内。而
在这里插入图片描述
举个例子:
在这里插入图片描述
同理,下界=max{最小值,第一四分位数-1.5*四分位距}

小提琴图=密度图+箱型图

在这里插入图片描述
置信区间:样本值有多少概率在那个区间内

如果数据仅包含2个变量(两列数据):

散点图:变量之间的相关性

在这里插入图片描述

折线图:展示趋势变化

在这里插入图片描述

条形图(分类变量+数值变量):各个分类对应的数值

默认情况下,条柱的高度对应所属分类下的所有值的平均值
在这里插入图片描述
直方图和条形图外形相似,本质不同。
直方图针对的是一个数值变量,横轴是数值范围,纵轴是切割的小范围对应的数据个数。
条形图针对的是一个数值变量和一个分类变量,横轴是类别,纵轴是对应的数值。

饼图(分类变量+数值变量):各个分类对应的数值之间的比例

在这里插入图片描述

引入更多变量:

以散点图为例

引入分类变量:把点绘制成不同颜色,不同颜色代表不同分类

引入数值变量:把点绘制成不同大小,让面积大小去表示数值大小

在这里插入图片描述

热力图:两个分类变量组合+一个数值变量

在这里插入图片描述

多个图放在一起,互相对比挖掘更多信息:

在这里插入图片描述

如何绘制?

**两个可视化库:seaborn 和 matplotlib **
注意:seaborn 本身并没有专门的 show() 方法,需要借助 matplotlib.pyplot 的 show() 方法来显示图形。

这种设计体现了 seaborn 和 matplotlib 的分工。

seaborn以matplotlib为基础,它的主要目的是提供简洁、美观的统计图形绘制接口,让用户可以更方便地创建各种统计图表;
而 matplotlib 作为基础的绘图库,负责图形的底层绘制、管理和显示等操作。

这样的分工使得 seaborn 专注于统计可视化的高级功能,同时又能借助 matplotlib 的强大功能来实现图形的显示和进一步定制。

pip install matplotlib
pip install seaborn

import matplotlib.pyplot as plt(因为大部分功能都在子模块pyplot下)
import seaborn as sns(按惯例写成sns)

假设s1是Series

单数值变量

直方图(Histogram——hist)

sns.histplot(data = s1)
plt.show()

密度图(Kernel Density Plot——kde)

sns.kdeplot(s1)

箱型图(Box Plot——box)

sns.boxplot(s1)

小提琴图(Violin Plot——violin)

sns.violinplot(s1)

假设传入的是DataFrame df1,可以添加参数x,指定为x轴对应数据的列名
在这里插入图片描述

一些标签:

设置标题:
plt.title(标题字符串)

设置坐标轴标签:
plt.xlabel(标签字符串)
plt.ylabel(标签字符串)

注意:需要在plt.show()之前设置好

二变量

散点图(Scatter Plot——scatter)

sns.scatterplot(df1,x=“列名1”,y=“列名2”)
也可以写成sns.scatterplot(x=Series1,y=Series2),可以方便联系不同表格的列。

轴标签会自动用列名表示。

折线图(Line Plot——line)

sns.lineplot(df1,x=“列名1”,y=“列名2”)

条形图(Bar Plot——bar)

sns.barplot(df1,x=“分类变量对应的列名”,y=“数值变量对应的列名”)
默认情况下,条柱的高度是所属分类下的所有值的平均值。
若想更改为显示最大值,可以令参数estimator=np.max,赋值为对应的求值函数名。

补充:计数图
sns.countplot(df1,x=“分类变量对应的列名”)
在这里插入图片描述

饼图(Pie Plot)

假设有个最喜欢的水果的投票数据,想展示各水果获得票数的比例:
plt.pie(Series1,labels=Series2,
autopct=“%.1f%%”)
注意:传入的是需要计算比例的Series,而不是传入DataFrame,因为这个方法不是Seaborn的,而是Matplotlib的。Seaborn才支持传入整个DataFrame后在指定变量。

labels=Series2,和Series1对应,按顺序展示标签。

autopct="%.1f%%"设置比例数字的格式,
%表示是展示格式的字符串, .1f表示小数点后保留一位小数,%%表示真正的%符号,以此为结尾。(“pct” 是 “percent”(百分比)的缩写)

.0f:整数

更美观的配色:

设置颜色:
color=“blue”,也可以赋值为颜色对应的编码,
比如"#c287c7"

更换色盘(一整套颜色主题):
sns.set_palette(“…”)
pastel——更加清新的彩色粉笔色
crest——青绿色主题的山色

在这里插入图片描述

多变量

在这里插入图片描述

引入分类变量(加颜色)

注意:这里的颜色不应该用color参数(只能改成固定的颜色),而要用hue(色调)。
把hue赋值为分类变量列名,图表就会根据不同变量把点或线或条柱画成不同颜色。
在这里插入图片描述

引入数值变量(颜色深浅或点变气泡)

颜色

把hue赋值为数值变量列名:
在这里插入图片描述

气泡

**把size参数赋值为一个数值变量,**比如用点的大小表示花瓣长度:
在这里插入图片描述

修改图例位置

plt.legend( bbox_to_anchor=(1,1) )
legend(图例),
元组(1,1)表示把图例放在右上位置。
元组第一个数字表示横向位置,0左1右;
第二个数字表示纵向位置,0:顶部和下边框对齐,1:顶部和上边框对齐

热力图(Heat Map)

sns.heatmap(glue, annot=True)
在这里插入图片描述
把annot(annotation,标注)参数赋值为True,还能让格子里显示出对应具体数值。

多个图放在一起

以直方图为例,就是调用多次histplot。在这里插入图片描述
因为原本是按照各个图合适的粗细画的,所以需要统一条柱的粗细:bidwidth=0.1,指定每个条柱的宽度。

加图例:label=“…”
还要调用一下plt.legend()才能真正把图例画出来。

对于箱型图和小提琴图,因为横轴并不是表示数值,所以它们会挤在同一条纵线上,
在这里插入图片描述
如何解决?把分类变量作为x轴的变量
在这里插入图片描述

一行放多个图

绘制子图:
fig, axes = plt.subplots(行数,列数,figsize=(宽,高))

fig对应整个大图,axes对应一系列子图,figsize是对于大图而言的;
在相应的绘图函数中加入参数ax=axes[0],就是表示把该图作为第一个子图。
在这里插入图片描述

配对图(Pair Plot):一次性探索变量分布和变量之间的关系

sns.pairplot(DataFrame)
把DataFrame数值变量之间所有的两两关系都绘制出来。
(各变量分布用直方图绘制,不同变量之间的关系用散点图绘制)
在这里插入图片描述
增加分类变量:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到