前几天,用于我去Reddit询问是数据否应该将Python用于ETL相关的转换,并且压倒性的转换回答是"是"。  
 但是工具,尽管我的用于Redditor同事热心支持使用Python,但他们建议研究Pandas以外的数据库-出于对大型数据集Pandas性能的担忧。 经过研究,转换我发现了很多用于数据转换的工具Python库:有些改进了Pandas的性能,而另一些提供了自己的用于解决方案。 我找不到这些工具的数据完整列表,所以我想我可以使用所做的转换研究来编译一个工具-如果我错过了什么或弄错了什么,请告诉我! Pandas 网站:https://pandas.pydata.org/ 总览 Pandas当然不需要介绍,工具但是用于我还是给它一个介绍。 Pandas在Python中增加了DataFrame的数据概念,并在数据科学界广泛用于分析和清理数据集。转换 它作为ETL转换工具非常有用,因为它使操作数据非常容易和直观。网站模板 优点 广泛用于数据处理        简单直观的语法        与其他Python工具(包括可视化库)良好集成        支持常见的数据格式(从SQL数据库,CSV文件等读取)        缺点 由于它会将所有数据加载到内存中,因此无法扩展,并且对于非常大(大于内存)的数据集来说可能是一个错误的选择        进一步阅读 10分钟Pandas        Pandas机器学习的数据处理        Dask 网站:https://dask.org/ 总览 根据他们的网站," Dask是用于Python并行计算的灵活库。" 从本质上讲,Dask扩展了诸如Pandas之类的通用接口,供在分布式环境中使用-例如,Dask DataFrame模仿了。 优点 可扩展性— Dask可以在本地计算机上运行并扩展到集群        能够处理内存不足的数据集        即使在相同的硬件上,使用相同的功能也可以提高性能(由于并行计算)        最少的代码更改即可从Pandas切换        旨在与其他Python库集成        缺点 除了并行性,还有其他方法可以提高Pandas的性能(通常更为显着)        如果您所做的计算量很小,则没有什么好处        Dask DataFrame中未实现某些功能        进一步阅读 Dask文档        为什么每个数据科学家都应该使用Dask        Modin 网站:https://github.com/modin-project/modin 总览 Modin与Dask相似之处在于,它试图通过使用并行性并启用分布式DataFrames来提高Pandas的效率。 与Dask不同,Modin基于Ray(任务并行执行框架)。IT技术网 Modin优于Dask的主要好处是Modin可以自动处理跨计算机核心分发数据(无需进行配置)。 优点 可伸缩性— Ray比Modin提供的更多        完全相同的功能(即使在相同的硬件上)也可以提高性能        最小的代码更改即可从Pandas切换(更改import语句)        提供所有Pandas功能-比Dask更多的"嵌入式"解决方案        缺点 除了并行性,还有其他方法可以提高Pandas的性能(通常更为显着)        如果您所做的计算量很小,则没有什么好处        进一步阅读 Modin文档        Dask和Modin有什么区别?        Petl 网站:https://petl.readthedocs.io/en/stable/ 总览 petl包含了pandas的许多功能,但专为ETL设计,因此缺少额外的功能,例如用于分析的功能。 petl具有用于ETL的所有三个部分的工具,但本文仅专注于数据转换。 尽管petl提供了转换表的功能,但其他工具(例如pandas)似乎更广泛地用于转换和有据可查的文档,因此petl对此吸引力较小。 优点 最小化系统内存的使用,使其能够扩展到数百万行        对于在SQL数据库之间进行迁移很有用        轻巧高效        缺点 通过很大程度地减少对系统内存的使用,petl的站群服务器执行速度会变慢-不建议在性能很重要的应用程序中使用        较少使用此列表中的其他解决方案进行数据处理        进一步阅读 使用Petl快速了解数据转换和迁移        petl转换文档        PySpark 网站:http://spark.apache.org/ 总览 Spark专为处理和分析大数据而设计,并提供多种语言的API。 使用Spark的主要优点是Spark DataFrames使用分布式内存并利用延迟执行,因此它们可以使用集群处理更大的数据集,而Pandas之类的工具则无法实现。 如果要处理的数据非常大,并且数据操作的速度和大小很大,Spark是ETL的理想选择。 优点 可扩展性和对更大数据集的支持        就语法而言,Spark DataFrames与Pandas非常相似        通过Spark SQL使用SQL语法进行查询        与其他流行的ETL工具兼容,包括Pandas(您实际上可以将Spark DataFrame转换为Pandas DataFrame,从而使您可以使用各种其他库)        与Jupyter笔记本电脑兼容        内置对SQL,流和图形处理的支持        缺点 需要一个分布式文件系统,例如S3        使用CSV等数据格式会限制延迟执行,需要将数据转换为Parquet等其他格式        缺少对数据可视化工具(如Matplotlib和Seaborn)的直接支持,这两种方法都得到了Pandas的良好支持        进一步阅读 Python中的Apache Spark:新手指南        PySpark简介        PySpark文档(尤其是语法)        值得一提 尽管我希望这是一个完整的列表,但我不希望这篇文章过长! 确实有很多许多用于数据转换的Python工具,因此我包括了这一部分,至少是我错过的其他项目(我可能会在本文的第二部分中进一步探讨这些项目)。 bonobo https://www.bonobo-project.org/        bubbles http://bubbles.databrewery.org/        pygrametl http://chrthomsen.github.io/pygrametl/        Apache Beam https://beam.apache.org/        结论 我希望这份清单至少可以帮助您了解Python必须提供哪些工具来进行数据转换。 在进行了这项研究之后,我相信Python是ETL的优秀选择-这些工具及其开发人员使它成为了一个了不起的平台。 就像我在本文开头提到的那样,我不是该领域的专家-如果您有任何补充,请随时发表评论! 谢谢阅读!  |