DataComPy
DataComPy是一个用于比较两个Pandas DataFrame的包。最初开发的目的是作为SAS的"PROC COMPARE"在Pandas DataFrame上的替代品,提供比简单的"Pandas.DataFrame.equals(Pandas.DataFrame)"更多的功能(如打印一些统计数据,并允许调整匹配的精确度)。后来又将这些功能扩展到Spark DataFrame上。
快速安装
pip install datacompy
或
conda install datacompy
安装额外功能
如果您想使用Spark或其他后端,请确保通过extras进行安装:
pip install datacompy[spark]
pip install datacompy[dask]
pip install datacompy[duckdb]
pip install datacompy[ray]
旧版Spark弃用说明
从v0.12.0版本开始,原有的"SparkCompare"被替换为Pandas on Spark实现。原始的"SparkCompare"实现与其他原生实现有所不同。为了更好地统一API并保持行为一致,我们将原始的"SparkCompare"弃用并移至新模块"LegacySparkCompare"中。
随后在v0.13.0版本中,引入了PySpark DataFrame类("SparkSQLCompare"),它接受"pyspark.sql.DataFrame"并应提供更好的性能。在此版本中,Pandas on Spark实现已重命名为"SparkPandasCompare",所有spark相关逻辑现在都位于"spark"子模块下。
如果您希望继续使用旧版SparkCompare,可以按以下方式导入:
from datacompy.spark.legacy import LegacySparkCompare
支持的版本和依赖
不同版本的Spark、Pandas和Python之间的交互有所不同。以下是我们测试的版本矩阵。由于转向Pandas on Spark API以及与Pandas 2+的兼容性问题,我们暂时不支持在Pandas on Spark实现中使用Pandas 2。Spark计划在Spark 4中支持Pandas 2。
Spark 3.2.4 | Spark 3.3.4 | Spark 3.4.2 | Spark 3.5.1 | |
---|---|---|---|---|
Python 3.9 | ✅ | ✅ | ✅ | ✅ |
Python 3.10 | ✅ | ✅ | ✅ | ✅ |
Python 3.11 | ❌ | ❌ | ✅ | ✅ |
Python 3.12 | ❌ | ❌ | ❌ | ❌ |
Pandas < 1.5.3 | Pandas >=2.0.0 | |
---|---|---|
"Compare" | ✅ | ✅ |
"SparkPandasCompare" | ✅ | ❌ |
"SparkSQLCompare" | ✅ | ✅ |
Fugue | ✅ | ✅ |
[!注意] 目前,Python 3.12尚不被Spark和Fugue中的Ray支持。如果您使用Python 3.12及以上版本,请注意并非所有功能都受支持。Pandas和Polars支持应该正常工作,并已经过测试。
支持的后端
- Pandas:(查看文档)
- Spark:(查看文档)
- Polars:(查看文档)
- Fugue是一个Python库,为Pandas、DuckDB、Polars、Arrow、Spark、Dask、Ray和许多其他后端提供统一的数据处理接口。DataComPy与Fugue集成,提供了一种简单的方法来比较这些后端的数据。请注意,Fugue将在最底层使用Pandas(原生)逻辑(查看文档)
贡献者
我们欢迎并感谢您的贡献!在我们接受任何贡献之前,我们要求您务必签署贡献者许可协议(CLA)。
本项目遵循开源行为准则。参与此项目即表示您同意遵守此准则。
路线图
路线图详情可在此处查看