欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python實(shí)現(xiàn)去重聚合Excel數(shù)據(jù)并對(duì)比兩份數(shù)據(jù)的差異

 更新時(shí)間:2023年11月09日 07:31:43   作者:qwerrt9  
在數(shù)據(jù)處理過程中,常常需要將多個(gè)數(shù)據(jù)表進(jìn)行合并,并進(jìn)行比對(duì),以便找出數(shù)據(jù)的差異和共同之處,本文將介紹如何使用 Pandas 庫(kù)對(duì)兩個(gè) Excel 數(shù)據(jù)表進(jìn)行合并與比對(duì),需要的可以參考下

問題背景

在數(shù)據(jù)處理過程中,常常需要將多個(gè)數(shù)據(jù)表進(jìn)行合并,并進(jìn)行比對(duì),以便找出數(shù)據(jù)的差異和共同之處。本文將介紹如何使用 Pandas 庫(kù)對(duì)兩個(gè) Excel 數(shù)據(jù)表進(jìn)行合并與比對(duì),并將結(jié)果輸出到新的 Excel 文件中。

讀取數(shù)據(jù)表

首先,我們使用 Pandas 庫(kù)中的 read_excel 函數(shù)來讀取兩個(gè) Excel 文件中的數(shù)據(jù),分別存儲(chǔ)到 left_df 和 right_df 變量中。

import pandas as pd

left_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\數(shù)據(jù)核對(duì)\\數(shù)據(jù)1.xlsx')
right_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\數(shù)據(jù)核對(duì)\\數(shù)據(jù)2.xlsx')

數(shù)據(jù)表分組求和

接下來,我們對(duì) left_df 和 right_df 分別按照 '店鋪名稱' 和 '訂單號(hào)' 進(jìn)行分組,并對(duì)其他列進(jìn)行求和操作。

left_df = left_df.groupby(['店鋪名稱', '訂單號(hào)'], as_index=False).sum()
right_df = right_df.groupby(['店鋪名稱', '訂單號(hào)'], as_index=False).sum()

合并數(shù)據(jù)表

然后,我們使用 merge 函數(shù)將經(jīng)過分組求和后的兩個(gè) DataFrame 進(jìn)行合并,同時(shí)啟用標(biāo)記列以標(biāo)識(shí)每行數(shù)據(jù)的來源。

merged_df = pd.merge(left_df, right_df, how='outer', on=['訂單號(hào)', '店鋪名稱'], indicator=True)

添加標(biāo)記結(jié)果列

根據(jù)合并的結(jié)果,我們添加一個(gè)新列 'merge_result',用于標(biāo)記每條記錄屬于左側(cè)有的數(shù)據(jù)、都有的數(shù)據(jù)還是右側(cè)有的數(shù)據(jù)。

conditions = [
    (merged_df['_merge'] == 'left_only'), # 左側(cè)有的數(shù)據(jù)
    (merged_df['_merge'] == 'both'), # 左右兩邊都有的數(shù)據(jù)
    (merged_df['_merge'] == 'right_only') # 右側(cè)有的數(shù)據(jù)
]
choices = ['Left only', 'Both', 'Right only']

merged_df['merge_result'] = np.select(conditions, choices)

保存結(jié)果到 Excel 文件

最后,我們將合并后的結(jié)果寫入到新的 Excel 文件中,以便進(jìn)一步分析和分享。

merged_df.to_excel('merged.xlsx', index=False)

總結(jié)

通過以上步驟,我們成功地使用 Pandas 完成了兩個(gè)數(shù)據(jù)表的合并與比對(duì),并將結(jié)果保存到了新的 Excel 文件中。這個(gè)過程為我們展示了如何利用 Pandas 庫(kù)進(jìn)行數(shù)據(jù)處理和分析,為日常工作中的數(shù)據(jù)清洗和整合提供了有力的支持。

完整代碼

import pandas as pd
import numpy as np

# 讀取兩個(gè) Excel 文件
left_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\數(shù)據(jù)核對(duì)\\數(shù)據(jù)1.xlsx')
right_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\數(shù)據(jù)核對(duì)\\數(shù)據(jù)2.xlsx')

# 對(duì) left_df DataFrame 進(jìn)行分組求和
left_df = left_df.groupby(['店鋪名稱', '訂單號(hào)'], as_index=False).sum()

# 對(duì) right_df DataFrame 進(jìn)行分組求和
right_df = right_df.groupby(['店鋪名稱', '訂單號(hào)'], as_index=False).sum()

# 合并兩個(gè)數(shù)據(jù)表,并啟用標(biāo)記列
merged_df = pd.merge(left_df, right_df, how='outer', on=['訂單號(hào)', '店鋪名稱'], indicator=True)
# 使用 merge 函數(shù)將左右兩個(gè) DataFrame 進(jìn)行合并
# how='outer' 表示執(zhí)行外連接操作,包括左邊有的、都有的和右邊有的數(shù)據(jù)
# on=['訂單號(hào)', '店鋪名稱'] 表示合并所依據(jù)的關(guān)鍵字列名是 '訂單號(hào)' 和 '店鋪名稱'
# indicator=True 表示啟用一個(gè)標(biāo)記列 '_merge' 來標(biāo)記每個(gè)行的來源

# 根據(jù)標(biāo)記列的值,添加一個(gè)標(biāo)記結(jié)果列
conditions = [
(merged_df['_merge'] == 'left_only'), # 左側(cè)有的數(shù)據(jù)
(merged_df['_merge'] == 'both'), # 左右兩邊都有的數(shù)據(jù)
(merged_df['_merge'] == 'right_only') # 右側(cè)有的數(shù)據(jù)
]
choices = ['Left only', 'Both', 'Right only']
# 對(duì)應(yīng)上述條件的選擇,分別為左側(cè)有的數(shù)據(jù)、都有的數(shù)據(jù)、右側(cè)有的數(shù)據(jù)
merged_df['merge_result'] = np.select(conditions, choices)
# 使用 np.select 函數(shù)根據(jù)條件和選擇,在 DataFrame 中添加一個(gè)新列 'merge_result',標(biāo)記為左側(cè)有的數(shù)據(jù)、都有的數(shù)據(jù)或右側(cè)有的數(shù)據(jù)

# 將結(jié)果寫入到 Excel 文件中
merged_df.to_excel('merged.xlsx', index=False)
# 將合并后的結(jié)果寫入到 Excel 文件 'merged.xlsx' 中,不包含索引列

以上就是利用Python實(shí)現(xiàn)去重聚合Excel數(shù)據(jù)并對(duì)比兩份數(shù)據(jù)的差異的詳細(xì)內(nèi)容,更多關(guān)于Python對(duì)比Excel數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pycharm配置anaconda環(huán)境時(shí)找不到python.exe解決辦法

    pycharm配置anaconda環(huán)境時(shí)找不到python.exe解決辦法

    今天來說一下python中一個(gè)管理包很好用的工具anaconda,可以輕松實(shí)現(xiàn)python中各種包的管理,這篇文章主要給大家介紹了關(guān)于pycharm配置anaconda環(huán)境時(shí)找不到python.exe的解決辦法,需要的朋友可以參考下
    2023-10-10
  • python實(shí)現(xiàn)去除空格及tab換行符的方法

    python實(shí)現(xiàn)去除空格及tab換行符的方法

    這篇文章主要為大家介紹了python實(shí)現(xiàn)去除空格及tab換行符的方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python實(shí)現(xiàn)兩字符串映射

    python實(shí)現(xiàn)兩字符串映射

    這篇文章主要介紹了python實(shí)現(xiàn)兩字符串映射方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python中pymysql 模塊的使用詳解

    Python中pymysql 模塊的使用詳解

    pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。
    2019-08-08
  • Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫(kù)的方法

    Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了Python使用數(shù)據(jù)庫(kù)類與多線程類進(jìn)行數(shù)據(jù)抓取與寫入數(shù)據(jù)庫(kù)操作的具體使用技巧,需要的朋友可以參考下
    2018-06-06
  • 使用Python制作新型冠狀病毒實(shí)時(shí)疫情圖

    使用Python制作新型冠狀病毒實(shí)時(shí)疫情圖

    最近被新型冠狀病毒搞的人心惶惶,很多城市被病毒感染,今天小編給大家分享使用Python制作新型冠狀病毒實(shí)時(shí)疫情圖,感興趣的朋友跟隨小編一起看看吧
    2020-01-01
  • Python操作Mysql實(shí)例代碼教程在線版(查詢手冊(cè))

    Python操作Mysql實(shí)例代碼教程在線版(查詢手冊(cè))

    本文介紹了Python操作MYSQL、執(zhí)行SQL語句、獲取結(jié)果集、遍歷結(jié)果集、取得某個(gè)字段、獲取表字段名、將圖片插入數(shù)據(jù)庫(kù)、執(zhí)行事務(wù)等各種代碼實(shí)例和詳細(xì)介紹,代碼居多,是一桌豐盛唯美的代碼大餐
    2013-02-02
  • python實(shí)現(xiàn)人工蜂群算法

    python實(shí)現(xiàn)人工蜂群算法

    這篇文章主要介紹了python如何實(shí)現(xiàn)人工蜂群算法,幫助大家更好的利用python進(jìn)行數(shù)據(jù)分析,感興趣的朋友可以了解下
    2020-09-09
  • python http基本驗(yàn)證方法

    python http基本驗(yàn)證方法

    今天小編就為大家分享一篇python http基本驗(yàn)證方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python3 實(shí)現(xiàn)函數(shù)寫文件路徑的正確方法

    python3 實(shí)現(xiàn)函數(shù)寫文件路徑的正確方法

    今天小編就為大家分享一篇python3 實(shí)現(xiàn)函數(shù)寫文件路徑的正確方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評(píng)論