如何用Pandas比较两个数据帧
DataFrame是一个由行和列组成的二维结构,数据被存储成管状形式。它在大小方面是可变的,而且是异质的表格数据。运算操作也可以在行和列的标签上进行。
在这里,我们将看到如何用pandas.DataFrame.compare来比较两个DataFrames。
语法:
DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False)
因此,让我们了解它的每个参数 –
- other:这是第一个参数,实际上是取要与当前数据框架进行比较的数据框架对象。
-
align_axis : 它涉及到要进行比较的axis(垂直/水平)(默认为False)。0或index : 这里输出的差异是垂直显示的,1或列。差异的输出以水平方式显示。
-
keep_shape : 它意味着我们是否希望在输出中显示所有的数据值,或者只显示有明显价值的数据。它是bool类型的,默认值是 “false”,即默认显示表中的所有数值。
- keep_equal : 当设置为True时,这主要是为了在输出中显示相同或相等的数值。如果它被设置为 “假”,那么它将把相等的值显示为NANs。
返回:另一个DataFrame,其中包括两个数据框架之间的差异。
在开始之前,一个重要的注意点是pandas的版本必须至少是1.1.0。
要检查这一点,在你的cmd或Anaconda导航器cmd上运行这个。
如果是1.1.0或更高的版本,你就可以开始了!否则,你可以通过以管理员身份运行命令,将pandas兼容版本安装到你的窗口cmd中,或者如果它被添加到路径中,则安装到你的Anaconda导航器中。否则,你可以通过以管理员身份运行的命令将pandas兼容版本安装到你的窗口cmd中,或者以其他方式安装到你的Anaconda导航器中,如果它被添加到路径中。
实现:
第1步:我们将创建我们的第一个数据框架。
步骤:
1.为DataFrame导入pandas
2.输入NumPy以获取任何通过操作或插入而产生的NAN值。
3.使用pandas.DataFrame创建数据框架,并为你的行、列传递值。
4.指定列的标题(从你在字典中传递的值)。
输出:
第二步:现在,让我们制作出下一个DataFrame来比较它们的值。
输出:
我们通过复制第一个DataFrame的表结构并进行某些修改来创建另一个DataFrame。现在,让我们看看第二个DataFrame的内容
第三步:让我们做我们的主要操作–比较。
在这里,我们进行了两个操作,首先是对齐各列变化的差异,为此,align_axis默认设置为1,表格中的各列将从自己和对方交替绘制。
输出:
其次,我们设置了align_axis = 0,这使得表格的行数从自己和他人交替绘制。
输出:
第4步:让我们尝试将相等的值设置为真和假。
如果keep_equal为真,结果也会保留相等的值。否则,相等的值会显示为NaN。默认情况下,它被设置为False。
输出:
输出:
第5步:现在让我们检查keep_shape,它默认为false。如果它被设置为 “true”,那么所有的行和列都会出现在表中,否则就只保留那些有明显值的行和列。
输出:
输出:
这里,keep_shape true将保持结构,并将所有未改变的值设置为nan。而keep_shape和keep_equal true将保留表的整个结构以及未被改变的值。
注意:在比较两个数据框架之前,确保第一个数据框架中的记录数与第二个数据框架中的记录数一致。如果不是这样,你将会得到一个值错误,这就是:
ValueError。只能比较标记相同的系列对象。