统计学基础

分类数据可分类为:

  1. 定序数据,数据拥有顺序
  2. 定类数据,数据没有顺序

数值数据可分类为:

  1. 连续数据,数据没有最小表示单位
  2. 离散数据,数据以整数或自然数为单位

数值数据可有三种分析维度:

  1. 集中趋势,看数据集中在何处
  2. 离散趋势,看数据偏离中心的散步情况
  3. 分布形状,看分布的对称程度、峰值高低等等

集中趋势分析指标:

  1. 平均数
  2. 中位数
  3. 众数

在Pandas中对应方法:

适用情况方法
求平均值mean
求中位数median
求众数mode

tip:由于众数可能有多个,所以mode方法返回值为一个Series

离散趋势分析指标:

  1. 极差
  2. 方差/标准差
  3. 四分位距(第三四分位数 – 第一四分位数)

在Pandas中对应方法:

适用情况方法
极差1.max和min方法相减
2.用numpy.array将Series转换为数组后使用ptp方法
方差var
标准差std
四分位距Series.quantitle(0.75) – Series.quantile(0.25)

分布形状分析:

直方图等

在Pandas中对应方法:

适用情况方法
直方图Series.plot(kind=’hist’)

常见的图表种类

一列数据/一个变量:

直方图、密度图、箱形图、小提琴图等

两列数据/两个变量:

散点图、折线图、条形图、饼图等

散点图、折线图主要针对2个数值变量

条形图、饼图主要针对一个分类变量、一个数值变量

Matplotlib和Seaborn学习

导入Matplotlib库和Seaborn库代码如下:

# 导入Matplotlib库,并取别名为plt
import matplotlib.pyplot as plt
# 导入Seaborn库,并取别名sns
import seaborn as sns

一些绘图函数(单变量):

函数用法返回值作用
histplotsns.histplot(Serise)matplotlib.axes._axes.Axes类对象绘制直方图
kdeplotsns.kdeplot(Serise)matplotlib.axes._axes.Axes类对象绘制密度图
boxplotsns.boxplot(Serise)matplotlib.axes._axes.Axes类对象绘制箱形图
violinplotsns.violinplot(Serise)matplotlib.axes._axes.Axes类对象绘制小提琴图
countplotsns.countplot(data=DataFrame, x=列名)matplotlib.axes._axes.Axes类对象绘制计数图

tip:需要这些方法都要在后面调用plt.show(),才能使图显示出来,如:

sns.histplot(Serise)
plt.show()

也可以直接传入DataFrame,只需指定x轴为哪一列即可,如:

sns.histplot(DataFrame, x = 列名)
plt.show()

一些绘图函数(两个变量):

函数用法返回值作用
scatterplotsns.scatterplot(DataFrame, x = 列名1, y = 列名2)
sns.scatterplot(x = Series1, y = Series2)
matplotlib.axes._axes.Axes类对象绘制散点图
lineplotsns.lineplot(DataFrame, x = 列名1, y = 列名2)
sns.lineplot(x = Series1, y = Series2)
matplotlib.axes._axes.Axes类对象绘制折线图
barplotsns.barplot(DataFrame, x = 列名1, y = 列名2)
sns.barplot(x = Series1, y = Series2)
matplotlib.axes._axes.Axes类对象绘制条形图
pieplt.pie(Series1, labels=Serise2)
plt.pie(Series1, labels=Serise2, autopct=’%.1f%%’)
matplotlib.axes._axes.Axes类对象绘制饼图

tip:barplot函数默认求的是x轴对应分类的y值平均值,可以使用可选参数estimator指定一个聚合函数,如Numpy.max

一些绘图函数(多个变量):

函数用法返回值作用
heatmapsns.heatmap(DataFrame)
sns.heatmap(DataFrame, annot=True)
matplotlib.axes._axes.Axes类对象绘制热力图

一些可选参数实现多个变量图表

可选参数用法作用
huesns.scatterplot(DataFrame, x = 列名1, y = 列名2, hue = 列名3)通过颜色区分所给变量
sizesns.scatterplot(DataFrame, x = 列名1, y = 列名2, size= 列名3)通过大小区分所给变量

这些可选参数可同时使用,以到达绘制多个变量图的效果

但是多个变量时,图例可能会遮挡图中数据,解决方法如下:

函数用法返回值作用
legendplt.legend(bbox_to_anchor=(x, y))matplotlib.legend.Legend类对象设置图例位置

这里x=0或1表示在图表左边或右边, y=0或1表示在图表下边或者上边

多图合成一图实现多个变量图表

# 将3张直方图图合并成一张直方图
sns.histplot(Series1)
sns.histplot(Series2)
sns.histplot(Series3)
plt.show()

由于合并时不会统一条柱宽度,所以可能会出现条柱宽度不一致的情况,可以通过可选参数binwidth指定条柱宽度来解决。

此外合并后的图表是没有图例的,我们需要通过label可选参数来指定对应被合并图表的标签后才会出现图例

# 指定三张图的条柱宽度和标签再合并
sns.histplot(Series1, bindwidth=0.1, label="Series1")
sns.histplot(Series2, bindwidth=0.1, label="Series2")
sns.histplot(Series3, bindwidth=0.1, label="Series3")
plt.show()

一些用于图表设置的函数:

函数用法返回值作用
titleplt.title(图表标题)matplotlib.text.Text类对象设置图标标题
xlabelplt.xlabel(x轴标签)matplotlib.text.Text类对象设置图标x轴标签
ylabelplt.ylabel(y轴标签)matplotlib.text.Text类对象设置图标y轴标签
set_palettesns.set_palette(色盘名)NoneType设置色盘
subplotsplt.subplots(行数, 列数)tuple类型对象设置一张图中放多张子图

tip:这些函数需要在show函数之前调用

seaborn色盘参考链接:Seaborn调色板中所有颜色组合(表格整理版)_seaborn颜色对照表-CSDN博客

subplots函数的一些可选参数:

可选参数用法作用
figsizefigsize=(宽, 高)设置每张子图的宽和高

subplots函数的具体使用方法:

# 接受subplots函数返回值,其中fig表示整个大图,axes表示每个子图
fig, axes = plt.subplots(行数, 列数, figsize=(宽, 高))
# 指定第一个子图为如下箱形图
sns.boxplot(data=Dataframe, x=列名1, y=列名2, ax = axes[0])
# 展示图表
plt.show()

一些用于图表绘制函数的可选参数:

可选参数作用
color设置图表元素的颜色
alpha设置图表元素的透明度

配对图绘制函数

函数用法返回值作用
pairplotsns.pairplot(DataFrame)seaborn.axisgrid.PairGrid类对象绘制配对图

该函数会把DataFrame中各个变量的分布用直方图绘制出来,各个变量两两之间关系用散点图绘制出来

该图总共有n*n个子图,n为DataFrame变量个数

pairplot函数的一些可选参数

可选参数作用
kind设置非对角线上的图的类型
diag_kind设置对角线上的图的类型
plot_kws设置非对角线上的图的样式
diag_kws设置对角线上图的样式

By Liu

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注