分享

Pandas和Spark DataFrames 的6种不同

 dazheng 2015-12-03

Pandas和Spark DataFrames 的6种不同

ChinaHadoop · 2015-07-30 22:40

Pandas和Spark DataFrames 的6种不同

Pandas和Spark DataFrames
的6种不同


着1.4版本的改进,Spark DataFrames可能成为新Pandas,使得原始的RDDS,像是Spark的字节码一样。

我在Kaggle的比赛中,大量使用pandas(和Scikit-learn)。目前还没有人使用Spark赢得了Kaggle挑战,但我相信它会发生。这就是为什么是时候替未来准备,开始使用它。

Spark DataFrames的代码都在pyspark.sql package下面(很是奇怪的,历史遗留的命名:这已经不仅仅有关SQL的了)。


我不是一个Spark专家,但这里有几件事情,在我第一次尝试时注意到。在我的GitHub上,你可以找到这篇文章the IPython Notebook companion。


读取数据源

使用Pandas,您可以轻松地使用read_csv()取CSV文件。


开箱即用,Spark DataFrame支持读取数据各种热门的数据结构,如JSON文件,Parquet文件,Hive表 - 无论是从本地文件系统,分布式文件系统(HDFS),云存储(S3),或外部关系数据库系统。


在Spark中,DataFrame是一个以命名列方式组织的分布式数据集,等同于关系型数据库中的一个表,也相当于R/Python中的data frames(但是进行了更多的优化)。DataFrames可以由结构化数据文件转换而来,也可以从Hive中的表得来,以及可以转换自外部数据库或现 有的RDD。


但是Spark并没有直接支持CSV。你必须使用一个单独的库:Spark-CSV。




计算

sparkDF.count() 和 pandasDF.count()并不完全一样。


sparkDF.count() 返回数据的行数,而pandasDF.count()返回每列非NA/Null的数量。


而且Spark DataFrame暂时不支持.shape—Pandas中会经常用到。




观察

在Pandas中,为了看一个数据帧的内容的表格视图,您通常使用pandasDF.head(5),或pandasDF.tail(5)。在IPython Notebooks,它会显示一个有边界连续的漂亮数组。


在Spark中,你可以使用sparkDF.head(5),但它输出的数据视图比较丑陋。你应该更喜欢sparkDF.show(5)。请注意,您不能查看最后几行(没有.tail()方法,由于分布式环境中计算比较复杂)。




类型推断

使用Pandas,你基本上不用关心类型:Pandas会替我们自动推断。


使用Spark DataFrames加载CSV文件,默认的数据类型是”strings”。



要改变Spark的数据类型,可以使用.cast()法,或.astype(),它是为那些像我一样来自Pandas用户创造的一个别名)。请注意,您必须创建一个新列,并删除旧的(已经有一些改进的方法,可以替换旧的列,但目前不能使用Python API)。




数据描述

无论是Pandas还是Spark,.describe()产生不同的统计数据。然而他们有略微的不同,原因有两个:

* 在Pandas,NaN值都被排除在外。在Spark,NaN值使计算均值和标准差失败;

* 标准偏差不以相同的方式计算。默认情况下,Pandas中使用无偏(或更正)标准偏差,Spark使用未修正的标准偏差。所不同的是在分母中使用的N-1个代替N。




数据处理

在机器学习中,通常是对已经存在的列进行积分(特征工程)产生新的列。在Pandas,你可以使用’[]’运算符。在Spark你不能 - DataFrames是不可改变的。您应该使用.withColumn()。




总结

Spark和Pandas的DataFrames非常相似。不过,Pandas API仍然更方便,功能强大 - 但差距正在很快的缩小。尽管它的固有的设计约束(不变性,分布式计算,延迟计算,…),Spark想要尽可能的模仿Pandas(根据方法名)。我的猜测是,这一目标将很快实现。不仅如此,Spark还有Spark.ml,模仿scikit-learn,Spark可以成为完美的一站式工业数据科学工具。


原文来自:https:///@chris_bour/6-differences-between-pandas-and-spark-dataframes-1380cec394d2

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多