(5条消息) 详细的数据可视化库之Seaborn教程(一)

文章目录

  • seaborn(一)——可视化统计量间的关系(relationship)
  • sns.relplot()
    • 一、散点图:relplot(kind="scatter")
      • 参数hue
      • hue+ hue_order
      • hue+palette
      • 参数style
      • hue+style
      • 参数size
      • size+sizes
    • 二、曲线图:relplot(kind="line")
      • 数据集为fmri
      • kind="line"
      • ci=None 控制不显示聚合的阴影
      • ci="sd" 控制聚合的算法
      • 关闭聚合:estimator= None
      • hue:利用颜色区分
      • style:利用形状区分
      • hue+ style
      • style结合dashes+markers可设置不同分类的标记样式
      • units: ??我没有明白这个
      • hue为连续型数值
      • size: 可用来控制线条宽度
    • 用date数据画图
    • 三、使用子图展示多重关系

seaborn(一)——可视化统计量间的关系(relationship)

seaborn关注的是统计量之间的关系。
x,y一般为数值型数据,关注两个数值变量之间的关系

可以绘制出曲线图和散点图

sns.relplot()

  • relplot():

    • sns.replot(kind=“scatter”),相当于scatterplot() 用来绘制散点图
    • sns.replot(kind=“line”),相当于lineplot() 用来绘制曲线图

本例中,我们的数据集采用库自带的小费数据集tips。
tips小费数据集:
是一个餐厅服务员收集的小费数据集,包含了7个变量:
总账单、小费、顾客性别、是否吸烟、日期、吃饭时间、顾客人数

import matplotlib.pyplot as pltimport seaborn as snsimport pandas as pdimport numpy as nptips= sns.load_dataset("tips")tips.head()
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
tips.dtypes
total_bill     float64tip            float64sex           categorysmoker        categoryday           categorytime          categorysize             int64dtype: object

replot常用参数
x: x轴
y: y轴
hue: 在某一维度上,用颜色区分
style: 在某一维度上, 用线的不同表现形式区分, 如 点线, 虚线等
size: 控制数据点大小或者线条粗细
col: 列上的子图
row: 行上的子图
kind: kind= ‘scatter’(默认值)
   kind='line’时候,可以通过参数ci:(confidence interval)参数,来控制阴影部分,如,ci=‘sd’ (一个x有多个y值)
   也可以关闭数据聚合功能(urn off aggregation altogether), 设置estimator=None即可
data

以下,结合具体使用效果来理解一下。

一、散点图:relplot(kind=“scatter”)

replot出的图默认为散点图。

sns.relplot(x='total_bill', y='tip', data=tips)

可视化后,可以看出:
给的小费大小集中在[0,6]
账单集中在[7,36]

可以看出,消费高的小费多。


参数hue

hue
用不同的颜色区分出来
在smoker维度,smoker:取值有:No、Yes 蓝yes橙no

sns.relplot(x='total_bill', y='tip',  data=tips, hue='smoker')
<seaborn.axisgrid.FacetGrid at 0x392c25f8>

图上有3个维度的信息:
total_bill(x)、tip(y)、smoker(不同颜色)

hue+ hue_order

可以通过hue_order(一个list)来控制图例中hue的顺序。如果不设置的话,就会自动根据data来进行设定。
如果hue是数字型连续值,hue_order就没有什么关系了。


hue+palette

palette自定义颜色范围

set(tips.day) #    {'Fri', 'Sat', 'Sun', 'Thur'}sns.relplot(x='total_bill', y='tip',  data=tips, hue='day')
sns.relplot(x='total_bill', y='tip',  data=tips, hue="day", palette="ch:r=-.5,l=.75")

跟哪天吃饭好像没什么关系,看不出来一个渐变色的走势。


参数style

style
不同的表示形状上区分
性别维度上,不同的性别, 原点:Male 叉叉:Female

sns.relplot(x='total_bill', y='tip',  data=tips, style='sex')

图上有3个维度的信息:
total_bill、tip、sex
x、y、不同形状

可以看出,给小费的男性多,男性给的小费高一点,是不是?你还可以看出来什么信息呢?


hue+style

hue+style
抽烟的女性:蓝色+叉叉
抽烟的男性:蓝色+原点
不抽烟的女性:橘色+叉叉
不抽烟的男性:橘色+原点

sns.relplot(x='total_bill', y='tip',  data=tips, hue='smoker', style='sex')

图上有4个维度的信息了:
total_bill、tip、smoker、sex
x、y、不同颜色、不同形状

看出了什么?
给高小费的(超过5的),竟然大都是不抽烟的男性(橘色+原点)


参数size

控制点的大小或者线条粗细
巧妙引入size维度(顾客人数)信息

sns.relplot(x='total_bill', y='tip', data=tips, hue='smoker', style='sex', size='size')

图上有5个维度的信息了

图上可以看出,人多消费大,消费大小费高
你还看出了什么呢?
展示的信息量太多了,太丰富了,这个图反而太复杂而让我们不好解析它了

sns.relplot(x='total_bill', y='tip', data=tips,size='size')set(tips['size'])#size的取值(顾客数)有:1,2,3,4,5,6人

size+sizes

如用size=(20,200)控制size的范围

sns.relplot(x='total_bill', y='tip', data=tips, size="size", sizes=(20, 200))


二、曲线图:relplot(kind=“line”)

数据集为fmri

fmri= sns.load_dataset("fmri")fmri.head()
subject timepoint event region signal
0 s13 18 stim parietal -0.017552
1 s5 14 stim parietal -0.080883
2 s12 18 stim parietal -0.081033
3 s11 18 stim parietal -0.046134
4 s10 18 stim parietal -0.037970
fmri.dtypes
subject       objecttimepoint      int64event         objectregion        objectsignal       float64dtype: object
set(fmri.region)  #    {'frontal', 'parietal'}#如何将object转成category类型:fmri['region']=fmri['region'].astype('category')fmri.region.dtype
CategoricalDtype(categories=[u'frontal', u'parietal'], ordered=False)

先用散点图看一下它的数据分布情况:

sns.relplot(x="timepoint", y="signal", data=fmri)

kind=“line”

kind=“line” 就是lineplot()

一个x有多个y,怎么聚合呢?默认的是aggregate the multiple measurements at each x value by plotting the mean and the 95% confidence interval around the mean:

sns.relplot(x="timepoint", y="signal", data=fmri, kind="line")

ci=None 控制不显示聚合的阴影

sns.relplot(x="timepoint", y="signal", data=fmri, kind="line", ci=None)

ci=“sd” 控制聚合的算法

sns.relplot(x="timepoint", y="signal", data=fmri, kind="line", ci="sd")

关闭聚合:estimator= None

展示其数据最原始的情形,“曲线版的散点图”:

sns.relplot(x="timepoint", y="signal", data=fmri, kind="line",estimator=None)

hue:利用颜色区分

sns.relplot(x="timepoint", y="signal", data=fmri, kind="line",hue="event")

style:利用形状区分

sns.relplot(x="timepoint", y="signal", style="region", kind="line", data=fmri)

hue+ style

sns.relplot(x="timepoint", y="signal", hue="event", style="region", kind="line", data=fmri)

style结合dashes+markers可设置不同分类的标记样式

sns.relplot(x="timepoint", y="signal", hue="event", style="region", kind="line", dashes=False, markers=True, data=fmri)

units: ??我没有明白这个

当有多次的采样单位时,可以单独绘制每个采样单位,而无需通过语义区分它们。这可以避免使图例混乱。
说了这么多还是没有明白。。。。。

set(fmri.subject)sns.relplot(kind="line",data=fmri.query("event=='stim'"), x="timepoint", y="signal", hue="region", units="subject",estimator=None)

lineplot色调和图例的处理还取决于hue是分类型数据or连续型数据

hue为连续型数值

dots= sns.load_dataset("dots").query("align== 'dots'")print(dots.head())print(dots.dtypes)
  align choice  time  coherence  firing_rate0  dots     T1   -80        0.0    33.1899671  dots     T1   -80        3.2    31.6917262  dots     T1   -80        6.4    34.2798403  dots     T1   -80       12.8    32.6318744  dots     T1   -80       25.6    35.060487align           objectchoice          objecttime             int64coherence      float64firing_rate    float64dtype: object

相关性coherence是连续型数值
看看图例看看颜色:
颜色越重的相关性越强

sns.relplot(x="time", y="firing_rate", hue="coherence", style="choice", kind="line", data=dots)

size: 可用来控制线条宽度

也可以用size表达coherence
相关性越大,线条越粗

sns.relplot(x="time", y="firing_rate", size="coherence",  style="choice", kind="line", data=dots)

用date数据画图

data.head()
date date_block_num shop_id item_id item_price item_cnt_day
0 2013-01-02 0 59 22154 999.00 1.0
1 2013-01-03 0 25 2552 899.00 1.0
2 2013-01-05 0 25 2552 899.00 -1.0
3 2013-01-06 0 25 2554 1709.05 1.0
4 2013-01-15 0 25 2555 1099.00 1.0

seaborn结合matplotlib的xlim()和ylim()设置坐标范围

g= sns.relplot(x="date", y="item_cnt_day", data=data)#设置x轴 y轴范围:plt.xlim("2014-01","2014-12")plt.ylim(0,600)#设置x轴 y轴刻度:#plt.xticks=g.fig.autofmt_xdate()#日期的排列根据图像的大小自适应

三、使用子图展示多重关系

参数col、row可以帮助我们实现。
col=“sex” 有几种sex,就有几列图(2种male和female,2列图)
row=“smoker” 有几种smoker,就有几行图
col=“subject”, col_wrap=3 subject特别多,可以控制显示的图片的行数

sns.relplot(x="total_bill", y="tip", col="sex", data=tips)
sns.relplot(x="total_bill", y="tip", row="smoker", data=tips)
sns.relplot(x="total_bill", y="tip", row="smoker", col="sex", data=tips)
sns.relplot(x="timepoint", y="signal",             hue="event", style="event",            col="subject", col_wrap=3,             data=fmri.query("region=='frontal'"),             kind="line",            linewidth=2.5,            aspect=1, #长宽比,该值越大图片越方            height=3)
(0)

相关推荐

  • Seaborn官方教程中文教程(一)

    seaborn官方文档翻译 统计分析是理解数据集中各个变量彼此关系的重要过程,通过统计分析,我们就可以洞见数据中隐藏的趋势和规律,更好的揭示数据之间的关系. 在本教程中我们主要讨论三种seaborn函 ...

  • Python数据可视化库seaborn的使用总结

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

  • 第127天:Seaborn-可视化分类数据

    上一篇我们介绍了可视化表示数据集中各变量间关系的基本方法.在示例中,我们专注于两个数值变量之间的主要关系.如果其中一个主要变量是"可分类的"(能被分为不同的组),那么我们可以使用更 ...

  • 如何利用Seaborn绘制热力图?

    如何利用Seaborn绘制热力图? 这是本学期在大数据哲学与社会科学实验室做的第八次分享了. 第一次分享的是: 如何利用"wordcloud+jieba"制作中文词云? 第二次分享 ...

  • Seaborn 使用超简单入门

    来源:Python与算法社区 今天学习 seaborn ,seaborn 是基于matplotlib开发的,提供更高一级的接口,做出的可视化图更加具有表现力. 下面介绍 seaborn 库的入门使用方 ...

  • 第126天:Seaborn-可视化统计关系

    大数据一直是近几年来比较火爆的方向,作为想接触大数据的你,就不得不了解 seaborn.它是当下 Python 非常流行的数据可视化库,可以绘制出美观且有价值的图形.用一句话总结就是对于大数据从业人员 ...

  • (14条消息) 小程序云开发库详情页跳转(云数据库中调取数据)

    最近在尝试小程序的云开发,弄了很久查了很多博客才总算把详情页的跳转弄出来了.因为是从云数据库中调取数据,所以真的尝试了很多方法,希望能够分享给那些也同样遇到问题的朋友. 首先,肯定是有准备两个页面的, ...

  • 深度盘点 | 史上最全python数据可视化库

    有多少同学和小编一样,学习python的主要目的,是为了实现数据可视化?

  • Python数据可视化库有哪些?Python入门

    现如今,数据已经渗透到每一个行业和业务职能领域,成为重要的生产因素,正因如此数据分析岗位变得异常火爆.而Python作为数据分析的首选语言,它不仅有着独特的优势,还为数据分析提供了很多库,那么常见的P ...

  • folium:地图数据可视化库

    folium是一个基于leaflet.js的python地图库,可以通过folium来操纵数据,并将其可视化. 安装 !pip3 install folium 最简单的地图 这里我使用哈尔滨(45.7 ...

  • 编程干货|这么多Python数据可视化库,你最喜欢哪个?

    而这个问题就正好涉及到了Python的数据可视化了. 很多同学学习Python的主要目的就是为了实现数据可视化. 而如何将我们的数据的特征更好的.更直观的展示出来,Python给出了很多解决方案. 今 ...

  • 盘点12个Python数据可视化库,通吃任何领域

    大家普遍第一次接触到的Python数据可视化库基本上都是Matplotlib.Python还有很多数据可视化库,本文盘点了12款常用的Python数据可视化库,挑选适合自己业务的那一款吧! 深入学习P ...

  • (8条消息) Python3.x标准模块库目录

    文本 1. string:通用字符串操作 2. re:正则表达式操作 3. difflib:差异计算工具 4. textwrap:文本填充 5. unicodedata:Unicode字符数据库 6. ...

  • (4条消息) 全面解读数据中台、数据仓库和数据湖

    浪尖聊大数据-浪尖 2021-07-24 12:39:00 122 收藏 文章标签: 数据仓库 lamp scipy zk makefile 一站式学习AI基础知识+核心技术+实操教程+免费工具集9大 ...