第六章:数据合并与连接


文档摘要

第六章:数据合并与连接 第六章:Pandas 数据合并与连接 在数据分析和处理中,经常需要将来自不同来源或不同结构的数据整合到一起。Pandas 提供了强大的数据合并与连接功能,使得这些操作变得简单高效。本章将深入探讨 Pandas 中的数据合并与连接,包括 、 和 等函数,并通过实例进行演示。 数据合并 (Merge) 函数是 Pandas 中最常用的数据合并函数之一,它类似于 SQL 中的 JOIN 操作。 函数基于一个或多个共享列将两个 DataFrame 连接起来。 1.1 基本语法 : 左侧 DataFrame。 : 右侧 DataFrame。 : 连接方式,默认为 。可选值包括: :内连接,取交集。 :外连接,取并集,缺失值用 NaN 填充。

第六章:数据合并与连接

第六章:Pandas 数据合并与连接

在数据分析和处理中,经常需要将来自不同来源或不同结构的数据整合到一起。Pandas 提供了强大的数据合并与连接功能,使得这些操作变得简单高效。本章将深入探讨 Pandas 中的数据合并与连接,包括 mergejoinconcat 等函数,并通过实例进行演示。

1. 数据合并 (Merge)

merge 函数是 Pandas 中最常用的数据合并函数之一,它类似于 SQL 中的 JOIN 操作。merge 函数基于一个或多个共享列将两个 DataFrame 连接起来。

1.1 基本语法

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
  • left: 左侧 DataFrame。

  • right: 右侧 DataFrame。

  • how: 连接方式,默认为 'inner'。可选值包括:

    • 'inner':内连接,取交集。

    • 'outer':外连接,取并集,缺失值用 NaN 填充。

    • 'left':左连接,以左侧 DataFrame 为基准。

    • 'right':右连接,以右侧 DataFrame 为基准。

  • on: 用于连接的列名,必须同时存在于左右 DataFrame 中。

  • left_on: 左侧 DataFrame 用于连接的列名。

  • right_on: 右侧 DataFrame 用于连接的列名。

  • left_index: 如果为 True,则使用左侧 DataFrame 的索引作为连接键。

  • right_index: 如果为 True,则使用右侧 DataFrame 的索引作为连接键。

  • suffixes: 如果有重复列名,用于添加后缀以区分,默认为 ('_x', '_y')

1.2 代码实践

import pandas as pd # 创建两个 DataFrame df1 = pd.DataFrame({ 'ID': [1, 2, 3, 4, 5], 'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'], 'Department': ['Sales', 'Marketing', 'Engineering', 'Sales', 'Engineering'] }) df2 = pd.DataFrame({ 'ID': [3, 4, 5, 6, 7], 'Salary': [60000, 70000, 80000, 90000, 100000], 'Performance': ['Good', 'Excellent', 'Outstanding', 'Good', 'Excellent'] }) # 基于 'ID' 列进行内连接 merged_df = pd.merge(df1, df2, on='ID', how='inner') print("Inner Join:\n", merged_df) # 基于 'ID' 列进行左连接 left_merged_df = pd.merge(df1, df2, on='ID', how='left') print("\nLeft Join:\n", left_merged_df) # 使用不同的列名进行连接 df3 = pd.DataFrame({ 'EmpID': [1, 2, 3, 4, 5], 'Age': [25, 30, 28, 35, 27] }) merged_df2 = pd.merge(df1, df3, left_on='ID', right_on='EmpID', how='inner') print("\nDifferent Column Names:\n", merged_df2)

1.3 图示

2. 数据连接 (Join)

join 函数是基于索引进行连接的便捷方法。默认情况下,它使用左连接,并基于索引进行连接。

2.1 基本语法

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
  • other: 要连接的 DataFrame。

  • on: 用于连接的列名,必须存在于调用 join 的 DataFrame 中。

  • how: 连接方式,默认为 'left'

  • lsuffix: 左侧 DataFrame 中重复列名的后缀。

  • rsuffix: 右侧 DataFrame 中重复列名的后缀。

2.2 代码实践

import pandas as pd # 创建两个 DataFrame df1 = pd.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 28] }, index=['A', 'B', 'C']) df2 = pd.DataFrame({ 'City': ['New York', 'London', 'Paris'], 'Country': ['USA', 'UK', 'France'] }, index=['B', 'C', 'D']) # 基于索引进行左连接 joined_df = df1.join(df2, how='left') print("Join on Index:\n", joined_df) # 使用 'Name' 列进行连接 df1['City'] = ['New York', 'London', 'Paris'] joined_df2 = df1.join(df2, on='City', how='inner', lsuffix='_left', rsuffix='_right') print("\nJoin on Column:\n", joined_df2)

3. 数据拼接 (Concat)

concat 函数用于沿指定的轴将多个 Pandas 对象(Series 或 DataFrame)拼接在一起。

3.1 基本语法

pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
  • objs: 要拼接的 Pandas 对象列表或字典。

  • axis: 拼接的轴,0 表示按行拼接(默认),1 表示按列拼接。

  • join: 连接方式,默认为 'outer'。可选值包括 'inner''outer'

  • ignore_index: 如果为 True,则重置索引。

  • keys: 为原始 DataFrame 添加一个层次索引。

3.2 代码实践

import pandas as pd # 创建两个 DataFrame df1 = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6] }) df2 = pd.DataFrame({ 'A': [7, 8, 9], 'B': [10, 11, 12] }) # 按行拼接 concatenated_df = pd.concat([df1, df2], axis=0) print("Concatenate Rows:\n", concatenated_df) # 按列拼接 concatenated_df2 = pd.concat([df1, df2], axis=1) print("\nConcatenate Columns:\n", concatenated_df2) # 添加层次索引 concatenated_df3 = pd.concat([df1, df2], keys=['df1', 'df2']) print("\nConcatenate with Keys:\n", concatenated_df3)

3.3 图示

4. 总结

Pandas 提供了灵活多样的数据合并与连接功能,可以根据不同的需求选择合适的方法。

  • merge: 类似于 SQL JOIN,基于列进行连接。

  • join: 基于索引进行连接,通常用于具有相同索引的数据。

  • concat: 沿指定的轴拼接 Pandas 对象,适用于简单的数据堆叠。

熟练掌握这些函数,可以有效地整合和处理各种数据,为后续的数据分析和建模奠定基础。在实际应用中,需要根据数据的特点和连接的需求选择最合适的函数和参数,以达到最佳的效果。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U