详解Python如何实现对比两个Excel数据差异

  • Post category:Python

下面是Python如何实现对比两个Excel数据差异的完整实例教程。

1. 需要的工具和库

  • Python 3.x
  • pandas库

2. 示例说明

示例一

为了方便说明,我们假设需要比对下面两个文件的差异:

file1.xlsx
A B
1 aaa
2 bbb
file2.xlsx
A B
1 ccc
3 ddd

可以看到,这两个文件有如下区别:
– file1中的B列为aaa和bbb,file2中的B列为ccc和ddd;
– file1中的第二行数据为2,在file2中不存在;
– file2中的第二行数据为3,在file1中不存在。

使用以下代码来实现差异比较:

import pandas as pd

# 读取文件
df1 = pd.read_excel('file1.xlsx')
df2 = pd.read_excel('file2.xlsx')

# 比对
diff1 = pd.concat([df1, df2]).drop_duplicates(keep=False)
diff2 = pd.concat([df2, df1]).drop_duplicates(keep=False)

# 输出结果
print('file1与file2不同的数据:')
print(diff1)
print('file2与file1不同的数据:')
print(diff2)

执行结果如下:

file1与file2不同的数据:
   A    B
1  2  bbb
3  3  ddd
file2与file1不同的数据:
   A    B
1  1  ccc

可以看到,代码输出了两个不同的结果。diff1表示在file1中存在但file2中不存在的数据,diff2表示在file2中存在但file1中不存在的数据。

示例二

下面再来举一个更具体的例子。假如我们需要比对网站的用户信息,现在有两个Excel文件,分别是旧的用户信息和新的用户信息,需要找出哪些用户的信息发生了变化。

旧的用户信息文件如下:

old_user_info.xlsx
用户ID 用户名
1 张三
2 李四

新的用户信息文件如下:

new_user_info.xlsx
用户ID 用户名
1 张三
2 李四
3 王五

可以看到,文件间存在如下差异:
– 旧的用户信息中李四的性别为女,新的用户信息中性别为男;
– 旧的用户信息中不存在ID为3的王五,而新的用户信息中存在。

使用以下代码来实现差异比较:

import pandas as pd

# 读取文件
old_user_info = pd.read_excel('old_user_info.xlsx')
new_user_info = pd.read_excel('new_user_info.xlsx')

# 获取差异
df_diff = pd.merge(old_user_info, new_user_info, how='outer', on='用户ID', suffixes=('_old', '_new'))
df_diff = df_diff[df_diff.notnull().all(axis=1)]
df_diff = df_diff[df_diff.filter(regex='_old$').ne(df_diff.filter(regex='_new$')).any(1)]
df_diff = df_diff.reset_index(drop=True)

# 输出结果
print('用户信息发生变化的用户ID:')
print(df_diff['用户ID'].tolist())

执行结果如下:

用户信息发生变化的用户ID:
[2]

可以看到,code输出了一个结果,表示用户ID为2的用户的信息发生了变化。

3. 总结

以上就是Python如何实现对比两个Excel数据差异的完整实例教程,其中包含了两个示例说明。需要注意的是,使用pandas库可以有多种方式实现差异比较,具体方法需要根据实际情况来选择。