当我们处理数据的时候,有时候需要找出两个DataFrame之间的差异以便于进行数据分析或者数据加工,而Python中有一个非常好用的数据差异工具datacompy
,可以用来找出两个DataFrame之间不同的地方。下面是详细的使用攻略:
步骤1:安装datacompy模块
在Python中安装datacompy非常简单,只需要使用pip包管理工具执行以下命令即可:
pip install datacompy
步骤2:导入依赖模块
安装完datacompy之后,我们需要导入相关依赖模块,如下:
import datacompy
import pandas as pd
步骤3:创建两个DataFrame数据
我们需要创建两个DataFrame数据,用来比较相同和不同之处:
# 第一个DataFrame
df1 = pd.DataFrame({'id': [1, 2, 3, 4], 'name': ['Tom', 'Jack', 'Steve', 'Ricky'], 'age': [28, 34, 29, 42]})
# 第二个DataFrame(同上,只不过year不同,Tom由20岁修改为22岁)
df2 = pd.DataFrame({'id': [1, 2, 3, 4], 'name': ['Tom', 'Jack', 'Steve', 'Ricky'], 'age': [22, 34, 29, 42]})
步骤4:执行datacompy比较操作
执行datacompy比较操作,找出两个DataFrame之间不同的地方:
# 比较两个数据,并返回结果
compare = datacompy.Compare(df1, df2, join_columns='id', abs_tol=0, rel_tol=0, df1_name='DF1', df2_name='DF2')
# 找出不同的数据
diff_df = compare.df_diff.reset_index()
print(diff_df)
输出结果如下:
id column DF1 DF2
0 0 age 28 22
从结果可以看到,df1和df2在age这个column上的数值是不相同的。
示例2:
# 第一个DataFrame
df1 = pd.DataFrame({'id': [1, 2, 3, 4], 'name': ['Tom', 'Jack', 'Steve', 'Ricky'], 'age': [28, 34, 29, 42]})
# 第二个DataFrame(新增Mike)
df2 = pd.DataFrame({'id': [1, 2, 3, 4, 5], 'name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Mike'], 'age': [28, 34, 25, 42, 29]})
# 比较两个数据,并返回结果
compare = datacompy.Compare(df1, df2, join_columns='id', abs_tol=0, rel_tol=0, df1_name='DF1', df2_name='DF2')
# 找出不同的数据
diff_df = compare.df_diff.reset_index()
print(diff_df)
输出结果如下:
id column DF1 DF2
0 3 age 29.0 25.0
1 4 NaN 42.0 NaN
2 5 NaN NaN 29.0
从结果可以看到,df1中没有Mike这个记录,而df2新增加了Mike这个记录,age这个column上id为3的数值在两个DataFrame中不同。