考拉:简单从熊猫过渡到Apache的火花
2019年4月24日 在公告
今天在火花+人工智能峰会上,我们宣布了考拉,一个新的开源项目,增强PySpark DataFrame API兼bob下载地址容熊猫。
Python数据科学已经在过去的几年里和熊猫爆炸已成为关键的生态系统。当数据科学家染指一个数据集,他们用熊猫去探索。这是最终的数据争吵和分析的工具。事实上,大熊猫read_csv通常是第一个命令学生运行在他们的数据科学的旅程。
这个问题?熊猫不能很好地扩展到大数据。专为较小的数据集,一个机器可以处理。另一方面,Apache火花已成为事实上的标准大数据的工作量。今天许多数据科学家使用熊猫课程、宠物项目,和小的数据任务,但当他们处理非常大的数据集,他们要么不得不迁移到PySpark杠杆火花或downsample他们的数据,以便他们可以使用熊猫。
现在树袋熊,数据科学家可以从一台机器到分布式环境中,而不需要学习一个新的框架。正如您将在下面看到的,您可以扩展你的熊猫代码引发考拉只需更换一个包。
熊猫:
进口熊猫作为pddf = pd.DataFrame ({“x”:【1,2),“y”:【3,4),“z”:【5,6]})#重命名列df。列= [' x ', ' y ', ' z1 ']#做一些操作df = df (“x2”)。x * df.x
考拉:
进口databricks.koalas作为ksdf = ks.DataFrame ({“x”:【1,2),“y”:【3,4),“z”:【5,6]})#重命名列df。列= [' x ', ' y ', ' z1 ']#做一些操作df = df (“x2”)。x * df.x
熊猫作为Python数据科学的标准词汇表
作为Python已经成为主要的语言对数据科学、社区开发了一个基于最重要的词汇库,包括大熊猫、matplotlib和numpy。当数据科学家能够使用这些库时,他们可以充分表达自己的思想和遵循一个想法的结论。他们可以概念化的东西,立即执行它。
但是当他们使用库以外的词汇,他们绊跌,他们检查StackOverflow每隔几分钟,他们不得不打断他们的工作流程让他们的代码工作。尽管PySpark使用简单,在许多方面与大熊猫,这仍然是一个不同的词汇学习。
在砖,我们相信,使大熊猫火花数据科学家将大大提高工作效率和数据驱动的组织几个原因:
- 考拉删除需要决定是否使用熊猫或PySpark对于一个给定的数据集
- 工作,最初是用熊猫为单个机器,考拉允许数据科学家扩大他们的代码引发只需断开熊猫考拉
- 考拉解锁大数据的更多数据科学家在一个组织,因为他们不再需要学习PySpark利用火花
下面,我们显示的两个例子简单和强大的熊猫的方法直接运行在与考拉火花。
工程特性与分类变量
数据科学家构建毫升模型时经常遇到分类变量。一个受欢迎的技术是分类变量作为虚拟变量进行编码。在下面的示例中,有几种分类变量包括调用类型、社区和单位类型。大熊猫get_dummies方法是一种方便的方法,就是这个。下面我们用熊猫显示如何做到这一点:
进口熊猫作为pd数据= pd.read_csv (“fire_department_calls_sf_clean.csv”头=0)显示器(pd.get_dummies(数据)
现在多亏了考拉,我们可以与几个火花调整:
进口databricks.koalas作为ks数据= ks.read_csv (“fire_department_calls_sf_clean.csv”头=0)显示器(ks.get_dummies(数据)
这是它!
算术与时间戳
与时间戳数据科学家工作的所有时间,但正确处理它们可以变得很混乱。熊猫提供了一个优雅的解决方案。假设你有一个DataFrame日期:
进口熊猫作为pd进口numpy作为npdate1 = pd.Series (pd.date_range (“2012-1-1 12:00:00”时间=7频率=“米”))date2 = pd.Series (pd.date_range (“2013-3-11 21:45:00”时间=7频率=' W '))df = pd.DataFrame (dict(Start_date = date1 End_date = date2))打印(df)
End_date Start_date02013年-03 -1721:45:002012年-01 -31日12:00:0012013年-03 -2421:45:002012年-02 -29日12:00:0022013年-03 -31日21:45:002012年-03 -31日12:00:0032013年04-0721:45:002012年-04 -30.12:00:0042013年-04 -1421:45:002012年-05 -31日12:00:0052013年-04 -2121:45:002012年-06 -30.12:00:0062013年-04 -2821:45:002012年-07 -31日12:00:00
减去与熊猫的开始日期结束日期,你只需运行:
df (“diff_seconds”)= df (“End_date”]- df (“Start_date”]df (“diff_seconds”)= df (“diff_seconds”)/ np.timedelta64 (1,“年代”)打印(df)
End_date Start_date diff_seconds0 2013-03-17 21:45:00 2013-03-17 12:00:00 35545500.01 2013-03-24 21:45:00 2012-02-29 12:00:00 33644700.02 2013-03-31 21:45:00 2012-03-31 12:00:00 31571100.03 2013-04-07 21:45:00 2013-04-07 12:00:00 29583900.04 2013-04-14 21:45:00 2013-04-14 12:00:00 27510300.05 2013-04-21 21:45:00 2013-04-21 12:00:00 25523100.06 2013-04-28 21:45:00 2013-04-28 12:00:00 23449500.0
现在做同样的事情在火花,所有你需要做的是替换熊猫考拉:
进口databricks.koalas作为ksdf = ks.from_pandas (pandas_df)df (“diff_seconds”)= df (“End_date”]- df (“Start_date”]df (“diff_seconds”)= df (“diff_seconds”)/ np.timedelta64 (1,“年代”)打印(df)
再一次,就这么简单。
下一个步骤,开始使用考拉
你可以看到考拉的官方声明雷诺新火花+人工智能峰会:
我们创建了考拉因为我们见面很多数据的科学家们不愿意处理大数据。我们相信,考拉将赋予他们规模,使其很容易引发。
到目前为止,我们已经实现了常见DataFrame操作方法,以及强大的索引技术在熊猫。这里有一些即将到来的项目在我们的路线图,主要专注于提高覆盖率:
这个项目处于初期阶段,但快速发展。如果你有兴趣学习更多关于考拉或开始,看看项目的GitHub回购。我们欢迎你的反馈和贡献!