如何使用 Python Pandas 根據公共鍵合併多個 TSV 檔案?


如果您處理資料,您可能不得不處理將多個檔案合併到一個連貫的資料集中這一挑戰。如果您正在處理製表符分隔值 (TSV) 檔案,此任務可能會特別困難。幸運的是,Python Pandas 庫提供了一種簡單的解決方案,可以根據公共鍵合併 TSV 檔案。

在本文中,我們將學習如何使用 Python Pandas 合併多個 TSV 檔案。首先,我們將首先了解什麼是 TSV 檔案以及它們與 CSV 檔案有何不同。接下來,我們將瞭解 Pandas 庫並解釋其處理 TSV 檔案的功能。最後,我們將逐步介紹如何使用 Pandas 根據公共鍵合併多個 TSV 檔案。

什麼是 TSV 檔案?

TSV 檔案是一種分隔文字檔案,它使用製表符作為值之間的分隔符。此格式類似於逗號分隔值 (CSV) 檔案,後者使用逗號作為分隔符。TSV 檔案通常用於表示包含逗號的資料,例如包含逗號的地址或名稱。透過使用製表符而不是逗號,TSV 檔案可以避免資料中出現逗號可能導致的混淆。

Pandas 提供了廣泛的功能來操作和分析資料,包括用於讀取和寫入 TSV 檔案的功能。

使用 Pandas 根據公共鍵合併不同 TSV 檔案的步驟

現在我們已經介紹了 TSV 檔案和 Pandas,讓我們深入瞭解根據公共鍵合併多個 TSV 檔案的過程。在本文中,我們假設您有幾個以 .tsv 結尾的 TSV 檔案(例如 youdatafile.tsv 等),您希望使用 Python pandas 將它們合併到一個連貫的資料集中。

讓我們看看使用 Pandas 根據公共鍵合併不同 TSV 檔案的步驟

步驟 1:將不同的 TSV 檔案載入到 Pandas DataFrame 中

我們合併檔案的第一個步驟是將每個 TSV 檔案載入到 Pandas DataFrame 中。我們可以使用 Pandas read_csv() 函式來做到這一點,該函式可以讀取 TSV 檔案以及 CSV 檔案。

現在假設我們有三個要合併的 TSV 檔案:persons.tsv、orderdetails.tsv 和 productdetails.tsv。每個檔案包含我們資料的不同方面

  • persons.tsv 包含有關我們人員的資訊,例如他們的姓名、電子郵件地址和電話號碼

  • orderdetails.tsv 包含有關我們人員下達的訂單詳細資訊的資訊,例如訂單日期和總成本

  • productdetails.tsv 包含有關我們銷售的產品詳細資訊的資訊,例如產品名稱和價格

現在我們將每個檔案載入到 Pandas DataFrame 中。為此,我們將使用以下程式碼

import pandas as pd
persons = pd.read_csv('persons.tsv', sep='\t')
orderdetails = pd.read_csv('orderdetails.tsv', sep='\t')
productdetails = pd.read_csv('productdetails.tsv', sep='\t')

步驟 2:檢查 DataFrame

將每個 TSV 檔案載入到單獨的 Pandas DataFrame 之後的下一步是檢查每個 DataFrame 以確保資料已正確載入。為此,我們將使用 head() 函式,該函式用於顯示 DataFrame 的前幾行。

print(persons.head())
print(orderdetails.head())
print(productdetails.head())

以上程式碼將在控制檯中顯示每個 DataFrame 的前五行。我們可以使用此資訊來驗證資料是否已正確載入,並瞭解每個 DataFrame 包含的內容。

步驟 3:合併 DataFrame

現在我們已將每個 TSV 檔案載入到單獨的 Pandas DataFrame 中,我們可以將資料合併到一個連貫的資料集中。為此,我們將使用 Pandas 提供的 merge() 函式。

merge() 函式根據公共鍵將兩個 DataFrame 合併到一個 DataFrame 中。在我們的例子中,公共鍵是客戶 ID。我們將首先將 persons DataFrame 與 orderdetails DataFrame 合併,然後將結果 DataFrame 與 productdetails DataFrame 合併。

# Merge persons and orderdetails
customer_orderdetails = pd.merge(persons, orderdetails, on='customer_id')

# Merge customer_orderdetails and productdetails
merged_data = pd.merge(customer_orderdetails, productdetails, on='product_id')

merge() 函式以兩個 DataFrame 作為輸入,以及一個指定用於合併的公共鍵的引數。在我們的例子中,公共鍵是 persons DataFrame 和 orderdetails DataFrame 中的 customer_id 列,以及 customer_orderdetails DataFrame 和 productdetails DataFrame 中的 product_id 列。

生成的 merged_data DataFrame 包含來自原始 TSV 檔案的所有資訊,合併到一個連貫的資料集中。

步驟 4:儲存檔案

最後,我們可以使用 Pandas 提供的 to_csv() 函式將合併後的資料儲存到 TSV 檔案中。

merged_data.to_csv('merged_data.tsv', sep='\t', index=False)

示例

讓我們考慮以下示例。我們有三個 TSV 檔案,“mydata1.tsv”、“mydata2.tsv”和“mydata3.tsv”。每個檔案包含相同的列:id、name 和 contact。

在下面的示例中,我們使用了 concat() 函式,該函式以 DataFrame 列表作為輸入並將它們組合到一個 DataFrame 中。預設情況下,concat() 垂直組合 DataFrame,這意味著它將它們一個接一個地堆疊起來。在此示例中,由於三個 TSV 檔案具有相同的列,因此生成的合併 DataFrame 也將具有相同的列。

import pandas as pd
# Load different TSV files into DataFrames
mydf1 = pd.read_csv('mydata1.tsv', sep='\t')
mydf2 = pd.read_csv('mydata2.tsv', sep='\t')
mydf3 = pd.read_csv('mydata3.tsv', sep='\t')

# Merge DataFrames using concat()
mymerged_data = pd.concat([mydf1, mydf2, mydf3])

# Save merged data to TSV file
mymerged_data.to_csv('merged_data.tsv', sep='\t', index=False)

輸出

Name    Age    City
John    25     London
Emily   32     New York
David   41     Paris
Sophie  29     Berlin
Michael 37     Sydney
Emma    31     Toronto

示例

讓我們考慮以下示例。我們有兩個 TSV 檔案,myproductdetails.tsv 和 mysales.tsv。myproductdetails.tsv 檔案包含有關 productdetails 的資訊,而 mysales.tsv 檔案包含有關銷售交易的資訊。這兩個檔案都包含一個 product_id 列,我們將使用它作為合併檔案的公共鍵。

import pandas as pd

# Load TSV files into DataFrames
myproductdetailsdf = pd.read_csv('myproductdetails.tsv', sep='\t')
mysalesdf = pd.read_csv('mysales.tsv', sep='\t')

# Merge DataFrames using merge()
mymerged_data = pd.merge(myproductdetailsdf, mysalesdf, on='product_id')

# Save merged data to TSV file
mymerged_data.to_csv('mymerged_data.tsv', sep='\t', index=False)

輸出

Name    Age    City
John    25     London
Emily   32     New York
David   41     Paris
Sophie  29     Berlin
Michael 37     Sydney
Emma    31     Toronto

在上面的示例中,我們使用了 merge() 函式,該函式以兩個 DataFrame 作為輸入,以及一個指定用於合併的公共鍵的引數。在此示例中,我們根據 product_id 列合併 myproductdetailsdf 和 mysalesdf DataFrame。生成的合併 DataFrame 將包含來自這兩個 DataFrame 的所有列,行根據公共鍵匹配。

結論

在本文中,我們學習瞭如何使用 Python Pandas 根據公共鍵合併多個 TSV 檔案,透過分步教程瞭解如何使用 Pandas 根據公共鍵合併多個 TSV 檔案。

更新於:2023 年 8 月 31 日

546 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告