欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Python-Pandas之两个Dataframe的差异比较

发布时间:2025/3/11 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Python-Pandas之两个Dataframe的差异比较 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

昨天在外网找到一个比较dataframe的好库,叫datacompy,它的优点有:

1、可以把对比后的信息详情打印出来,比如列是否相等,行是否相等;

2、在数据中如果有不相等列,那么就只比较相同的列;

3、可以设置绝对差值和相对差值,比如我们比较有浮点数的数据时,设置下绝对差值为0.01,后面的一系列微小的值就忽略了;

4、在数据报告中,每一列的数据类型、不相等数量、最大差值和空值都详细列出来了;

5、可以把不相等的列单独取出来,取出来就是一个dataframe,可以查看具体哪些是不一样的;

下面这张图就是比较之后的报告:

代码如下:

import datacompy, pandas as pd, sysfiles = [] try:files = [sys.argv[1], sys.argv[2]] except:print('命令行未检测到文件参数。') # 这个方式可以通过命令行运行: #    #   python3 cmpfiles.py testfile1.txt testfile2.txt #  # 上面自带的两个参数,就是通过  sys.argv 获得的。if len(files) == 0:files = ['./TempFiles/temp_77.csv', './TempFiles/temp_77_new.csv']# files = ['./TempFiles/temp_77.csv', './TempFiles/temp_77_copy.csv'] # 如果直接运行这个脚本,那么用西面定义的 filesdf1 = pd.read_csv(files[0]) df2 = pd.read_csv(files[1])compare = datacompy.Compare(df1, df2, join_columns='key') # Compare 参数: #   df1: 数据框1 #   df2: 数据框2 #   join_columns: 指定索引的列名,默认“None”,可以传入数组,比如:['key', 'AdID'] #   on_index: 是否要开启索引,开启之后不需要指定 join_columns,默认“False” #   abs_tol: 绝对公差,默认“0” #   rel_tal: 相对公差,默认“0” #   df1_name: 报告中数据框1的名字,默认“df1” #   df2_name: 报告中数据框2的名字,默认“df2” #   ignore_spaces: 是否忽略空格,默认“False” #   ignore_case: 是否忽略大小写,默认“False”print(compare.matches()) # 最后判断是否相等,返回 bool print(compare.report()) # 打印报告详情,返回 string # print(compare.sample_mismatch('用户数')) # 取出不相同的某一列数据,返回 dataframe

 

总结

以上是生活随笔为你收集整理的Python-Pandas之两个Dataframe的差异比较的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。