数据可视化 | Seaborn

举报
DrugAI 发表于 2021/07/15 01:48:18 2021/07/15
【摘要】 Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。 Python中的一个制图工具库,可以制作出吸引人的、信息量大的统计图 在Matplotlib...

Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。

  • Python中的一个制图工具库,可以制作出吸引人的、信息量大的统计图

  • 在Matplotlib上构建,支持numpy和pandas的数据结构可视化。

  • 多个内置主题及颜色主题

  • 可视化单一变量、二维变量用于比较数据集中各变量的分布情况

  • 可视化线性回归模型中的独立变量及不独立变量


  
  1. import numpy as np
  2. import pandas as pd
  3. # from scipy import stats
  4. import matplotlib.pyplot as plt
  5. import seaborn as sns
  6. # %matplotlib inline

数据集分布可视化

单变量分布 sns.distplot()

 


  
  1. # 单变量分布
  2. x1 = np.random.normal(size=1000)
  3. sns.distplot(x1);
  4. x2 = np.random.randint(0, 100, 500)
  5. sns.distplot(x2);

运行结果:

 

 

直方图 sns.distplot(kde=False)

 


  
  1. # 直方图
  2. sns.distplot(x1, bins=20, kde=False, rug=True)

运行结果:

 

核密度估计 sns.distplot(hist=False) 或 sns.kdeplot()

 


  
  1. # 核密度估计
  2. sns.distplot(x2, hist=False, rug=True)

运行结果: 

双变量分布

 


  
  1. # 双变量分布
  2. df_obj1 = pd.DataFrame({"x": np.random.randn(500),
  3. "y": np.random.randn(500)})
  4. df_obj2 = pd.DataFrame({"x": np.random.randn(500),
  5. "y": np.random.randint(0, 100, 500)})

散布图 sns.jointplot()

 


  
  1. # 散布图
  2. sns.jointplot(x="x", y="y", data=df_obj1)

运行结果:

 

二维直方图 Hexbin sns.jointplot(kind=‘hex’)

示例代码:


  
  1. # 二维直方图
  2. sns.jointplot(x="x", y="y", data=df_obj1, kind="hex");

运行结果:

 

核密度估计 sns.jointplot(kind=‘kde’)

 


  
  1. # 核密度估计
  2. sns.jointplot(x="x", y="y", data=df_obj1, kind="kde");

运行结果:

 

数据集中变量间关系可视化 sns.pairplot()

 


  
  1. # 数据集中变量间关系可视化
  2. dataset = sns.load_dataset("tips")
  3. #dataset = sns.load_dataset("iris")
  4. sns.pairplot(dataset);

运行结果:

 

类别数据可视化


  
  1. #titanic = sns.load_dataset('titanic')
  2. #planets = sns.load_dataset('planets')
  3. #flights = sns.load_dataset('flights')
  4. #iris = sns.load_dataset('iris')
  5. exercise = sns.load_dataset('exercise')

类别散布图

sns.stripplot() 数据点会重叠

 

sns.stripplot(x="diet", y="pulse", data=exercise)

 

运行结果:

 

sns.swarmplot() 数据点避免重叠,hue指定子类别

 

sns.swarmplot(x="diet", y="pulse", data=exercise, hue='kind')

 

运行结果: 

类别内数据分布

盒子图 sns.boxplot(), hue指定子类别

示例代码:


  
  1. # 盒子图
  2. sns.boxplot(x="diet", y="pulse", data=exercise)
  3. #sns.boxplot(x="diet", y="pulse", data=exercise, hue='kind')

运行结果:

 

小提琴图 sns.violinplot(), hue指定子类别

 


  
  1. # 小提琴图
  2. #sns.violinplot(x="diet", y="pulse", data=exercise)
  3. sns.violinplot(x="diet", y="pulse", data=exercise, hue='kind')

运行结果:

 

类别内统计图

柱状图 sns.barplot()

示例代码:


  
  1. # 柱状图
  2. sns.barplot(x="diet", y="pulse", data=exercise, hue='kind')

运行结果:

 

点图 sns.pointplot()

 


  
  1. # 点图
  2. sns.pointplot(x="diet", y="pulse", data=exercise, hue='kind');

运行结果:

 

参考资料

http://seaborn.pydata.org/

 

文章来源: drugai.blog.csdn.net,作者:DrugAI,版权归原作者所有,如需转载,请联系作者。

原文链接:drugai.blog.csdn.net/article/details/104287663

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。