当前位置: 首页 > 科技观察

ETL的Python数据转换工具

时间:2023-03-18 21:19:25 科技观察

前几天,我去Reddit上询问是否应该使用Python进行ETL相关的转换,铺天盖地的回答是“是”。然而,虽然我的Reddit同事们热心支持使用Python,但出于对Pandas在大型数据集上的性能的担忧,他们建议研究Pandas以外的库。经过研究,我发现了很多用于数据转换的Python库:有的提高了Pandas的性能,有的则提供了自己的解决方案。我找不到这些工具的完整列表,所以我想我可以使用我所做的研究来编译一个-如果我遗漏了什么或弄错了,请告诉我!Pandas网站:https://pandas.pydata.org/OverviewPandas当然不需要介绍,但我还是会给它一个介绍。Pandas在Python中加入了DataFrame的概念,在数据科学界被广泛用于分析和清理数据集。它作为ETL转换工具非常有用,因为它使数据操作变得非常简单和直观。优点广泛用于数据操作简单直观的语法与其他Python工具(包括可视化库)很好地集成支持常见的数据格式(从SQL数据库、CSV文件等读取)缺点因为它将所有数据加载到内存中,不缩放,对于非常大(大于内存)的数据集,这可能是一个糟糕的选择进一步阅读10分钟PandasDataProcessingforMachineLearningwithPandasDask网站:https://dask.org/概述根据他们的网站,“Dask是一个灵活的库用于Python中的并行计算。”本质上,Dask扩展了公共接口,例如用于分布式环境的Pandas——例如,DaskDataFrame模拟了它。优点可扩展性——Dask可以在本地机器上运行并扩展到集群能够处理低内存数据集即使在相同的硬件上,也可以使用相同的功能提高性能(由于并行计算)Pandasswitch旨在与其他Python库集成缺点除了并行性之外,还有其他方法可以提高Pandas性能(通常更显着)如果您正在进行小型计算,则没有太大好处DaskDataFrame中未实现某些内容阅读Dask文档进一步阐述为什么每个数据科学家都应该使用DaskModin网站:https://github.com/modin-project/modin概述Modin与Dask类似,它试图通过使用并行性来启用分布式DataFrames以提高Pandas的效率。与Dask不同,Modin基于Ray(一种任务并行执行框架)。Modin优于Dask的主要优势是Modin自动处理跨计算机核心的数据分发(无需配置)。优点可扩展性——Ray提供了更多与Modin完全相同的功能(即使在相同的硬件上)可以提高性能从Pandas切换的代码更改最少(更改导入语句)提供所有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的主要优势是SparkDataFrames使用分布式内存并利用惰性执行,因此它们可以使用集群处理更大的数据集,这是Pandas等工具无法实现的。如果要处理的数据非常大并且数据操作的速度和大小非常大,Spark是ETL的理想选择。优点可扩展性和对更大数据集的支持在语法方面,SparkDataFrames非常类似于通过SparkSQL使用SQL语法的Pandas查询与其他流行的ETL工具兼容,包括Pandas(您实际上可以将SparkDataFrames转换为PandasDataFrame,从而允许使用各种其他库)与Jupyternotebooks兼容内置支持SQL、流和图形处理缺点需要分布式文件系统,例如S3使用CSV等数据格式限制延迟执行,需要将数据转换为其他格式,例如Parquet缺乏直接支持数据可视化工具,如Matplotlib和Seaborn,这两种工具都得到Pandas的良好支持完整列表,我不希望这篇文章太长!确实有很多很多用于数据转换的Python工具,所以我包括了这一部分,至少包括了我遗漏的其他项目(我可能会在本文的第二部分进一步探讨这些)。bonobohttps://www.bonobo-project.org/bubbleshttp://bubbles.databrewery.org/pygrametlhttp://chrthomsen.github.io/pygrametl/ApacheBeamhttps://beam.apache.org/结论我希望这个列表至少可以帮助您了解Python必须提供哪些工具来进行数据转换。完成这项研究后,我相信Python是ETL的绝佳选择——这些工具及其开发人员使其成为一个了不起的平台。正如我在本文开头提到的,我不是该领域的专家-如果您有任何要补充的内容,请随时发表评论!谢谢阅读!