当前位置:
首页 >
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的差异比较的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Qt QtCreator 所有版本官方下
- 下一篇: Python获取硬件信息(硬盘序列号,C