IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python数据分析11——Seaborn绘图 -> 正文阅读

[Python知识库]Python数据分析11——Seaborn绘图

目录

Seaborn介绍

Seaborn安装

官方文档

Seaborn绘图风格

sns.axes_style

sns.set_style()

sns.set

sns.despine

Seaborn颜色风格

Seaborn在Axes绘图

Seaborn绘图

关系型绘图

seaborn.relplot()

基本使用

hun参数?

添加col和row参数?

绘制折线图?

分类绘图

分类散点图

分类分布图?

分类统计图

条形图

柱形图

点线图

分布绘图

单变量分布

二变量分布?

pairplot?

线性回归绘图

补充

热力图和EDA探索性分析?


Seaborn介绍

Seaborn 是一个基于 matplotlib 且数据结构与 pandas 统一的统计图制作库。他提前已经定义好了一套自己的风格。然后也封装了一系列的方便的绘图函数,之前通过 matplotlib 需要很多代码才能实现完成的图,使用 seaborn 可能非常简单,一行代码搞定。

Seaborn安装

1.通过 pip:pip install seaborn;

2.通过 anaconda:conda install seaborn;

官方文档

官网:seaborn: statistical data visualization — seaborn 0.11.2 documentation (pydata.org)icon-default.png?t=M5H6http://seaborn.pydata.org/

中文学习文档:

An introduction to seaborn-Seaborn 0.9 中文文档 (cntofu.com)icon-default.png?t=M5H6https://www.cntofu.com/book/172/docs/1.md

Seaborn绘图风格

在seaborn中,可以通过三个函数来设置样式。分别是 sns.set_style;sns.axes_style;sns.set 方法。

sns.axes_style

(1)如果没有传任何参数,返回的是字段属性;

(2)临时的样式;

with sns.axes_style("dark",{"ytick.left":True}):
    sns.scatterplot(x="total_bill",y="tip",data=tips)

例如:

?

sns.set_style()

这个函数和?sns.axes_style 一样,也是用来设置绘图风格的。但是这个函数的风格设置,不是临时的,而是一旦设置了,那么下面所有绘图风格都会用这个风格。

sns.set_style("darkgrid")
sns.scatterplot(x="total_bill",y="tip",data=tips)

例如:

?

sns.set

set 方法也是用来设置样式的,它的功能更加强大。除了 style 以外,还可以设置调色板,字体,字体大小,颜色等,也可以设置其它的 matplotlib.rcParams可以接受的参数。

sns.set(rc={"lines.linewidth":4})
fmri = sns.load_dataset("fmri")
sns.lineplot(x="timepoint",y="signal",data=fmri)

例如:

?

sns.despine

移除轴脊柱函数;

例如:

Seaborn颜色风格

不推荐使用(使用起来不是很方便)这里不做过多的描述。

实例:

?

?

Seaborn在Axes绘图

实际上 seaborn 的绘图函数中也有大量的直接使用 Axes 进行绘图的,凡是函数名中已经明确了这个图的类型,这种图都是使用 Axes 绘图的。比如 sns.scatterplot,sns.lineplot,sns.barplot 等。Axes绘图可以直接使用之前 matplotlib 的一些设置图的元素。

fig,ax = plt.subplots(1,2,figsize=(20,5))
sns.scatterplot(x="total_bill",y="tip",data=tips,ax=ax[0])
sns.barplot(x="day",y="total_bill",data=tips,ax=ax[1])

例如绘制条形图

绘制散点图

?

Seaborn绘图

关系型绘图

seaborn.relplot()

这个函数功能非常强大,可以用来表示多个变量之间的关联关系。默认情况下是绘制散点图,也可以绘制线型图,具体绘制什么图形是通过 kind 参数来决定的。实际上一下两个函数就是relplot的特例:

散点类型:scatterplot -> relplot(kind="scatter");

线性类型:lineplot -> replot(kind="line");

基本使用

import seaborn as sns
tips = sns.load_dataset("tips",cache=True)
sns.relplot(x="total_bill",y="tip",data=tips)

hun参数?

hue 参数是用来控制第三个变量的颜色显示的。比如我们在以上图的基础上体现出星期几的参数,那么可以通过以下代码来实现:

sns.relplot(x="total_bill",y="tip",hue="day",data=tips)

添加col和row参数?

col 和 row ,可以将图根据某个属性的值的个数分割成多列或者多行。比如在以上图的基础上我们想要把 lunch 和 dinner 分割成两个图显示,则:

# col_wrap=1 控制换行
# size  点的大小
sns.relplot(x='total_bill',y='tip',data=tips,col='time',col_wrap=1,size="size")
sns.relplot(x='total_bill',y='tip',data=tips,col='time')

?

绘制折线图?

relplot 通过设置 kind="line" 可以绘制折线图。并且它的功能比 plt.plot 更加强大。plot只能指定具体的 x轴和y轴的数据。而 relplot 则可以在自动在两组数据中进行计算绘图。

"""
需求:signal与timepoint变化关系 --- > 折线图
读图
线 --- 均值
阴影  --- 置信区间
    ci=None
style:region    不同区域使用线条样式不一样 
"""
sns.relplot(x='timepoint',y='signal',data=fmri,kind='line',ci=None,hue="region",col="event",style="region")

?

分类绘图

分类图的绘制,采用的是 sns.catplot 来实现的。cat是category的简写,这个方法默认绘制的是 分类散点图,如果想要绘制其他类型的图,同样也是通过 kind 参数来指定。

主要分为

(1)分类散点图;

(2)分类分布图;

(3)分类统计图;

分类散点图

分类散点图比较适合数据量不是很多的情况,它是用 catplot 来实现的,但是也有一下两种特别地方法:

(1)stripplot():catplot(kind="strp")默认的;

(2)swarmplot():catplot(kind="swarm");

sns.catplot(x="day",y="total_bill",data=tips,hue="sex")

?

"""
分簇散点图

缺点  数据量巨大 不适用
"""
sns.catplot(x="day",y="total_bill",data=tips,hue="sex",kind="swarm")

分类分布图?

分类分布图,主要是根据分类来看,然后在每个分类下的数据的分布情况。也是通过 catplot

?来实现的,以下三个方法分别是不同的 kind 的参数:

(1)箱型图:boxplot()? ? ? ? (kind="box")

(2)小提琴图:vioinplot()? ? ? ? (kind=”violin")

?

分类统计图

分类统计图,则是根据分类,统计每个分类下的数据的个数或者比例。有以下几种方式:

(1)条形图:barplot()? ? ? ? (kind="bar")

(2)柱形图:countplot()? ? ? ? (kind="count")

(3)点线图:pointplot()? ? ? ? (kind="point")

条形图

seaborn 中的条形图具有统计功能,可以统计处比例,平均数,也可以按照你想要的统计函数来统计。

"""
分类统计图
需求:直观体现不同日期total_bill数量
黑色线  置信区间  线条越长意味数据比较离散

estimator :函数

"""
sns.catplot(x='day',y='total_bill',data=tips,kind='bar',estimator=sum)

?

柱形图

柱形图是专门用来统计某个单一变量出现数量的图形。

sns.catplot(x="sex",data=titanic,kind="count")

点线图

点线图可以非常方便的看到变量之间的趋势变化。

sns.catplot(x="sex",y="survived",data=titanic,kind="point",hue="class")

?

分布绘图

分布绘图主要分为单变量分布以及二变量分布和pairplot;

单变量分布

单一变量主要就是通过直方图控制的,在 seaborn 种直方图的绘制采用的是 distplot,其中 dist 是 distribution的简写,不是 histogram 的简写。

titanic = pd.read_csv("./seaborn-data-master/titanic.csv")
titanic.head()
sns.distplot(titanic["age"])

参数变化

"""
需求:观察所有人年龄的分布情况

单变量分布图 -- > 直方图
- kde  是否展示kde曲线
- bins  指定组数
- rug  越密集数据越集中
- hist  是否展示直方图
"""
sns.distplot(age_titanic['age'],bins=30,rug=True,hist=False)

二变量分布?

多变量分布图可以看出两个变量之间的分布关系。一般都是采用多个图进行表示。多变量分布图采用的函数是 jointplot。

"""
二变量分布
kind='hex'  六边形的点
gridsize    点的大小
height      图形大小 20*20
ratio       主图和副图之间比例
space       主图和副图之间距离

marginal_kws
"""
sns.jointplot(x='total_bill',y='tip',data=tips,kind='hex',gridsize=15,height=5,ratio=3,space=0,marginal_kws={"rug":True,"kde":True},color="red")

pairplot?

通常用来机器学习建立模型之前选择合适的模型。

sns.pairplot(tips,vars=["total_bill","tip"])

线性回归绘图

线性回归图可以帮助我们看到数据的关系趋势。在 seaborn 种可以通过 regplot 和lmplot两个函数实现。regplot 的 x 和 y 可以为 Numpy数组,Series等变量。而lmplot的x和y必须为字符串,并且 data的值不能为空:

(1)regplot(x,y,data=None);

(2)lmplot(x,y,data)。

补充

热力图和EDA探索性分析?

#输入需要使用的库
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import seaborn as sns
from pandas_profiling import ProfileReport
"""数据分析"""
#热力图
# 分析各特征之间的相关性并可视化。
plt.figure(figsize=(15,10))
sns.heatmap(dataset.corr(),annot=True)



#EDA探索性分析
profile = ProfileReport(dataset, title='EDA', explorative=True)

#"第一个不行用第二个"   https://blog.csdn.net/weixin_44527237/article/details/110096564
profile.to_widgets()
profile.to_notebook_iframe()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:00:05  更:2022-06-29 19:03:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:10:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码