Python常用可视化实例集

目录

1、介绍

2、单变量可视化

2.1 直方图@数值特征

2.1.1 DataFrame的hist()方法

2.1.2 seaborn的distploy()实现

 2.1.3 matplotlib的dist()方法

 2.2 密度图@数值特征

2.2.1 DataFrame的plot()实现

2.2.2 seaborn的distploy()实现

2.3 箱型图@数值特征-sns.boxplot()

​ 2.4 提琴形图@数值特征-sns.violinplot()

2.5 条形图@类别特征-sns.countplot()

2.6 频率表@类别特征-value_counts()

 3、多变量可视化

3.1 数值与数值特征

3.1.1 相关矩阵-corr()和heatmap()

 3.1.2 散点图-plt.scatter()或sns.jointplot()

3.1.3 散点图矩阵-sns.pairplot()

3.2 数值和类别的可视化

3.2.1 散点图-sns.lmplot()

3.2.2 箱线图-sns.boxplot()

3.2.3 提琴形图-sns.violinplot()

​3.3 类别与类别可视化

3.3.1 条形图-countplot()

 3.3.2 交叉表-crosstab()

3.3.3 类中统计值评估图-sns.catplot()

 3.3.4 结构化多绘图网格-FacetGrid()

​4、全局数据集可视化

4.1 降维

4.2 t-SNE

5、其他可视化

5.1 分类边界-plt.pcolormesh()

 5.2 绘制分类轮廓-plt.countour()


1、介绍

在机器学习领域中,可视化是十分重要的。在开始一项新任务时,通过可视化手段探索数据能更好地帮助人们把握数据的要点。在分析模型表现和模型报告的结果时,可视化能使分析显得更加生动鲜明。有时候,为了理解复杂的模型,我们还可以将高维空间映射为视觉上更直观的二维或三维图形。

总而言之,可视化是一个相对快捷的从数据中挖掘信息的手段。本文将使用 Pandas、Matplotlib、seaborn 等流行的库

2、单变量可视化

2.1 直方图@数值特征

直方图依照相等的间隔将值分组为柱,它的形状可能包含了数据分布的一些信息,如高斯分布、指数分布等。当分布总体呈现规律性,但有个别异常值时,你可以通过直方图辨认出来。当你使用的机器学习方法预设了某一特定分布类型(通常是高斯分布)时,知道特征值的分布是非常重要的。

2.1.1 DataFrame的hist()方法

最简单的查看数值变量分布的方法是使用 DataFrame 的hist() 方法绘制直方图。

DataFrame.hist(column=None, by=None, grid=True, xlabelsize=None, xrot=None, ylabelsize=None, yrot=None, ax=None, sharex=False, sharey=False, figsize=None, layout=None, bins=10, backend=None, legend=False, **kwargs)[source]
# 方法一:df.hist()
features = ["Total day minutes","Total intl calls"]
df[features].hist(figsize=(10,4))

# 方法二:df.plot()
df[features].plot(kind="hist")

上图表明,变量 Total day minutes 每日通话时长 呈高斯分布,而 Total intl calls 总国际呼叫数 显著右倾(它右侧的尾巴更长)。

2.1.2 seaborn的distploy()实现

sns.distplot(df['Total intl calls'],kde=False,bins=8)

 

 2.1.3 matplotlib的dist()方法

plt.hist(df['Total intl calls'])

 

 2.2 密度图@数值特征

密度图(density plots),也叫核密度图(KDE)是理解数值变量分布的另一个方法。它可以看成是直方图平滑的版本。相比直方图,它的主要优势是不依赖于柱的尺寸,更加清晰。

2.2.1 DataFrame的plot()实现

df[features].plot(kind="density",subplots=True,layout=(1, 2),
                  sharex=False,figsize=(10,4),legend=False,title=features)

2.2.2 seaborn的distploy()实现

使用 seaborn 的  distplot() 方法观测数值变量的分布。默认情况下,该方法将同时显示直方图和密度图。

seaborn.distplot(a=None, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None, x=None)

2.3 箱型图@数值特征-sns.boxplot()

箱形图的主要组成部分是箱子(box),须(whisker)和一些单独的数据点(离群值),分别简单介绍如下:

  • 箱子显示了分布的四分位距,它的长度由 25𝑡ℎ(Q1,下四分位数) 和 75𝑡ℎ(Q3,上四分位数) 决定,箱中的水平线表示中位数 (50%)。
  • 须是从箱子处延伸出来的线,它们表示数据点的总体散布,具体而言,是位于区间 (Q1−1.5⋅IQR,Q3+1.5⋅IQR)的数据点,其中 IQR=Q3−Q1,也就是四分位距。
  • 离群值是须之外的数据点,它们作为单独的数据点,沿着中轴绘制。

使用 seaborn 的 boxplot() 方法绘制箱形图

sns.boxplot(x='Total intl calls', data=df)

sns.boxplot(df["Total intl calls"])

 

 上图表明,在该数据集中,大量的国际呼叫是相当少见的。

sns.boxplot(x="International plan",y="Total intl calls",data=df,
            hue="Voice mail plan",palette="Set3")

 2.4 提琴形图@数值特征-sns.violinplot()

提琴形图和箱形图的区别是,提琴形图聚焦于平滑后的整体分布,而箱形图显示了单独样本的特定统计数据。

使用 violinplot() 方法绘制提琴形图。下图左侧是箱形图,右侧是提琴形图。

_, axes = plt.subplots(1,2,sharey=True, figsize=(6,4))
sns.boxplot(data=df["Total intl calls"], ax=axes[0])
sns.violinplot(data=df["Total intl calls"], ax=axes[1])

 

 一般来说,小提琴图是一种绘制连续型数据的方法,可以认为是箱形图与核密度图的结合体

2.5 条形图@类别特征-sns.countplot()

频率表的图形化表示是条形图。创建条形图最简单的方法是使用 seaborn的   countplot() 函数。让我们来画出两个分类变量的分布。

seaborn.countplot(*, x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)
_, axes = plt.subplots(nrows=1,ncols=2,figsize=(12,4))
sns.countplot(x="Churn",data=df,ax=axes[0])
sns.countplot(x="Customer service calls
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值