数据清洗 Chapter03 | Seaborn常用图形

这篇文章讲述的是Seaborn常用图形。希望这篇数据清洗的文章对您有所帮助!如果您有想学习的知识或建议,可以给作者留言~


Seaborn是一个画图工具
Seaborn是基于Matplotlib的一个Python作图模块
配色更加好看,种类更多,但函数和操作比较简单

1、散点图

散点图可直接观察两个变量的分布情况

  • 1、使用jiontplot()函数画出散点图
import seaborn as sns
import pandas as pd
import numpy as np
iris = pd.read_csv('./data/iris.csv')

sns.jointplot(x='sepal_length', y='petal_length', data=iris)

14

  • 2、设置参数kind为reg,对散点进行线性拟合
sns.jointplot("sepal_length", "petal_length", data=iris, kind="reg")

15

  • 3、设置参数kind为hex,绘制六边形箱体联合分布直方图
sns.jointplot("sepal_length", "petal_length", data=iris, kind="hex")

16

  • 4、设置参数kind为kde,绘制密度曲线图
sns.jointplot("sepal_width", "petal_length", data=iris, kind="kde", space=0, color="g")

17

2、盒图(箱线图)

通常最大值和最小值检测数据集中的异常值
通过中位数判断数据集的偏态和尾重
18

  • 1、打开文件
import seaborn as sns
import pandas as pd
import numpy as np
tips = pd.read_csv("./data/tips.csv")

tips.head(3)

19

  • 2、用boxplot(0绘制账单(bill)的盒图
sns.boxplot(x=tips["total_bill"])

20

  • 3、以天(day)为单位,绘制账单的盒图
sns.boxplot(x="day", y="total_bill", data=tips)

21

  • 4、分别绘制抽烟者和不抽烟者账单的盒图

  • 使用hue指定抽烟(smoker)特征

sns.boxplot(x="day", y="total_bill",hue = "smoker", data=tips,palette = "Set3")

22

3、直方图

直方图中,条形的长为对应组的频数与组距的比
直方图能够清楚显示各组频数分布情况
易于显示各组之间频数的差别

  • 1、使用distplot()函数绘制直方图

distplot()结合了Matplotlib中的hist()、kdeplot()和rugplot()

sns.distplot(tips["total_bill"])

23

  • 2、使用参数rug添加地毯图

rug用于观察数据的密度分布

sns.distplot(tips["total_bill"], rug=True, hist=False)

24

  • 3、使用直方图和最大似然高斯分布拟合展示变量分布

kde用于指定是否在图上添加高斯核密度估计

  1. kde=False
from scipy.stats import norm
sns.distplot(tips["total_bill"], fit=norm, kde=False)

25

  1. kde=True
from scipy.stats import norm
sns.distplot(tips["total_bill"], fit=norm, kde=True)

26

  • 4、设置vertical参数和color参数,改变直方图的方向和颜色
sns.distplot(tips["total_bill"], vertical=True,color='y')

27

4、柱状图

柱状图用于反映离散特征中不同特征值的数目

  • 1、使用Seaborn中的.countpolt()绘制柱状图
sns.countplot(x="day", data=tips)

28

  • 2、使用两个离散变量做柱状图
sns.countplot(x="day", hue="sex", data=tips)

29

  • 3、绘制水平柱状图
sns.countplot(y="day", hue="sex", data=tips)

30

5、核密度图

核密度图(kernel density estimation ,kde) 是一种非参数检验方法
用于估计未知的密度函数

使用Seaborn中的kdeplot()函数绘制单变量或双变量的核密度估计图

  • 1、绘制单变量核密度估计图
sns.kdeplot(tips["total_bill"])

31

  • 2、设置color参数,在核密度曲线下方区域进行颜色填充
sns.kdeplot(tips["total_bill"],shade=True,color='r')

32

  • 3、绘制双变量核密度图
sns.kdeplot(tips["total_bill"],tips['tip'])

33

  • 4、n_levels设置层数,cmap设置颜色
sns.kdeplot(tips["total_bill"],tips['tip'], n_levels=30, cmap="Purples_d")

34

6、小提琴图

小提琴图是盒图与核密度图的结合
能够一次从多个维度反映出数据的分布

  • 1、使用violinplot()函数绘制小提琴图
sns.violinplot(x=tips["total_bill"])

35

  • 2、根据星期(day)进行分组,绘制特征账单的小提琴图
sns.violinplot(x="day", y="total_bill", data=tips)

36

  • 4、绘制两个离散变量嵌套分组的小提琴图

palette用于指定seaborn内置颜色

sns.violinplot(x="day", y="total_bill", hue="smoker",data=tips, palette="muted")

37

  • 5、参数scale用于调节小提琴图的大小

count表示根据不同bin对应观测值多少调节

sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, palette="Set2",split=True,scale="count")

38

7、点对图

刻画数据集一对变量之间相互关系,并对单变量做出分布直方图

  • 1、使用pairplot()函数绘制点对图
sns.set(style="ticks", color_codes=True)
sns.pairplot(iris)

39

  • 2、使用pandas库,也可以绘制点对图,不过比这个难些
pd.scatter_matrix(iris, diagonal='hist', color = 'b',alpha=0.3, figsize=(10, 10), marker='o')

40

  • 3、设置参数diag_kind,指定对角线子图上的类型
sns.set(style='darkgrid')
sns.pairplot(iris, diag_kind='kde', kind='reg', markers='+')

41

  • 4、选择变量,绘制点对图
sns.pairplot(iris,markers='o',x_vars=["sepal_width", "sepal_length"],y_vars=["petal_width", "petal_length"], kind='reg')

42

  • 5、通过hue作为分类,并用不同颜色标注
sns.set(style='darkgrid')
sns.pairplot(iris, vars=['sepal_width', 'sepal_length'], palette="Set1", size=3)

43

8、回归图

  • 1、使用lmplot()函数绘制数据的线性回归图
sns.lmplot(x="total_bill", y="tip", data=tips)

44

  • 2、设置hue参数,拟合出不同水平的直线
sns.lmplot(x="total_bill",y="tip",hue="smoker",data=tips,palette='Set1')

45

  • 3、设置col参数,对数据集进行分组:抽烟者和不抽烟者
sns.lmplot(x="total_bill", y="tip", col="smoker", data=tips)

46

  • 4、设置row和col参数,用性别和抽烟两个离散特征进行分组
sns.lmplot(x="total_bill", y="tip", row="sex", col="time",data=tips, size=3)

47


各位路过的朋友,如果觉得可以学到些什么的话,点个赞再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。每个小伙伴的关注都是本人更新博客的动力!!!

发布了57 篇原创文章 · 获赞 65 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_16146103/article/details/105440590
今日推荐