探索性的数据分析是一种态度,是一种灵活性,是一种去寻找那些咱们认为不存在的事物以及咱们置信存在的事物的志愿。— John W Tukey
在数据迷信畛域,数据可视化的重要性和必要性并没有失去足够的器重。 一张图片胜过一言半语,这句话实用于任何与数据相干的我的项目的生命周期中。 然而很多时候,实现这些可视化的工具往往不够智能。 事实上这意味着,只管咱们有数以百计的可视化库,但其中绝大多数都要求用户本人编写大量代码能力绘制简略图形。 这会让人们的关注焦点转移到可视化的外部机制上,而不是真正重要的货色:数据内的关系上。
如果说当初有一种工具能够通过向用户举荐相干的可视化倡议来简化数据摸索的过程呢?一个名为Lux????的新库横空出世,它正是为解决这些问题而开发的。
以后高效数据摸索面临的挑战
现在,数据分析师能够应用多种工具进行数据摸索。 只管交互式Jupyter笔记本容许人们在其之上迭代试验,还有一些弱小的BI工具,如Power BI和Tableau,让普通人仅需单击遍可实现高级别的数据摸索,可即使有这些功能强大的工具问世,妨碍数据摸索流程的挑战依然存在。 当咱们从在脑中剖析问题转向在理论探寻可行的解决方案时尤其如此。 让咱们看一下数据分析师以后面临的三个次要的、可辨认的阻碍:
代码与交互工具之间的脱节
尽管须要编程的工具提供了灵活性,然而编程教训较少的人通常不会应用它们。 另一方面,尽管点击交互的工具易于应用,但它们的灵活性无限且难以自定义。
绘图须要大量代码和先决条件
其次,须要创立可视化时,咱们首先须要思考的是所有的规格该当如何被可视化。 之后咱们须要将这些规格的细节信息转换为代码。 上图显示了在两个风行的python库(Matplotlib和Plotly)中,仅仅是为了输入一个柱状图就须要大量的的代码。 这种状况同样会影响数据浏览,尤其是当用户对所要查找的内容只有含糊的概念时。
试错是一个即繁琐又令人窒息的过程
每次EDA(Exploratory data analysis)都须要一直的重复试验。 用户必须先试验多种可视化成果,而后能力确定最终的可视化成果。 剖析人员有可能会因而错过数据集中的要害信息。 另一个常见的问题是剖析人员可能并不知道应该对数据执行哪些操作能力取得所需的要害信息,并且他们往往会迷失方向,无奈剖析出无效的论断。
在人们剖析和思考他们的数据与理论如何解决数据能力取得有价值的信息之间存在显著的鸿沟。 Lux正是解决这些可能的鸿沟一步。
Lux
Lux是一个旨在通过主动执行某些方面的数据探查,来帮忙用户摸索和发现他们数据中的有意义的见解的Python库。它试图弥合代码与交互式界面之间的鸿沟。Lux以一种表意语言的形式,使得在用户仅仅给出一个含糊的剖析用意的状况下,它也能主动推断出其中未指定的细节并决定适当的可视化映射。
Lux的指标是,即便数据科学家对还没想好他们须要什么有用的信息,他们也能够更轻松地摸索数据。
- Lux将交互式可视化的性能间接集成进了Jupyter notebooks,以弥合代码与交互式界面之间的鸿沟。
- Lux应用弱小的表意语言,容许用户指定其在剖析中感兴趣的局部以升高编程老本。
- Lux会主动向用户提供数据的可视化倡议。
当初,咱们对Lux怎么参加用户摸索数据时遇到的常见问题有了一个清晰的意识。 当初让咱们来看一个应用Lux库的示例。 为了提供一个疾速演示,我将应用一个简略的案例。 在你对这个例子有了清晰地意识之后,便能够将其与你抉择的数据集联合应用。
案例钻研:剖析Palmer Penguins????数据集
Palmer企鹅数据集目前已成为数据科学界的新宠,它是被适度应用的Iris数据集的间接替代品。 该数据集蕴含344个企鹅的数据。 数据由Kristen Gorman博士和南极洲Palmer Station站收集并提供。 首先让咱们装置并导入Lux库。你能够通过Binder在Jupyter notbook中持续浏览本教程。
装置
pip install lux-api# 激活Jupyter notebook扩大jupyter nbextension install --py luxwidgetjupyter nbextension enable --py luxwidget# 激活Jupyter lab拓展jupyter labextension install @jupyter-widgets/jupyterlab-managerjupyter labextension install luxwidget
无关如何将Lux与SQL引擎配合应用的更多详细信息,请浏览文档,该文档十分详实并且蕴含许多入手示例。
导入必要的库与数据集
一旦Lux库装置结束,咱们就能够导入数据集了。
import pandas as pdimport luxdf = pd.read_csv('penguins_size.csv')df.head()
Lux的一个不错的点是它能够与Pandas框架一起应用并且无需对现有的格局进行任何批改。 比如说,如果你想删除任何行或列,Lux的倡议会依据更新的dataframe生成。Pandas中的删除列,导入CSV等优良的性能也被保留。 接下来让咱们来概览一下数据集。
df.info()
数据集里有些空值,让咱们解脱它们。
df = df.dropna()
当初咱们的数据已被加载至内存,接下来看Lux如何为咱们简化EDA的流程。
应用Lux进行EDA:反对可视化dataframe工作流
df
当dataframe被打印进去时,咱们看到的是Pandas默认的表格格局。咱们能够点击切换来取得由Lux主动生成的一组可视化倡议。
Lux中的倡议组织在三个不同的选项卡中,别离示意用户能够在其摸索过程中能够采取的下一步。
相关性选项卡: 显示定量属性之间的成对关系,按最高相干至最低相干排序。
咱们能够看到企鹅鳍的长度与体重呈正相干。 企鹅嘴峰(culmen)的长度和深度也显现出一些乏味的模式,它们显然存在着某种负相关。 具体来说,“嘴峰”就是鸟类的上脊。
散布选项卡: 显示一组单变量散布,按偏度从大到小排序。
呈现率选项卡: 显示了一组从数据集中生成的条形图。
此选项卡展现了三种不同的企鹅 - Adelie,Chinstrap 和 Gentoo。 还有三个不同的岛屿,别离是Torgersen,Biscoe 和 Dream。 被蕴含在数据集中雄性和雌性呈现率也能在图表中分明的看到。
基于用意的倡议
除了根本的举荐性能外,咱们还能够指定剖析用意。 比方说,咱们想找出嘴峰长度随企鹅物种变动的模式。 咱们能够在此处将用意设置为['culmen_length_mm','species']
。再次打印数据框时,就能够看到举荐曾经编程与咱们指定的用意相干的内容。
df.intent = ['culmen_length_mm','species']df
在下图的左侧,咱们看到的是与所选属性绝对应的Current Visualization
。 右侧则是Enhace
:即在向以后抉择中增加属性时会产生什么。 还有Filter
选项卡,容许在固定抉择的变量的同时增加过滤器。
如果咱们仔细观察物种外部的相关性,则会发现嘴峰长度和深度是正相干的,与之前的揣测正相反。 这是一个典型的辛普森悖论)的例子。
最初,通过比拟鳍状肢的长度与嘴峰的长度,咱们能够很分明地将这三个物种离开。
用插件导出可视化后果
Lux使得导出和分享生成的可视化后果变得异样简略。这些可视化图表能够以如下形式被导出成动态的HTML文件:
df.save_as_html('file.html')
咱们还能够通过recommendation
属性取得为dataframe生成的倡议集。 它的返回格局为字典,由举荐类别的名称形成字典的关键字。
df.recommendation
以代码的格局导出可视化后果
咱们不仅能够将可视化导出为HTML,还能够将其导出为代码。 上面的GIF显示了如何在发生率选项卡中查看第一个条形图的代码。 之后咱们能够将可视化后果导出成代码至Altair中,以便进行进一步编辑或作为Vega-Lite标准。 你能够在这个文档中找到更多详细信息。
相干资源和练习
下面的一系列演示只是一个简略的入门教程。 Lux的Github中蕴含许多资源以及无关如何应用Lux的交互式Binder notebook。 那里将会是一个很好的终点。 此外,这里还有还有具体的文档。
lux-binder
论断与下一步
在以上文章中,咱们看到了如何通过应用Lux来齐全转换Jupyter notebook中的数据分析工作流。 Lux提供了更多的视觉丰富性以激励有意义的数据摸索。 Lux仍在踊跃开发中,其维护者心愿从正在应用或可能对应用Lux感兴趣的用户失去更多反馈。 如果您有趣味为这个库做奉献,请填写以下表格。 这将帮忙团队理解他们如何为您改良工具。
开源前哨
日常分享热门、乏味和实用的开源我的项目。参加保护 10万+ Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。