前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不用写代码就能学用Pandas,适合新老程序员的神器Bamboolib

不用写代码就能学用Pandas,适合新老程序员的神器Bamboolib

作者头像
AI科技大本营
发布2019-12-25 18:12:21
1.5K0
发布2019-12-25 18:12:21
举报

作者 | Rahul Agarwal

译者 | 陆离

编辑 | Jane

出品 | AI科技大本营(ID:rgznai100)

曾经,你有没有因为学习与使用 Pandas 进行数据检索等操作而感到厌烦过?

实现同样的功能,Pandas 给用户提供了很多种方法,不少老手开发者们在这么多选择下要乐开花了。但对于初学者来说,情况却恰好相反,即使是一个很简单的操作有时对于他们来说,理解 Pandas 语法可能都是件挺困难的事情。

那我们该怎么办呢?

Bamboolib 的开发者们提出了一个解决问题的好办法 —— 给 Pandas 增加一个 GUI。

我们希望大家“不用写任何代码也可以学习和使用 Pandas”,可以办到吗?接下来,本文就从数据设置及使用 Bamboolib 内容入手,带领大家一起体验这个新鲜奇妙之旅。

一、安装 Bamboolib

安装 Bamboolib 的方式非常简单,一键 pip

代码语言:javascript
复制
pip install Bamboolib

为了能让 Bamboolib 与 Jupyter 和 Jupyterlab 在一起运行,还需要安装一些额外的扩展插件,如通过以下的命令安装 Jupyter Notebook 的扩展包:

代码语言:javascript
复制
jupyter nbextension enable --py qgrid --sys-prefix
jupyter nbextension enable --py widgetsnbextension --sys-prefix
jupyter nbextension install --py Bamboolib --sys-prefix
jupyter nbextension enable --py Bamboolib --sys-prefix

二、验证 Bamboolib 是否安装成功

要检查是否安装成功,可以打开 Jupyter 记事本,并执行如下命令:

代码语言:javascript
复制
import Bamboolib as bam 
import pandas as pd 
data = pd.read_csv(bam.titanic_csv)
bam.show(data)

第一次运行这个命令的时候,系统将会要求你提供许可。如果要在 Bamboolib 上使用自己的数据,也需要许可。

Bamboolib 被激活后就可以开始使用了。大家可以通过以下的方式来查看 Bamboolib 的执行结果,还可以选择使用其它的一些选项。

现在,我们尝试在 Bamboolib 中用自己的数据源,看到了大量的 Titanic 数据。

这里使用的是 Kaggle 提供的手机价格分类数据(Mobile Price Classification data)。基于此问题,我们需要创建一个分类器:根据手机的特点来预测价格范围。

下面,正式从 Bamboolib 开始。

代码语言:javascript
复制
train = pd.read_csv("../Downloads/mobile-price-classification/train.csv") bam.show(train)

用一个 bam.show(train)的简单调用来启动 Bamboolib。

三、轻松进行数据检索

Bamboolib 对检索性数据分析有很大的帮助。现如今,数据检索是任何数据科学研究的重要组成部分。为了进行数据检索和创建所有的图表而编写代码是相当麻烦的,需要付出很多的时间和努力,Bamboolib 如何让整个数据检索工作变得轻而易举?

在 Bamboolib 中,如果点击“Visualize Dataframe”按钮的话,就可以得到以下的数据了,如下图所示:

我们会从上面的结果中看到每一列中的缺失值,以及唯一值和实例的数量。

但这还不够,我们还可以得到单变量列级的统计量和信息。然后,我们再深入了解一下目标变量——价格范围(Price Range)。

从这里深入到目标列,可以看到单变量列统计信息以及对于目标列的最重要的预测因素,看起来手机内存和电池电量是影响预测价格范围最重要的因素。

内存是如何影响价格范围的?可以用一个二元图来表示。

使用标准的 Python 库(如 seaborn 或 plotly)获得上面这么漂亮的图表通常都会需要一定的代码开发量。plotly_express 为大多数的图表绘制提供了一些简单的功能,但 Bamboolib 会自动为我们创建许多各种各样的图表。

从上面的图中,我们可以看到,随着手机内存容量的增加,价格范围也在不断地扩大。我们还看到内存变量的加权 F1 分数为 0.676。你可以对数据集里面的每个变量都执行这个操作,并尝试分析这些数据。

当然,还可以导出这些图表的代码,以便在某些文档展示中使用,这些图表导出的是 PNG 格式的文件。

上述操作只需复制显示在每个图表上方的代码片段即可。例如,可以通过运行导出的代码,以图表的形式展现 price_range 和 ram 这两个列,你就会看到一个将这些图表以 PNG 格式下载的选项。

代码语言:javascript
复制
bam.plot(train, 'price_range', 'ram')

四、基于 GUI 的数据挖掘

你有没有遇到过这样的情况:突然忘了某段 pandas 代码用来实现什么功能了,并且还出现了内存溢出,而且在不同的线程中找不到了。如果有的话,这里有一个 Pandas 的小窍门儿。

通过 Bamboolib,你要做的事情变得非常容易,并且不会被复杂的代码搞得晕头转向。通过使用简单的 GUI,你可以进行删除、筛选、排序、联合、分组、视图、拆分(大多数情况下,你希望对数据集执行的操作)等操作。

例如,这里我将删除目标列中的多个缺失值(如果有的话)。当然,还可以添加多个条件。

最好的功能就是,Bamboolib 也提供了代码。如下所示,用于删除缺失值的代码将会自动添加到单元格中。

代码语言:javascript
复制
train = train.loc[train['price_range'].notna()]
train.index = pd.RangeIndex(len(train))

其实它用起来就跟微软的 Excel 一样,还为高级用户提供了数据切片和分块的所有代码。你也可以根据自己的喜好使用 Bamboolib。

下面是一个使用排序的示例,看起来很直观。

代码如下:

代码语言:javascript
复制
train = train.groupby(['price_range']).agg({'battery_power': ['mean'], 'clock_speed': ['std']}) 
train.columns = ['_'.join(multi_index) for multi_index in train.columns.ravel()] 
train = train.reset_index()

你可以看到它是如何处理 multi_index 和 ravel 这两个列的。

结论

Bamboolib 的 GUI 做的非常直观,在工作中使用它绝对是一种乐趣。这个项目目前还处于初始阶段,但已经有了一个非常不错的开始。

确切地说,Bamboolib 对于那些想要学习使用 Pandas 来编写代码的初学者来说是非常有用的,让他们不费吹灰之力就可以访问到所有的函数。

同时大家也需要继续了解 Pandas 的一些基本功能,为了更好地学习 Pandas,也可以尝试大家多看一下使用 Bamboolib 之后的输出结果,让我们一起来期待未来 Bamboolib 还会发生哪些变化。

原文链接:

https://towardsdatascience.com/bamboolib-learn-and-use-pandas-without-coding-23a7d3a94e1

(*本文为AI科技大本营编译文章)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、安装 Bamboolib
  • 二、验证 Bamboolib 是否安装成功
  • 三、轻松进行数据检索
  • 四、基于 GUI 的数据挖掘
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档