用python画数据分析图、使用的关键库是,[宜配屋]听图阁

本文详细介绍了seaborn库在Python中的强大功能,包括设置主题风格、调色板选择、核密度图、多元数据可视化、回归分析、箱形图等。通过实例演示了如何利用seaborn绘制各种图表,如散点图、条形图、小提琴图等,帮助读者提升数据可视化能力。
摘要由CSDN通过智能技术生成

seaborn是python中的一个非常强大的数据可视化库,它集成了matplotlib,下图为seaborn的官网,如果遇到疑惑的地方可以到官网查看。http://seaborn.pydata.org/

969c16f67b252e935348262a340cd495.png

从官网的主页我们就可以看出,seaborn在数据可视化上真的非常强大。

1.首先我们还是需要先引入库,不过这次要用到的python库比较多。

import numpy as np

import pandas as pd

import matplotlib as mpl

import matplotlib.pyplot as plt

import seaborn as sns

2.sns.set_style():不传入参数用的就是seaborn默认的主题风格,里面的参数共有五种

darkgrid

whitegrid

dark

white

ticks

我比较习惯用whitegrid。

2b6d9df521cdbcacd120c22b31461737.png

3.下面说一下seaborn里面的调色板,我们可以用sns.color_palette()获取到这些颜色,然后用sns.palplot()将这些色块打印出来。color_palette()函数还可以传入一些参数

sns.palplot(sns.color_palette("hls",n))#显示出n个不同颜色的色块

sns.palplot(sns.color_palette("Paired",2n))#显示出2n个不同颜色的色块,且这些颜色两两之间是相近的

sns.palplot(sns.color_palette("color"))#由浅入深显示出同一颜色的色块

sns.palplot(sns.color_palette("color_r"))##由深入浅显示出同一颜色的色块

sns.palplot(sns.color_palette("cubehelix",n))#显示出n个颜色呈线性变化的色块

sns.palplot(sns.cubehelix_palette(k,start=m,rot=n))#显示出k个start(0,3)为m,rot(-1,1)为n的呈线性变化的色块

sns.palplot(sns.light_palette("color"))#将一种颜色由浅到深显示

sns.palplot(sns.dark_palette("color"))#将一种颜色由深到浅显示

sns.palplot(sns.dark_palette("color",reverse=bool))#reverse的值为False,则将一种颜色由深到浅显示;若为True,则将一种颜色由浅到深显示

f22f2c3f626cf408192d26acb4c990d6.png

b1ca14dd5cf92b72ad3369cbb89dadeb.png

9eb86f39a918f7bbe47a9815ee09b8b6.png

4.sns.kdeplot(x,y,cmap=pal):绘制核密度分布图。

7a0a4cb740be136eb8b1ac53c28b8ee9.png

5.sns.distplot(x,kde=bool,bins=n):kde代表是否进行核密度估计,也就是是否绘制包络线,bins指定绘制的条形数目。

24f95bb2f99330087cd9cc06837a5b59.png

6.根据均值和协方差绘图:

首先我们要根据均值和协方差获取数据

mean,cov = [m,n],[(a,b),(c,d)]#指定均值和协方差

data = np.random.multivariate_normal(mean,cov,e)#根据均值和协方差获取e个随机数据

df = pd.DataFrame(data,columns=["x","y"])#将数据指定为DataFrame格式

df

15eb3380a7bcdd03a3876307354b9aab.png

然后绘制图像

sns.jointplot(x="x",y="y",data=df) #绘制散点图

658c5b13562bfd36e4eb944ead6b98ad.png

用sns.jointplot(x="x",y="y",data=df)可以绘制出x和y单变量的条形图以及x与y多变量的散点图。

7.在jointplot()函数中传入kind=“hex”,能够在数据量比较大时让我们更清晰地看到数据的分布比重。

x,y = np.random.multivariate_normal(mean,cov,2000).T

with sns.axes_style("white"):

sns.jointplot(x=x,y=y,kind="hex",color="c")

绘制出的图像如下

f645be3650bacdbd41aed79ff1e2af3f.png

8.sns.pairplot(df):绘制出各变量之间的散点图与条形图,且对角线均为条形图。

14c931cc5c275653db5254df8e9c1310.png

在这里我们可以先使用df = sns.load_dataset("")将seaborn中原本带有的数据读入或用pandas读取。

9.绘制回归分析图:这里可以用两个函数regplot()和lmplot(),用regplot()更好一些。

ce99e0232fdc08322ec90744b7179987.png

如果两个变量不适合做回归分析,我们可以传入x_jitter()或y_jitter()让x轴或y轴的数据轻微抖动一些,得出较为准确的结果。

8fabbb6a07f05be5be0c2abc1e4f9dc3.png

10.sns.stripplot(x="",y="",data=df,jitter=bool):绘制一个特征变量中的多个变量与另一变量关系的散点图,jitter控制数据是否抖动。

0be4614df7a8169bbdbae679c3f3f5cb.png

11.sns.swarmplot(x="",y="",hue="",data=df):绘制页状散点图,hue指定对数据的分类,由于在大量数据下,上面的散点图会影响到我们对数据的观察,这种图能够更清晰地观察到数据分布。

341586774ee92d542e17c7356e86fcc0.png

881097309258925508b55b4916cef6f6.png

12.sns.boxplot(x="",y="",hue="",data=df,orient="h"):绘制盒形图,hue同样指定对数据的分类。在统计学中有四分位数的概念,第一个四分位记做Q1,第二个四分位数记做Q2,第三个四分位数记做Q3,Q3-Q1得到的结果Q叫做四分位距,如果一个数n,n的范围是nQ3+1.5Q,则称n为离群点,也就是不符合数据规范的点,利用盒形图可以很清晰地观察到离群点。如果传入orient则画出的盒形图是横向的。

b5b68b0be2ef2df70d203ec88f45ac5b.png

13.sns.violinplot(x="",y="",data=df,hue="",split=bool):绘制小提琴图,split表示是否将两类数据分开绘制,如果为True,则不分开绘制,默认为False。

fa9938be3318802ed9169d7243fa3785.png

caa2aae6733737c424058831c9d50589.png

14.还可以将页状散点图和小提琴图在一起绘制,只需将两个绘图命令

7a25efb8a0a88c31afc64a609de48440.png

inner="None"表示去除小提琴图内部的形状。

15.sns.barplot(x="",y="",hue="",data=df):按hue的数据分类绘制条形图。

d1e4afd254f7209432929df1bb07a4b5.png

16.sns.pointplot(x="",y="",hue="",data=df):绘制点图,点图可以更好的描述数据的变化差异。

caa76d8fa47eef082c937ca1a30e93c5.png

17.我们还可以传入其他参数:

sns.pointplot(x="class",y="survived",hue="sex",data=titanic,

palette={"male":"#02ff96","female":"#0980e6"},#指定曲线的颜色

markers=["s","d"],linestyles=["-","-."])#指定曲线的点型和线型

绘制出的图像如下

999f3279f147de7ecb362643fd4ada0b.png

18.sns.factorplot(x="", y="", hue="", data=df):绘制多层面板分类图。

sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips)

绘制的图像如下

502cd88496057cfbe0f20f98c8e7053e.png

19.sns.factorplot(x="",y="",hue="",data=df,kind=""):kind中指定要画图的类型。

sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips,kind="bar")

1e5aea30573184c6d3d93bf4f2fe5622.png

sns.factorplot(x="day",y="total_bill",hue="smoker",col="time",data=tips,kind="swarm")

52c9b801d6ac2243e82897294f59e32b.png

sns.factorplot(x="time",y="total_bill",hue="smoker",col="day",data=tips,kind="box",size=5,aspect=0.8) #aspect指定横纵比

3c0e5ae9c7a589f5d2b308620a7c8f30.png

20.sns.factorplot()的参数:

x,y,hue 数据集变量 变量名。

date 数据集 数据集名。

row,col 更多分类变量进行平铺显示 变量名。

col_wrap 每行的最高平铺数 整数。

estimator 在每个分类中进行矢量到标量的映射 矢量。

ci 置信区间 浮点数或None。

n_boot 计算置信区间时使用的引导迭代次数 整数。

units 采样单元的标识符,用于执行多级引导和重复测量设计 数据变量或向量数据。

order, hue_order 对应排序列表 字符串列表。

row_order, col_order 对应排序列表 字符串列表。

kind : 可选:point 默认, bar 柱形图, count 频次, box 箱体, violin 提琴, strip 散点,swarm 分散点 size 每个面的高度(英寸) 标量 aspect 纵横比 标量 orient 方向 "v"/"h" color 颜色 matplotlib颜色 palette 调色板 seaborn颜色色板或字典 legend hue的信息面板 True/False legend_out 是否扩展图形,并将信息框绘制在中心右边 True/False share{x,y} 共享轴线 True/False。

21.sns.FacetGrid():这是一个很重要的绘图函数。

g = sns.FacetGrid(tips,col="time")

g.map(plt.hist,"tip")

0f38372d73634b09e808e0e882ed4c28.png

g = sns.FacetGrid(tips,col="sex",hue="smoker",size=5,aspect=1)

g.map(plt.scatter,"total_bill","tip",alpha=0.3,s=100)#alpha指定点的透明度,s指定点的大小

g.add_legend()#添加图例

e85cabe9b78eefb3fc47edd7185835a7.png

g = sns.FacetGrid(tips,col="day",size=4,aspect=0.8)

g.map(sns.barplot,"sex","total_bill")

e95cb9a6e83eab410665995f9cfbb1d0.png

22.sns.PairGrid():将各变量间的关系成对绘制。

iris = sns.load_dataset("iris")

g = sns.PairGrid(iris)

g.map(plt.scatter)

9cffa8c5af413a434b8a0e59f8917e9a.png

23.g.map_diag()和g.map_offdiag():绘制对角线和非对角线的图形

g = sns.PairGrid(iris)

g.map_diag(plt.hist) #指定对角线绘图类型

g.map_offdiag(plt.scatter) #指定非对角线绘图类型

b4b352961ec4caa424a076d4b74d2064.png

g = sns.PairGrid(iris, hue="species")

g.map_diag(plt.hist)

g.map_offdiag(plt.scatter)

g.add_legend()

47f68f1ad7400dbcc43eed77e21b09aa.png

g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"], hue="species",size=3)

g.map(plt.scatter)

a459c460b2e3c991bb26f27f705cfd36.png

g = sns.PairGrid(tips, hue="size", palette="GnBu_d")

g.map(plt.scatter, s=50, edgecolor="white")

g.add_legend()

d660bf25c22dd320414a62821d1ab55e.png

24.sns.heatmap():绘制热度图,热度图可以很清楚看到数据的变化情况以及变化过程中的最大值和最小值。

uniform_data = np.random.rand(3, 3)

print (uniform_data)

heatmap = sns.heatmap(uniform_data)

0c8d53025dc36b3dc044938a087be5bb.png

25.向heatmap()中传入参数vmin=和vmax=。

ax = sns.heatmap(uniform_data,vmin=0.2,vmax=0.5)

#超过最大值都是最大值的颜色,小于最小值都是最小值的颜色

f8829a108a335aadc9567f1a6e8e7650.png

26.

normal_data = np.random.randn(3, 3)

print (normal_data)

ax = sns.heatmap(normal_data, center=0) #center指定右侧图例的中心值

c5c20a2dc54555324a1891f53456f303.png

27.

flights = sns.load_dataset("flights")

flights = flights.pivot("month", "year", "passengers")

ax = sns.heatmap(flights, annot=True,fmt="d",linewidth=0.5)

#annot指定是否显示数据,fmt指定数据的显示格式,linewidth指定数据格子间的距离

357cae931f54d082df4cd39d6205cf7d.png

28.

ax = sns.heatmap(flights, cmap="YlGnBu",cbar=True)

#cmap指定图形颜色,cbar表示是否绘制右侧图例。

c9066842409bea320ef5a395658f5456.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值