Pandas数据可视化工具:图表工具-Seaborn

内容来源:https://www.jiqizhixin.com/articles/2019-01-30-15


简介

在本文中,我们将研究Seaborn,它是Python中另一个非常有用的数据可视化库。Seaborn库构建在Matplotlib之上,并提供许多高级数据可视化功能。
尽管Seaborn库可以用于绘制各种图表,如矩阵图、网格图、回归图等,但在本文中,我们将了解如何使用Seaborn库绘制分布和分类图。在本系列的第二部分中,我们将了解如何绘制回归图、矩阵图和网格图。

下载Seaborn库

我们可以通过几种方式下载seaborn库。如果您正在为Python库使用pip安装程序,您可以执行以下命令来下载这个库:

pip install seaborn

或者,如果您正在使用Python的Anaconda发行版,您可以使用以下命令来下载seaborn库:

conda install seaborn

在BigQuant平台上,你可以跳过这一步,直接在策略编写中import seaborn,即可使用

数据集

我们选取财报数据17年到19年的数据进行绘制,首先在策略模板中输入如下代码:

import numpy as np
import pandas as pd
import seaborn as sns df = DataSource('financial_statement_CN_STOCK_A').read(start_date='2017-01-01',end_date='2019-01-02')
#删除Na值,否则后续绘图会报错,在进行数据挖掘时,数据清洗也同样十分重要
df = df.dropna() df.head()

'df.head()'显示了df的前五行:

head()

分布图

sns.distplot(df['fs_roe'])

这里绘制的是各个股票的净资产收益率(fs_roe),结果如下:
%E5%88%86%E5%B8%83%E5%9B%BE

联合分布图

jointplot()用于显示各列的相互分布。您需要向jointplot传递三个参数。第一个参数是要在x轴上显示数据分布的列名。第二个参数是要在y轴上显示数据分布的列名。最后,第三个参数是数据帧的名称。

我们来画一个净资产收益率(fs_roe)和总资产报酬率 (TTM)(fs_roa_ttm)的联合分布图看看能不能找到两者之间的关系,代码如下:

# 这里kind='reg'表示在画完连接图后,做出两者之间的线性关系
sns.jointplot(x='fs_roe', y='fs_roa_ttm', data=df,kind='reg')

jointplot

从图中我们可以发现两者有一定的线性关系。本文为了简洁,只使用了财务报表的数据。其中’kind’一栏代表图形类型,可使用 scatter,reg,resid,kde,hex…此处不再赘述

Pair Plot

paitplot()是一种分布图,它基本上为数据集中所有可能的数字列和布尔列的组合绘制联合图。您只需要将数据集的名称作为参数传递给pairplot()函数,如下所示:

df_0 = DataSource('west_CN_STOCK_A').read(start_date='2017-01-01',end_date='2019-01-02') df_0 = df_0.dropna() sns.pairplot(df_0)

由于财报数据列数过多,这里我们使用一致预期(west_CN_STOCK_A)
从pair plot的输出中,您可以看到一致预期中所有数字列和布尔列的分布图。

pair%20plot

要将分类列的信息添加到pair plot中,可以将分类列的名称传递给hue参数。

sns.pairplot(dataset, hue='你想用来分类的列')

本文选取的报表分类效果均不理想,读者可以使用自己找到的例子自行尝试、感受。

Rug Plot

ugplot()用于为数据集中的每个点沿x轴绘制小条。要绘制rug图,需要传递列的名称。我们来画个小的rug plot。

sns.rugplot(df['fs_roe'])

RUG%20PLOT

从输出中可以看到,与distplot()的情况一样,fs_roe的大多数实例的值都在(-50,50)之中。

Bar Plot

barplot()用于显示分类列中的每个值相对于数字列的平均值。第一个参数是分类列,第二个参数是数值列,第三个参数是数据集。例如,如果您想知道各个股票营业收入这段时间的平均值,您可以使用如下的条形图。

sns.barplot(x='instrument', y='fs_operating_revenue', data=df)

barplotex

如图,横坐标对应股票,纵坐标对应营业收入,彩色部分长度代表均值,黑色部分代表不同时间点波动的幅度(事实上每个股票对应的“柱”是有宽度的,文章原文是泰坦尼克号失事人员的信息表,此处统计的是失事男女的平均年龄。原则上x轴上元素不宜过多)

除了求平均值之外,Bar Plot还可以用于计算每个类别的其他聚合值。为此,需要将聚合函数传递给估计器。例如,你可以计算每个股票营业收入的标准差如下:

sns.barplot(x='instrument', y='fs_operating_revenue', data=df, estimator=np.std)

bAr%20plot%20std注意:此代码用到了numpy库

统计图

统计图与条形图类似,但是它显示特定列中类别的计数。例如,如果我们想要计算每日被写入财报数据的股票信息数量,我们可以使用count plot这样做:

sns.countplot(x='date', data=df)

countplot

箱线图

box plot用于以四分位数的形式显示分类数据的分布。框的中心显示了中值。从下须到盒底的值显示第一个四分位数。从盒子的底部到盒子的中部是第二个四分位数。从盒子的中间到顶部是第三个四分位数,最后从盒子的顶部到顶部胡须是最后一个四分位数。

现在我们画一个方框图,显示年龄和性别的分布。您需要将分类列作为第一个参数(在我们的示例中是年份),而数字列(在我们的示例中是净资产收益率)作为第二个参数。最后,将数据集作为第三个参数传递,请看下面的脚本:

boxplott

为使图像表达出的信息更加直接有用,方便阅读,我先对数据进行了去极值处理。(未去极值的结果在后面附上的代码中可以看到)

boxplot会自动对数据进行标记极值处理。若有数据超出某范围,则会被标记为异常值,在途中以点的形式显示。为被标记的数据则会以箱型的形式显示。“箱子”的五根线分别为数据的0%,25%,50%,75%,100%。

通过添加另一层分布,您可以使您的方框绘图更加美观。例如,如果你想查看不同季度的数据,以及他们净资产收益率的信息,你可以将不同季度的数据传递给hue参数,如下图所示:

sns.boxplot(x='fs_quarter_year', y='fs_roe', data=df_1,hue='fs_quarter_index')

boxplot%20hue

Violin Plot

小提琴图与box图类似,但是小提琴图允许我们显示与数据点实际对应的所有组件。函数的作用是:绘制小提琴的曲线图。与box plot类似,第一个参数是分类列,第二个参数是数值列,第三个参数是数据集。

让我们画一个小提琴图来展示年份和净资产收益率的分布。

sns.violinplot(x='fs_quarter_year', y='fs_roe', data=df_1)

%E5%B0%8F%E6%8F%90%E8%AF%B7

像box plot一样,您还可以使用hue参数向小提琴plot添加另一个类别变量,如下所示:

sns.violinplot(x='fs_quarter_year', y='fs_roe', data=df_1,hue='fs_quarter_index')

violinplot%20hue

现在你可以在Violin Ploe上看到很多信息。然而,不利的一面是,理解小提琴的情节需要一些时间和精力。
你可以把一个小提琴图分成两半,一半代表幸存的乘客,另一半代表没有幸存的乘客。为此,需要将True作为violinplot()函数的分割参数的值传递。然而,需要注意的是:此时hue必须有且仅有两种情况,否则代码报错。这里给出文章原文的代码:

sns.violinplot(x='sex', y='age', data=dataset, hue='survived', split=True)

(dataset为原文作者使用的DataFrame,sex、age、survived为乘客的信息表)

Violin Plot和Box Plot都非常有用。但是,根据经验,如果您向非技术人员展示数据,那么最好使用Box Plot,因为它们很容易理解。另一方面,如果你把你的研究成果展示给研究团体,那么使用Violin Plot来节省空间和在更短的时间内传达更多的信息,这会使一切变得更方便。

The Strip Plot

条形图绘制一个散点图,其中一个变量是分类变量。我们已经看到了散点图在联合图和成对图中我们有两个数值变量。在这种情况下,条形图的不同之处在于其中一个变量是分类变量,对于分类变量中的每个类别,您将看到与数字列相关的散点图。

函数的作用是:绘制小提琴的曲线图。与box plot类似,第一个参数是分类列,第二个参数是数值列,第三个参数是数据集。请看下面的代码:

sns.stripplot(x='fs_quarter_year', y='fs_roe', data=df_1)

stripplot

你可以看到各个股票每年的净资产收益率分布。数据点看起来像条。理解这种形式的数据分布有点困难,为了更好地理解数据,我们给抖动参数传递True,它会给数据添加一些随机噪声。请看下面的代码:

sns.stripplot(x='fs_quarter_year', y='fs_roe', data=df_1,jitter=True)

stipplotjitter就像小提琴图和盒子图一样,您可以使用色相参数为条形图添加额外的分类列,如下图所示:

sns.stripplot(x='fs_quarter_year', y='fs_roe', data=df_1,jitter=True,hue='fs_quarter_index')

stripplotjitterhue

同理,“split=True”同样适用,同时也要求hue的列值只有两种情况

The Swarm Plot

Swarm Plot是Strip Plot和 Violin Plots的结合。在Swarm Plot中,这些点以不重叠的方式调整。让我们画一个Swarm Plot来表示年份和净资产收益率的关系。函数的作用是:绘制小提琴的曲线图。与box plot类似,第一个参数是分类列,第二个参数是数值列,第三个参数是数据集。请看下面的代码:

sns.swarmplot(x='fs_quarter_year', y='fs_roe', data=df_1)

swarmplot

可以清楚地看到,上面的图中包含了散在的数据点,比如条形图,数据点没有重叠。相反,他们和Violin Plot很相似。

让我们使用hue参数向群图中添加另一个分类列。

sns.swarmplot(x='fs_quarter_year', y='fs_roe', data=df_1,hue='fs_quarter_index')

swarmhue

同理,“split=True”同样适用,同时也要求hue的列值只有两种情况

Combining Swarm and Violin Plots

如果您有一个庞大的数据集,不推荐使用群体图,因为它们不能很好地伸缩,因为它们必须绘制每个数据点。如果你真的喜欢群体图,一个更好的方法是结合两个图。例如,要将Swarm Plot 与 Violin Plot结合起来,代码如下:

sns.violinplot(x='fs_quarter_year', y='fs_roe', data=df_1) sns.swarmplot(x='fs_quarter_year', y='fs_roe', data=df_1, color='black')

final

总结

Seaborn是一种基于Matplotlib库的高级数据可视化库。在本文中,我们研究了如何使用Seaborn库绘制分布和分类图。这是关于Seaborn的系列文章的第1部分。在本系列的第二篇文章中,我们将了解如何在Seaborn中处理网格功能,以及如何在Seaborn中绘制矩阵和回归图。

实现源码:《Pandas数据可视化工具——Seaborn用法整理

本文由BigQuant人工智能量化投资平台原创推出,版权归BigQuant所有,转载请注明出处。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图解WinCE6.0下的内核驱动和用户驱动

图解WinCE6.0下的内核驱动和用户驱动 在《WinCE驱动程序的分类》中曾提到&#xff0c;WinCE6.0的流驱动既可以加载到内核态也可以加载到用户态。下面通过一组图片简单说明一下这两种驱动的关系。 首先编写一个流驱动WCEDrv&#xff0c;代码如下。 代码 #include <windows.h&…

人体轮廓_女性人体油画轮廓柔和生动,优美动人,你喜欢吗?

人体油画是艺术和时代的产物&#xff0c;也是艺术结晶的重要体现&#xff0c;在文艺复兴以前&#xff0c;人体艺术大都以雕塑形式来表现&#xff0c;在此之后&#xff0c;人们都以意大利威尼斯绘画为代表&#xff0c;艺术家们开始以色彩塑造人体绘画艺术。随着时代进步和人们对…

机器学习分类模型中的评价指标介绍:准确率、精确率、召回率、ROC曲线

文章来源&#xff1a;https://blog.csdn.net/wf592523813/article/details/95202448 1 二分类评价指标 准确率&#xff0c;精确率&#xff0c;召回率&#xff0c;F1-Score&#xff0c; AUC, ROC, P-R曲线 1.1 准确率&#xff08;Accuracy&#xff09; 评价分类问题的性能指标…

【转】AI-900认证考试攻略

架构师的信仰系列文章&#xff0c;主要介绍我对系统架构的理解&#xff0c;从我的视角描述各种软件应用系统的架构设计思想和实现思路。 从程序员开始&#xff0c;到架构师一路走来&#xff0c;经历过太多的系统和应用。做过手机游戏&#xff0c;写过编程工具&#xff1b;做过…

300plc与组态王mpi通讯_S7-300与S7-200之间的MPI通信

通信说明S7-200PLC与S7-300PLC之间采用MPI通讯方式时&#xff0c;S7-200PLC中不需要编写任何与通讯有关的程序&#xff0c;只需要将要交换的数据整理到一个连续的V 存储区当中即可&#xff0c;而S7-300PLC中需要在组织块OB1(或是定时中断组织块OB35)当中调用系统功能X_GET(SFC6…

ORA-01114: 将块写入文件 35 时出现 IO 错误

参考文档&#xff1a; https://blog.csdn.net/z_x_1000/article/details/17263077 https://www.cnblogs.com/login2012/p/5775602.html https://www.iteye.com/blog/yangyangcom-2200174 一、问题背景 最开始发现应用服务打不开&#xff0c;于是登录服务器发现Oracle数据关…

【转】CT影像文件格式DICOM详解

CT影像文件格式DICOM详解 DICOM简介 DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;即医学数字成像和通信&#xff0c;是医学图像和相关信息的国际标准&#xff08;ISO 12052&#xff09;。DICOM被广泛应用于放射医疗&#xff0c;心血管成像以…

fatal error lnk1120: 1 个无法解析的外部命令_3月1日七牛云存储割韭菜的应对方法...

前言早上起来看邮件&#xff0c;看到一封被七牛云割韭菜的公告&#xff1a;内心冰冰凉&#xff0c;不过大家都要吃饭的嘛总不能一直免费下去。所以来研究一下对于我们这种穷人应该如何应对。一、七牛CDN加速流程主要流程分析1、用户通过浏览器访问我的网站(腾讯云服务器)&#…

【转】DCM(DICOM)医学影像文件格式详解

1、 什么是DICOM&#xff1f; DICOM(DigitalImaging andCommunications inMedicine)是指医疗数字影像传输协定&#xff0c;是用于医学影像处理、储存、打印、传输的一组通用的标准协定。它包含了文件格式的定义以及网络通信协议。DICOM是以TCP/IP为基础的应用协定&#xff0c;并…

SM4对称加密算法及Java实现

文章来源&#xff1a;https://www.jianshu.com/p/5ec8464b0a1b 一、简介 与DES和AES算法类似&#xff0c;SM4算法是一种分组密码算法。 其分组长度为128bit&#xff0c;密钥长度也为128bit。 加密算法与密钥扩展算法均采用32轮非线性迭代结构&#xff0c;以字&#xff08;32位…

【转】DICOM网络协议(一)概述

转自&#xff1a;https://www.jianshu.com/p/8a0f0fe6a738 作者&#xff1a;我住的城市没有福合埕 DICOM (Digital Imaging and Communications in Medicine)即医学数字成像和通信&#xff0c;DICOM网络是基于TCP/IP的网络协议。通过DICOM将影像设备和存储管理设备连接起来。…

Windows进程系列(2) -- Svchost进程

在基于NT内核的Windows操作系统家族中&#xff0c;Svchost.exe是一个非常重要的进程。很多病毒、木马驻留系统与这个进程密切相关&#xff0c;因此深入了解该进程是非常有必要的。本文主要介绍Svchost进程的功能&#xff0c;以及与该进程相关的知识。      Svchost进程概述…

【转】DICOM入门(一)——语法

转自&#xff1a;https://www.jianshu.com/p/5db8933a25a4 作者&#xff1a;我住的城市没有福合埕 1.什么是DICOM DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和传输协议&#xff0c;是用医疗影像&#xff08;CT 核磁共振 DR CR 超声等&#xff0…

1000并发 MySQL数据库_再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化...

继上篇文章《绝对干货&#xff0c;教你4分钟插入1000万条数据到mysql数据库表&#xff0c;快快进来》发布后在博客园首页展示得到了挺多的阅读量&#xff0c;我这篇文章就是对上篇文章的千万级数据库表在高并发访问下如何进行测试访问这篇文章的知识点如下:1.如何自写几十行代码…

【转】VTK修炼之道1_初识VTK

1.VTK是什么&#xff1f; Visualization ToolKit 3D计算机图形学、图象处理及可视化工具包 VTK使用C、面向对象技术开发&#xff1b;基于OpenGL&#xff0c;封装了OpenGL中的功能&#xff0c;屏蔽细节、便于交互、易于使用提供多种语言接口C&#xff0b;&#xff0b; 、Java 、…

HTTPS原理和对中间件攻击的预防

一、https/tls原理 HTTPS访问的三个阶段 第一阶段 认证站点 客户端向站点发起HTTPS请求&#xff0c;站点返回数字证书。客户端通过数字证书验证所访问的站点是真实的目标站点。 第二阶段 协商密钥 客户端与站点服务器协商此次会话的对称加密密钥&#xff0c;用于下一阶段的加…

HTTPS原理全面介绍【备查】

来源&#xff1a;https://www.cnblogs.com/haimishasha/p/11373034.html 目录 应用层协议&#xff1a;HTTPS 1. HTTPS定义 2. 密码学基础  3. HTTP通信问题 4. SSL/TLS协议 5. HTTP 向 HTTPS 演化的过程 5.1 对称加密 5.2 非对称加密 5.3 对称加密非对称加密 5.4 安…

【转】VTK修炼之道2_VTK体系结构1

1.OverView综述 The Visualization Toolkit consists of two basic subsystems: a compiled C class library &#xff08;一个已经编译好的C类库&#xff09;and an “interpreted” wrapper layer&#xff08;一个用于解释的语言层&#xff09; that lets you manipulate the…

WINCE6.0 DM.EXE 激活驱动失败的原因之一

前些天把WINCE6.0的开发环境建好了&#xff0c;今天定制了一个系统&#xff0c;练习了一下驱动的编写和调试。把DLL文件通过VS2005部署到开发板上&#xff0c;用一位大侠写的DM.EXE工具进行激活&#xff0c;但是发现点击激活按钮式无反应&#xff0c;驱动还是停在“停用”状态&…

Linux:tomcat安装/版本升级

本文适用于安装或更新tomcat版本。 1.进入tomcat目录&#xff0c;查看当前tomcat版本 cd /usr/local/tomcat/bin ./version.sh 2.备份原tomcat 可以拷贝原tomcat&#xff0c;或者直接修改原tomcat的文件夹名称作为备份。 cd /usr/local/ #方法1&#xff1a;创建目录&…