前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据科学篇| Seaborn库的使用(四)

数据科学篇| Seaborn库的使用(四)

作者头像
润森
发布2019-09-02 18:00:14
1.2K0
发布2019-09-02 18:00:14
举报
文章被收录于专栏:毛利学Python毛利学Python

第一时间送达Python 技术干货!

Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。

安装 Seaborn

要安装最新版本的seaborn,您可以使用pip:

pip install seaborn 也可以使用conda以下方法安装发布的版本:

conda install seaborn

用法

  • sns.图名(x='X轴 列名', y='Y轴 列名', data=原始数据df对象)
  • sns.图名(x='X轴 列名', y='Y轴 列名', hue='分组绘图参数', data=原始数据df对象)
  • sns.图名(x=np.array, y=np.array[, …])

绘制散点图

  • 最常用的是relplot()。这是一个图形级函数,用于使用两种常见方法可视化统计关系:散点图和线图。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 加载样式
sns.set(style="darkgrid")
# 加载数据集tips
tips = sns.load_dataset("tips")
# x,y标轴
sns.relplot(x="total_bill", y="tip", data=tips)
# 根据数据集的其他列来划分数据并对应的样式
sns.relplot(x="total_bill", y="tip", hue="smoker", style="smoker",data=tips)

绘制线图

  • lineplot() 直接或relplot()通过设置来完成kind="line"
df = pd.DataFrame(dict(time=np.arange(500),
                       value=np.random.randn(500).cumsum()))
sns.relplot(x="time", y="value", kind="line", data=df)

注意:

  • 对于日期需要添加g.fig.autofmt_xdate()来解决x坐标的乱码问题
df = pd.DataFrame(dict(time=pd.date_range("2017-1-1", periods=500),
                       value=np.random.randn(500).cumsum()))
g = sns.relplot(x="time", y="value", kind="line", data=df)
g.fig.autofmt_xdate()

显现多图

对于数据集直接加上col参数

sns.relplot(x="total_bill", y="tip", hue="smoker",
            col="time", data=tips)

分类数据绘图

  • catplot将x的数据分类出来
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="ticks", color_codes=True)
tips = sns.load_dataset("tips")
sns.catplot(x="day", y="total_bill", data=tips)
  • 绘制箱线图(只要加上kind="box"的参数就可以了)
sns.catplot(x="day", y="total_bill", kind="box", data=tips)
  • 绘制小提琴图(kind="violin")
sns.catplot(x="day", y="total_bill", kind="violin", data=tips)

在这里插入图片描述

  • 条形图
sns.catplot(x="day", y="total_bill",hue="size", kind="bar", data=tips)

重点:可视化数据集的分布

对于上面的画图知识点太过单调唯一

  • 绘制单变量分布

单变量分布的最方便的方法是distplot()功能。默认情况下,这将绘制直方图并拟合核密度估计(KDE)

x = np.random.normal(size=100)
sns.distplot(x)
  • 拟合参数分布

使用的是stats来拟合数据,distplot 本来就有拟合参数,绘制KDE图的功能

from scipy import stats
x = np.random.gamma(6, size=200)
sns.distplot(x, kde=False, fit=stats.gamma)

重点:绘制双变量分布

在seaborn中执行此操作的最简单方法是使用该jointplot()函数,该函数创建一个多面板图形,显示两个变量之间的双变量(或联合)关系以及每个变量在单独轴上的单变量(或边际)分布。

对于机器学习是常用的工具

mean, cov = [0, 1], [(1, .5), (.5, 1)]
# 多元高斯分布
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["x", "y"])
# 散点分布
sns.jointplot(x="x", y="y", data=df)
# 核密度分布
sns.jointplot(x="x", y="y", data=df, kind="kde")

可视化数据集中的成对关系

  • 使用该pairplot()函数。这将创建一个轴矩阵,并显示DataFrame中每对列的关系
iris = sns.load_dataset("iris")
sns.pairplot(iris)

对于seaborn个人绝对还有一个必须要写的东西就是回归

seaborn无需调用sklearn来处理回归问题

  • regplot()显示通过回归确定的线性关系
# 还是tips数据集
sns.regplot(x="total_bill", y="tip", data=tips)

在这里插入图片描述

  • lmplot()比regplot()拟合更好,还能适应多项式回归模型
sns.lmplot(x="total_bill", y="tip", data=tips)

参考:

http://seaborn.pydata.org/

文章首发于:

https://blog.csdn.net/weixin_44510615/article/details/89528624

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 Seaborn
  • 用法
  • 绘制散点图
  • 绘制线图
  • 显现多图
  • 分类数据绘图
  • 重点:可视化数据集的分布
  • 重点:绘制双变量分布
  • 可视化数据集中的成对关系
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档