如何比较两个数据帧与熊猫比较?
原文:https://www . geeksforgeeks . org/how-to-compare-two-data frames-with-pandas-compare/
数据框是由行和列组成的 2D 结构,数据以管状形式存储在其中。就大小和异构表格数据而言,它是可变的。算术运算也可以在行标签和列标签上执行。
了解更多熊猫数据框的创建。T3】
在这里,我们将看到如何将两个数据帧与熊猫进行比较
语法:
DataFrame.compare(其他,align_axis=1,keep_shape=False,keep_equal=False)
那么,让我们了解它的每个参数–
- 其他:这是第一个参数,实际上是将数据帧对象与当前数据帧进行比较。
- align_axis : 处理要进行比较的轴(垂直/水平)(默认为 False)。 0 或索引:此处差异输出垂直显示, 1 或列:差异输出水平显示。
- keep_shape : 表示我们是希望所有的数据值都显示在输出中,还是只显示值不同的数据值。它是 bool 类型,默认值为“false”,即默认显示表中的所有值。
- keep_equal : 这主要是为了设置为 True 时在输出中显示相同或相等的值。如果设置为假,那么它会将相等的值显示为 NANs。
返回另一个具有两个数据帧之间差异的数据帧。
在开始之前,一个重要的注意事项是熊猫版本必须至少是 1.1.0。
要进行检查,请在您的 cmd 或 Anaconda navigator cmd 上运行此程序。
import pandas as pd
print(pd.__version__)
如果是 1.1.0 或者更大,你就可以走了!否则,您可以通过以管理员身份运行命令将 pandas 兼容版本安装到您的窗口 cmd 中,或者安装到您的 Anaconda 导航器中(如果它已添加到路径中)。
# if you want the latest version available
pip install pandas --upgrade
# or if you want to specify the version
pip install pandas==1.1.0
实施:
步骤 1: 我们将创建第一个数据帧。
进场:
- 为数据框导入熊猫
- 为通过操作或插入出现的任何 NAN 值导入 NumPy
- 使用熊猫创建数据帧。数据框并传递行、列的值
- 指定列标题(根据您在字典中传递的值)
Python 3
# pandas version == 1.1.0 (min)
import pandas as pd
import numpy as np
# create your first DataFrame
# using pd.DataFrame
first_df = pd.DataFrame(
{
"Stationary": ["Pens", "Scales",
"Pencils", "Geometry Box",
"Crayon Set"],
"Price": [100, 50, 25, 100, 65],
"Quantity": [10, 5, 5, 2, 1]
},
columns=["Stationary", "Price", "Quantity"],
)
# Display the df
first_df
输出:
步骤 2: 现在,让我们制作下一个数据框,用于比较它们的值:
Python 3
# creating the second dataFrame by
# copying and modifying the first DataFrame
second_df = first_df.copy()
# loc specifies the location,
# here 0th index of Price Column
second_df.loc[0, 'Price'] = 150
second_df.loc[1, 'Price'] = 70
second_df.loc[2, 'Price'] = 30
second_df.loc[0, 'Quantity'] = 15
second_df.loc[1, 'Quantity'] = 7
second_df.loc[2, 'Quantity'] = 6
# display the df
second_df
输出:
我们正在通过复制 first_DataFrame 的表结构并进行某些修改来创建另一个 DataFrame。现在,让我们看看第二个 _DataFrame 的内容
第三步:我们来做主要操作——比较。
在这里,我们执行了两个操作,首先是对齐列中变化的差异,对于这两个操作,align_axis 默认设置为 1,表格将具有交替从自身和其他绘制的列。
Python 3
#Align the differences on the columns
first_df.compare(second_df)
输出:
其次,我们设置了 align_axis = 0,这使得表格行从自己和他人中交替绘制。
Python 3
# align the differences on rows
first_df.compare(second_df,align_axis=0)
输出:
第四步:让我们试着将相等的值设置为真和假。
如果 keep_equal 为真,结果也会保留相等的值。否则,相等的值显示为 n as。默认情况下,它设置为“假”。
Python 3
# Keep the equal values
first_df.compare(second_df, keep_equal=True)
输出:
Python 3
# Keep the equal values False
first_df.compare(second_df, keep_equal=False)
输出:
第五步:现在我们来检查 keep_shape,默认为 false。如果设置为 true,那么所有的行和列都会出现在表中,否则只保留那些具有不同值的行和列。
Python 3
#Keep all original rows and columns
first_df.compare(second_df,keep_shape=True)
输出:
Python 3
#Keep all original rows and columns and
#also all original values
first_df.compare(second_df,keep_shape=True, keep_equal=True)
输出:
这里 keep_shape true 将保持结构,并将所有不变的值设置为 nan。然而,keep_shape 和 keep_equal true 将保持表的整个结构以及不变的值
注意:在比较两个数据帧之前,请确保第一个数据帧中的记录数与第二个数据帧中的记录数相匹配。如果不是这样,您将得到一个值错误,即:
值错误:只能比较相同标记的系列对象
版权属于:月萌API www.moonapi.com,转载请注明出处