Koalas:让 pandas 轻松切换 Apache Spark,在大数据中规模应用

栏目: 服务器 · 发布时间: 5年前

内容简介:4 月 24 日,Databricks 在 Spark + AI 峰会上开源了一个新产品 Koalas,它增强了 PySpark 的 DataFrame API,使其与 pandas 兼容。Python 数据科学在过去几年中爆炸式增长, pandas 已成为生态系统的关键。当数据科学家得到一个数据集时,他们会使用 pandas 进行探索。它是数据处理和分析的终极工具。事实上,pandas 的 read_csv 通常是学生在学习数据科学过程中使用的第一个命令。问题是什么呢?pandas 不能很好地在大数据中规

4 月 24 日,Databricks 在 Spark + AI 峰会上开源了一个新产品 Koalas,它增强了 PySpark 的 DataFrame API,使其与 pandas 兼容。

Python 数据科学在过去几年中爆炸式增长, pandas 已成为生态系统的关键。当数据科学家得到一个数据集时,他们会使用 pandas 进行探索。它是数据处理和分析的终极工具。事实上,pandas 的 read_csv 通常是学生在学习数据科学过程中使用的第一个命令。

问题是什么呢?pandas 不能很好地在大数据中规模应用,因为它专为单个机器可以处理的小型数据集而设计。另一方面,Apache Spark 已成为处理大数据实际上的标准。今天,许多数据科学家将 pandas 用于职业培训、偏好性项目和小型数据任务,但是当他们使用非常大的数据集时,他们必须迁移到 PySpark 以利用 Spark,或对其数据进行下采样以使用 pandas。

现在有了 Koalas,数据科学家可以从单个机器迁移到分布式环境,而无需学习新的框架。正如你在下面所看到的,只需替换一个包,就可以使用 Koalas 在 Spark 上扩展你的 pandas 代码。

pandas:

复制代码

importpandasaspd
df = pd.DataFrame({'x': [1,2],'y': [3,4],'z': [5,6]})
#Renamecolumns
df.columns= [‘x’, ‘y’, ‘z1’]
#Dosomeoperationsinplace
df[‘x2’] = df.x * df.x

Koalas:

复制代码

importdatabricks.koalasasks
df = ks.DataFrame({'x': [1,2],'y': [3,4],'z': [5,6]})
#Renamecolumns
df.columns= [‘x’, ‘y’, ‘z1’]
#Dosomeoperationsinplace
df[‘x2’] = df.x * df.x

pandas 作为 Python 数据科学的标准词汇

随着 Python 成为数据科学的主要语言,社区已经开发了基于最重要的库的词汇表,包括 pandas、matplotlib 和 numpy。当数据科学家能够使用这些库时,他们可以充分表达他们的想法,并根据想法得出结论。他们可以将某些东西概念化并立即执行。

但是当他们不得不在词汇表之外使用库时,他们会遇到麻烦,每隔几分钟就需要检查一次 StackOverflow,还必须中断他们的工作流程才能使代码正常工作。虽然 PySpark 易于使用,并且在很多方面类似于 pandas,但它仍然是一个数据科学家必须学习的不同词汇。

在 Databricks,我们相信 Spark 上的 pandas 将大大提高数据科学家和数据驱动型组织的生产力,原因如下:

  • Koalas 无需决定是否为给定的数据集使用 pandas 或 PySpark
  • 对于最初用 pandas 为单个机器编写的工作,Koalas 允许数据科学家通过 pandas 和 Koalas 的轻松切换来扩展在 Spark 上的代码
  • Koalas 为组织中的更多数据科学家解锁大数据,因为他们不再需要学习 PySpark 以使用 Spark

下面,我们展示了两个简单而强大的 pandas 方法示例,这些方法可以直接在 Spark 上运行 Koalas。

具有分类变量的特征工程

数据科学家在构建 ML 模型时经常会遇到分类变量。一种流行的技术是将分类变量编码为虚拟变量。在下面的示例中,有几个分类变量,包括调用类型、邻域和单元类型。pandas 的 get_dummies 是一种简便的方法。下面我们将展示如何使用 pandas:

复制代码

import pandasaspd
data = pd.read_csv("fire_department_calls_sf_clean.csv",header=0)
display(pd.get_dummies(data))

Koalas:让 pandas 轻松切换 Apache Spark,在大数据中规模应用 Koalas:让 pandas 轻松切换 Apache Spark,在大数据中规模应用 有了 Koalas,我们可以通过一些调整在 Spark 上做到这一点:

复制代码

import databricks.koalasasks
data = ks.read_csv("fire_department_calls_sf_clean.csv",header=0)
display(ks.get_dummies(data))

就是这样!

带时间戳的算术

数据科学家一直使用时间戳,但正确处理这些时间戳非常麻烦。pandas 提供了一个优雅的解决方案。假设你有一个日期的 DataFrame :

复制代码

importpandas as pd
importnumpy as np
date1 = pd.Series(pd.date_range('2012-1-1 12:00:00', periods=7, freq='M'))
date2 = pd.Series(pd.date_range('2013-3-11 21:45:00', periods=7, freq='W'))
df = pd.DataFrame(dict(Start_date = date1, End_date = date2))
print(df)

End_date            Start_date
02013-03-1721:45:002012-01-3112:00:00
12013-03-2421:45:002012-02-2912:00:00
22013-03-3121:45:002012-03-3112:00:00
32013-04-0721:45:002012-04-3012:00:00
42013-04-1421:45:002012-05-3112:00:00
52013-04-2121:45:002012-06-3012:00:00
62013-04-2821:45:002012-07-3112:00:00

要使用 pandas 从结束日期中减去开始日期,只需运行:

复制代码

df['diff_seconds'] = df['End_date'] - df['Start_date']
df['diff_seconds'] = df['diff_seconds']/np.timedelta64(1,'s')
print(df)
End_date Start_date diff_seconds
02013-03-1721:45:002012-01-3112:00:0035545500.0
12013-03-2421:45:002012-02-2912:00:0033644700.0
22013-03-3121:45:002012-03-3112:00:0031571100.0
32013-04-0721:45:002012-04-3012:00:0029583900.0
42013-04-1421:45:002012-05-3112:00:0027510300.0
52013-04-2121:45:002012-06-3012:00:0025523100.0
62013-04-2821:45:002012-07-3112:00:0023449500.0

现在要在 Spark 上做同样的事情,你需要做的就是用 Koalas 替换 pandas:

复制代码

import databricks.koalas as ks
df = ks.from_pandas(pandas_df)
df['diff_seconds'] = df['End_date'] - df['Start_date']
df['diff_seconds'] = df['diff_seconds'] / np.timedelta64(1,'s')
print(df)

再做一次,就这么简单。

接下来的计划和 Koalas 入门

我们之所以创建 Koalas,是因为我们遇到了许多不愿意处理大数据的数据科学家。我们相信 Koalas 会让数据科学家将工作轻松拓展到 Spark 上,从而让他们获得更多能力。

目前为止,我们已经实现了常见的 DataFrame 操作方法,以及 pandas 中强大的索引技术。以下是我们路线图中的一些即将推出的项目,主要侧重于扩大覆盖范围:

  • 用于处理文本数据的字符串操作
  • 时间序列数据的日期 / 时间操作

该计划尚处于初期阶段,但正在迅速发展。如果你有兴趣了解更多有关 Koalas 或入门的信息,请查看该项目的 GitHub: https://github.com/databricks/koalas

Koalas:让 pandas 轻松切换 Apache Spark,在大数据中规模应用


以上所述就是小编给大家介绍的《Koalas:让 pandas 轻松切换 Apache Spark,在大数据中规模应用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

刷屏

刷屏

[美] 凯文•阿洛卡 / 侯奕茜、何语涵 / 中信出版社 / 2018-10-1 / 68.00

1. YouTube流行趋势经理,解密如何打造爆款视频 在视频时代,制造互动,才能创造潮流 用户不再是被动的观众,而是主动的传播者 2. 《刷屏》以行内人视角解读: 病毒视频 粉丝经济 网红产业 平台如何为内容创作者赋能 3. 你是否常常被病毒视频刷屏?你是否觉得很多网红火爆到“无法用常理解释”? 视频时代已经到来,我们每天观看网络......一起来看看 《刷屏》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试