xirongxudlut 2020-07-20
前几天,我去Reddit询问是否应该将Python用于ETL相关的转换,并且压倒性的回答是"是"。
但是,尽管我的Redditor同事热心支持使用Python,但他们建议研究Pandas以外的库-出于对大型数据集Pandas性能的担忧。
经过研究,我发现了很多用于数据转换的Python库:有些改进了Pandas的性能,而另一些提供了自己的解决方案。
我找不到这些工具的完整列表,所以我想我可以使用所做的研究来编译一个工具-如果我错过了什么或弄错了什么,请告诉我!
Pandas
网站:https://pandas.pydata.org/
总览
Pandas当然不需要介绍,但是我还是给它一个介绍。
Pandas在Python中增加了DataFrame的概念,并在数据科学界广泛用于分析和清理数据集。 它作为ETL转换工具非常有用,因为它使操作数据非常容易和直观。
优点
缺点
进一步阅读
Dask
网站:https://dask.org/
总览
根据他们的网站," Dask是用于Python并行计算的灵活库。"
从本质上讲,Dask扩展了诸如Pandas之类的通用接口,供在分布式环境中使用-例如,Dask DataFrame模仿了。
优点
缺点
进一步阅读
Modin
网站:https://github.com/modin-project/modin
总览
Modin与Dask相似之处在于,它试图通过使用并行性并启用分布式DataFrames来提高Pandas的效率。 与Dask不同,Modin基于Ray(任务并行执行框架)。
Modin优于Dask的主要好处是Modin可以自动处理跨计算机核心分发数据(无需进行配置)。
优点
缺点
进一步阅读
Petl
网站:https://petl.readthedocs.io/en/stable/
总览
petl包含了pandas的许多功能,但专为ETL设计,因此缺少额外的功能,例如用于分析的功能。 petl具有用于ETL的所有三个部分的工具,但本文仅专注于数据转换。
尽管petl提供了转换表的功能,但其他工具(例如pandas)似乎更广泛地用于转换和有据可查的文档,因此petl对此吸引力较小。
优点
缺点
进一步阅读
PySpark
网站:http://spark.apache.org/
总览
Spark专为处理和分析大数据而设计,并提供多种语言的API。 使用Spark的主要优点是Spark DataFrames使用分布式内存并利用延迟执行,因此它们可以使用集群处理更大的数据集,而Pandas之类的工具则无法实现。
如果要处理的数据非常大,并且数据操作的速度和大小很大,Spark是ETL的理想选择。
优点
缺点
进一步阅读
值得一提
尽管我希望这是一个完整的列表,但我不希望这篇文章过长!
确实有很多许多用于数据转换的Python工具,因此我包括了这一部分,至少是我错过的其他项目(我可能会在本文的第二部分中进一步探讨这些项目)。
结论
我希望这份清单至少可以帮助您了解Python必须提供哪些工具来进行数据转换。 在进行了这项研究之后,我相信Python是ETL的优秀选择-这些工具及其开发人员使它成为了一个了不起的平台。
计算的时候总共分3步,1到2是第二组......lower: i. 这组数据中的小值 higher: j. 这组数据中的大值,fraction 是第三步中的小数部分,意思是当前这组数据的0到1的分位数
Series是一种类似于一维数组的对象,由一组数据以及一组与之对应的索引组成。 index: 索引序列,必须是唯一的,且与数据的长度相同. 如果没有传入索引参数,则默认会自动创建一个从0~N的整数索引