如何使用 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 DataFrames 中
合并文件的第一步是将每个 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:检查 DataFrames
将每个 TSV 文件加载到单独的 Pandas DataFrame 后,下一步是检查每个 DataFrame 以确保数据已正确加载。为此,我们将使用 head() 函数来显示数据框的前几行。
print(persons.head()) print(orderdetails.head()) print(productdetails.head())
上面的代码将在控制台中显示每个 DataFrame 的前五行。我们可以使用此信息来验证数据是否已正确加载,并了解每个 DataFrame 包含的内容。
步骤 3:合并 DataFrames
现在我们已将每个 TSV 文件加载到单独的 Pandas DataFrame 中,我们可以将数据合并为一个统一的数据集。为此,我们将使用 Pandas 提供的 merge() 函数。
merge() 函数根据公共键将两个 DataFrame 合并为一个 DataFrame。在我们的例子中,公共键是客户 ID。我们首先将 persons DataFrame 与 orderdetails DataFrame 合并,然后将生成的 DataFrame 与 productdetails DataFrame 合并。
# 合并 persons 和 orderdetails customer_orderdetails = pd.merge(persons, orderdetails, on='customer_id') # 合并 customer_orderdetails 和 productdetails merged_data = pd.merge(customer_orderdetails, productdetails, on='product_id')
merge() 函数以两个 DataFrames 作为输入,并传入一个参数,用于指定用于合并的公共键。在我们的例子中,公共键是 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() 函数,该函数将 DataFrames 列表作为输入并将它们组合成单个 DataFrame。默认情况下,concat() 垂直组合 DataFrames,这意味着它将它们堆叠在一起。在此示例中,由于三个 TSV 文件具有相同的列,因此合并后的 DataFrame 也将具有相同的列。
import pandas as pd # 将不同的 TSV 文件加载到 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') # 使用 concat() 合并 DataFrames mymerged_data = pd.concat([mydf1, mydf2, mydf3]) # 将合并的数据保存到 TSV 文件 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 文件包含有关产品详细信息的信息,而 mysales.tsv 文件包含有关销售交易的信息。两个文件都包含一个 product_id 列,我们将使用它作为合并文件的通用键。
import pandas as pd # 将 TSV 文件加载到 DataFrames 中 myproductdetailsdf = pd.read_csv('myproductdetails.tsv', sep='\t') mysalesdf = pd.read_csv('mysales.tsv', sep='\t') # 使用 merge() 合并 DataFrames mymerged_data = pd.merge(myproductdetailsdf, mysalesdf, on='product_id') # 将合并的数据保存到 TSV 文件 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()函数将两个DataFrames作为输入,并使用一个参数来指定用于合并的公共键。在此示例中,我们根据product_id列合并myproductdetailsdf和mysalesdf DataFrames。合并后的DataFrame将包含两个DataFrames的所有列,行根据公共键进行匹配。
结论
在本文中,我们通过分步教程学习了如何使用Python Pandas通过公共键合并多个TSV文件。