跳转至

使用数据组合

比较熊猫数据帧

原文:https://www.geesforgeks.org/compare-pandas-data frames-using-data compy/

众所周知,Python 是一种多范式的通用语言,由于其广泛的库支持和活跃的社区,被广泛用于数据分析。使用 python 比较两个熊猫数据帧的最常见方法是:

这些方法被经验丰富的新开发人员广泛使用,但是如果我们需要一个报告来查找所有匹配/不匹配的列和行呢?这就是数据组件库出现的时候。

DataComPy 是 capitalone 开源的熊猫库。它开始的目的是为了取代熊猫数据帧的过程比较。它将两个数据帧作为输入,并提供给我们一个包含统计数据的人类可读报告,让我们知道这两个数据帧之间的相似和不同之处。

通过管道 3 安装:

pip3 install datacompy

示例:

from io import StringIO
import pandas as pd
import datacompy

data1 = """employee_id, name
1, rajiv kapoor
2, rahul agarwal
3, alice johnson
"""

data2 = """employee_id, name
1, rajiv khanna
2, rahul aggarwal
3, alice tyson
"""

df1 = pd.read_csv(StringIO(data1))
df2 = pd.read_csv(StringIO(data2))

compare = datacompy.Compare(
    df1,
    df2,

    # You can also specify a list
    # of columns
    join_columns = 'employee_id', 

    # Optional, defaults to 0
    abs_tol = 0,

    # Optional, defaults to 0
    rel_tol = 0, 

    # Optional, defaults to 'df1'
    df1_name = 'Original',

    # Optional, defaults to 'df2'
    df2_name = 'New' 
    )

# if ignore_exra_columns=True, 
# the function won't return False
# in case of non-overlapping 
# column names
compare.matches(ignore_extra_columns = False)   

# This method prints out a human-readable 
# report summarizing and sampling 
# differences
print(compare.report())

输出:

python-datacompy

说明:

  • 在上面的例子中,我们将两个数据框连接在一个匹配的列上。我们也可以通过:on_index = True而不是“join_columns”来连接索引。
  • Compare.matches()是布尔函数。如果匹配,则返回真,否则返回假。
  • 默认情况下,只有在 100%匹配的情况下,数据计算才返回真。我们可以通过将 abs_tol & rel_tol 的值设置为非零值来调整这一点,这使我们能够指定可以容忍的数值之间的偏差量。它们分别代表绝对公差和相对公差。
  • 从上面的例子中我们可以看出,DataComPy 是一个非常强大的库&当我们必须生成两个数据帧的比较报告时,它非常有用。


回到顶部