Python-Pandas之两个Dataframe的差异比较
生活随笔
收集整理的這篇文章主要介紹了
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 所有版本官方下
- 下一篇: 十二、ubuntu20.10(Linux