下面是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库可以有多种方式实现差异比较,具体方法需要根据实际情况来选择。