热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

09炫酷的可视化工具包——cufflinks

学过Python数据分析的朋友都知道,在可视化的工具中,有很多优秀的三方库,比如matplotlib,seaborn,plotly,Boken,pyecharts等等。这些可视化库都有自己的特点,在实际应用中也广为大家使用。

plotly、Boken等都是交互式的可视化工具,结合Jupyter notebook可以非常灵活方便地展现分析后的结果。虽然做出的效果非常的炫酷,比如plotly,但是每一次都需要写很长的代码,一是麻烦,二是不便于维护。

我觉得在数据的分析阶段,更多的时间应该放在分析上,维度选择、拆解合并,业务理解和判断。如果既可以减少代码量,又可以做出炫酷可视化效果,那将大大提高效率。当然如果有特别的需求除外,此方法仅针对想要快速可视化进行分析的人。

本篇给大家介绍一个非常棒的工具,cufflinks,可以完美解决这个问题,且效果一样炫酷。

cufflinks介绍

就像seaborn封装了matplotlib一样,cufflinks在plotly的基础上做了一进一步的包装,方法统一,参数配置简单。其次它还可以结合pandas的dataframe随意灵活地画图。可以把它形容为"pandas like visualization"。

毫不夸张地说,画出各种炫酷的可视化图形,我只需一行代码,效率非常高,同时也降低了使用的门槛儿。cufflinks的github链接如下:
https://github.com/santosjorge/cufflinks

安装
pip install cufflinks

cufflinks操作

cufflinks库一直在不断更新,目前最新版为V0.14.0,支持plotly3.0。首先我们看看它都支持哪些种类的图形,可以通过help来查看。

import cufflinks as cf
cf.help()
Use 'cufflinks.help(figure)' to see the list of available parameters for the given figure.
Use 'DataFrame.iplot(kind=figure)' to plot the respective figure
Figures:
	bar
	box
	bubble
	bubble3d
	candle
	choroplet
	distplot
	heatmap
	histogram
	ohlc
	pie
	ratio
	scatter
	scatter3d
	scattergeo
	spread
	surface
	violin

09 炫酷的可视化工具包——cufflinks

  • DataFrame:代表pandas的数据框;
  • Figure:代表我们上面看到的可绘制图形,比如bar、box、histogram等等;
  • iplot:代表绘制方法,其中有很多参数可以进行配置,调节符合你自己风格的可视化图形;

cufflinks实例
注意:以下图例都是动态图,无法放置gif图,可以自己尝试一下

我们通过几个实例感受一下上面的使用方法。使用过plotly的朋友可能知道,如果使用online模式,那么生成的图形是有限制的。所以,我们这里先设置为offline模式,这样就避免了出现次数限制问题。

import pandas as pd
import cufflinks as cf
import numpy as np

cf.set_config_file(offline=True)
    

然后我们需要按照上面的使用格式来操作,首先我们需要有个DataFrame,如果手头没啥数据,那可以先生成个随机数。cufflinks有一个专门生成随机数的方法,叫做datagen,用于生成不同维度的随机数据,比如下面。

lines线图

1)cufflinks使用datagen生成随机数;
2)figure定义为lines形式,数据为(1,500);
3)然后再用ta_plot绘制这一组时间序列,参数设置SMA展现三个不同周期的时序分析。

cf.datagen.lines(1,500).ta_plot(study='sma',period=[13,21,55])

09 炫酷的可视化工具包——cufflinks

box箱型图

cf.datagen.box(20).iplot(kind='box',legend=False)

可以看到,x轴每个box都有对应的名称,这是因为cufflinks通过kind参数识别了box图形,自动为它生成的名字。如果我们只生成随机数,它是这样子的,默认生成100行的随机分布的数据,列数由自己选定。

cf.datagen.box(10)

09 炫酷的可视化工具包——cufflinks

ZZQ.IX KKT.HE WUI.GF KUD.YP LVO.BR RIQ.OH HCY.AX TSI.WB CZC.FE PGJ.UN
0 2.650637 2.860086 0.648258 0.453637 0.031173 1.588635 0.665888 1.322199 0.613859 1.887332
1 1.772565 1.223209 1.321523 5.185581 4.585844 2.950900 0.652469 0.471112 5.729238 3.034579
2 3.707357 5.745729 5.766174 1.785150 8.335558 17.388996 2.854110 5.725720 9.582913 1.221468
3 9.298724 8.008446 2.574685 3.924959 5.656232 8.797833 18.606412 10.594716 1.207231 3.901563
4 5.261365 3.498773 4.593977 6.516262 3.852370 3.402193 2.813485 2.340898 7.611254 5.423463
... ... ... ... ... ... ... ... ... ... ...
95 0.136329 2.676648 0.403378 1.018672 1.447996 1.106163 1.563319 6.315881 1.148427 0.348217
96 4.243743 0.026604 0.442303 2.650356 7.911090 1.048235 3.231528 0.850884 0.336564 0.301514
97 2.223366 3.581352 2.712159 1.141006 1.841442 4.167166 10.543993 5.589251 12.338148 4.013969
98 1.391020 0.002552 0.177377 1.865509 0.690297 0.682517 7.477029 0.261913 0.020654 0.822866
99 0.229824 1.756769 1.782207 3.621471 1.523997 4.392876 0.403206 6.899078 1.268289 7.484547

100 rows × 10 columns

histogram直方图

cf.datagen.histogram(3).iplot(kind='histogram')

和plotly一样,我们可以通过一些辅助的小工具框选或者lasso选择来区分和选定指定区域,只要一行代码。

当然了,除了随机数据,任何的其它dataframe数据框都可以,包括我们自己导入的数据。

09 炫酷的可视化工具包——cufflinks

histogram条形图

df=pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.iplot(kind='bar',barmode='stack')

09 炫酷的可视化工具包——cufflinks

上面我们生成了一个(10,4)的dataframe数据框,名称分别是a,b,c,d。那么cufflinks将会根据iplot中的kind种类自动识别并绘制图形。参数设置为堆叠模式。

scatter散点图

df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.iplot(kind='scatter',mode='markers',colors=['orange','teal','blue','yellow'],size=10)

09 炫酷的可视化工具包——cufflinks

bubble气泡图

df.iplot(kind='bubble',x='a',y='b',size='c')

09 炫酷的可视化工具包——cufflinks

scatter matrix 散点矩阵图

df = pd.DataFrame(np.random.randn(1000, 4), columns=['a', 'b', 'c', 'd'])
df.scatter_matrix()

09 炫酷的可视化工具包——cufflinks

subplots子图

df=cf.datagen.lines(4)
df.iplot(subplots=True,shape=(4,1),shared_xaxes=True,vertical_spacing=.02,fill=True)

09 炫酷的可视化工具包——cufflinks

df.iplot(subplots=True,subplot_titles=True,legend=False)

09 炫酷的可视化工具包——cufflinks

更复杂一些的

df=cf.datagen.bubble(10,50,mode='stocks')
figs=cf.figures(df,[dict(kind='histogram',keys='x',color='blue'),
                    dict(kind='scatter',mode='markers',x='x',y='y',size=5),
                    dict(kind='scatter',mode='markers',x='x',y='y',size=5,color='teal')],asList=True)
figs.append(cf.datagen.lines(1).figure(bestfit=True,colors=['blue'],bestfit_colors=['pink']))
base_layout=cf.tools.get_base_layout(figs)
sp=cf.subplots(figs,shape=(3,2),base_layout=base_layout,vertical_spacing=.15,horizontal_spacing=.03,
               specs=[[{'rowspan':2},{}],[None,{}],[{'colspan':2},None]],
               subplot_titles=['Histogram','Scatter 1','Scatter 2','Bestfit Line'])
sp['layout'].update(showlegend=False)
cf.iplot(sp)

09 炫酷的可视化工具包——cufflinks

shapes形状图

如果我们想在lines图上增加一些直线作为参考基准,这时候我们可以使用hlines的类型图。

df=cf.datagen.lines(3,columns=['a','b','c'])
df.iplot(hline=[dict(y=-1,color='blue',pink',dash='dash')])

09 炫酷的可视化工具包——cufflinks

或者是将某个区域标记出来,可以使用hspan类型。

df.iplot(hspan=[(-1,1),(2,5)])

09 炫酷的可视化工具包——cufflinks

又或者是竖条的区域,可以用vspan类型。

df.iplot(vspan={'x0':'2015-02-15','x1':'2015-03-15','color':'teal','fill':True,'opacity':.4})

09 炫酷的可视化工具包——cufflinks
如果对iplot中的参数不熟练,直接输入以下代码即可查询。

help(df.iplot)

推荐阅读
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 本文介绍了如何对PHP二维数组进行排序以及如何获取最大值。同时还提到了在数据分析系统中使用排序的实例,以及如何统计角色等级和创建角色总数。 ... [详细]
author-avatar
我是你的特效
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有