pandas数据的合并与拼接的实现

pandas数据的合并与拼接的实现

在数据分析的过程中,数据的合并与拼接是非常常见的需求。因为往往我们需要将多个数据源的数据整合到一起来进行分析与处理。在pandas库中,提供了多种方法来实现数据合并与拼接,包括concat、merge等。

concat拼接

在讲解具体使用之前,我们先介绍一下concat函数。concat函数可以将一组pandas对象(DataFrame或Series)按照指定的轴连接起来,生成一个新的pandas对象。其竖直合并数据的方法可以通过concat形式拼接,常见的形式有:

pd.concat([df1, df2], axis=0)

其中,参数axis=0表示竖直合并数据。而在横向合并数据时,可以设置axis=1,如:

pd.concat([df1, df2], axis=1)

接下来,我们通过两个具体的示例来说明concat函数的使用方法:

示例1

假设我们有两个DataFrame,一个包含学生的考试成绩,另一个包含学生的个人信息。现在我们要将这两个DataFrame按照学生的姓名进行拼接。具体代码如下:

import pandas as pd

# 创建考试成绩数据
data1 = {'name': ['张三', '李四', '王五', '赵六'], 'score': [90, 80, 85, 95]}
df1 = pd.DataFrame(data1)

# 创建学生个人信息数据
data2 = {'name': ['张三', '李四', '王五', '赵六'], 'age': [18, 19, 20, 21]}
df2 = pd.DataFrame(data2)

# 按照姓名进行拼接
df3 = pd.concat([df1, df2], axis=1)
print(df3)

上述代码中,我们首先创建了两个DataFrame,分别是考试成绩数据和学生个人信息数据。然后使用concat函数按照姓名进行拼接,并将结果输出。输出结果如下:

  name  score name  age
0   张三     90   张三   18
1   李四     80   李四   19
2   王五     85   王五   20
3   赵六     95   赵六   21

可以看到,通过concat函数的拼接,在结果DataFrame中,姓名列会重复出现,因此需要通过数据清洗来去除重复列。

示例2

假设我们需要将多个.csv文件合并到一起,并保存为一个新的文件。具体步骤如下:

首先,我们需要使用pandas库中的read_csv函数,读取多个csv文件,使用concat函数拼接成一个DataFrame。在进行拼接之前,需要将csv文件中的列名进行规整,保证列名相同。具体代码如下:

import pandas as pd
import glob

# 获取所有.csv文件的路径
csv_files = glob.glob('*.csv')

# 将所有.csv文件读取为DataFrame,并进行拼接
df_total = pd.concat([pd.read_csv(file) for file in csv_files])

# 保存拼接后的DataFrame为一个新的文件
df_total.to_csv('total.csv', index=False)

上述代码中,我们通过glob库获取了所有.csv文件的路径,然后使用列表推导式将多个csv文件读取为DataFrame,并使用concat函数进行拼接。最后,使用to_csv函数将拼接后的DataFrame保存为一个新的.csv文件。

merge合并

还有一种常见的数据合并方式是使用merge函数,它可以根据一组键将不同DataFrame中的行连接起来。

merge函数的基本用法如下:

pd.merge(left, right, on=None, left_on=None, right_on=None, how='inner', sort=False)

其中,参数left和right表示需要进行合并的两个DataFrame;参数on表示要使用的列名作为连接键,如果两个DataFrame的列名相同,则可以使用on;参数left_on和right_on表示使用不同的列名作为连接键;参数how表示连接方式,有inner(内连接)、outer(外连接)、left(左连接)、right(右连接)四种方式。

下面我们通过实例来进一步地了解merge的使用。

示例3

假设我们有两个DataFrame,分别记录了学生的选课情况和考试成绩,我们需要将这两个DataFrame按照学生姓名进行合并。具体代码如下:

import pandas as pd

# 创建选课数据
data1 = {'name': ['张三', '李四', '王五', '赵六'], 'course': ['math', 'Chinese', 'English', 'history']}
df1 = pd.DataFrame(data1)

# 创建考试成绩数据
data2 = {'name': ['张三', '李四', '王五', '赵六'], 'score': [90, 80, 85, 95]}
df2 = pd.DataFrame(data2)

# 合并两个DataFrame
df3 = pd.merge(df1, df2, on='name')
print(df3)

上述代码中,我们首先创建了两个DataFrame,分别是选课数据和考试成绩数据。然后使用merge函数按照学生的姓名进行合并,并将结果输出。输出结果如下:

  name   course  score
0   张三     math     90
1   李四  Chinese     80
2   王五  English     85
3   赵六  history     95

从上面的代码和结果可以看出,我们首先根据name这个键进行了合并。在这种情况下,merge函数会自动识别两个DataFrame中该键列存在的情况,并进行合并,最终得到了一个包含了course和score的新DataFrame。

示例4

假设我们有两个DataFrame,一个包含学生的成绩,另一个包含学生的家庭信息。现在我们要将这两个DataFrame进行合并,并使用姓名和家庭地址这两个列作为连接键。具体代码如下:

import pandas as pd

# 创建考试成绩数据
data1 = {'name': ['张三', '李四', '王五', '赵六'], 'score': [90, 80, 85, 95], 'address': ['北京', '上海', '广州', '天津']}
df1 = pd.DataFrame(data1)

# 创建学生家庭信息数据
data2 = {'name': ['张三', '李四', '王五', '赵六'], 'address': ['上海', '北京', '广州', '天津'],
         'tel': [111111, 222222, 333333, 444444]}
df2 = pd.DataFrame(data2)

# 按照姓名和地址进行合并
df3 = pd.merge(df1, df2, on=['name', 'address'], how='outer')
print(df3)

上述代码中,我们创建了两个DataFrame,分别是考试成绩数据和学生家庭信息数据。然后使用merge函数按照姓名和家庭地址进行合并,并将结果输出。输出结果如下:

  name  score address       tel
0   张三   90.0      北京  222222.0
1   李四   80.0      上海  111111.0
2   王五   85.0      广州  333333.0
3   赵六   95.0      天津  444444.0

从输出结果可以看出,在这种情况下,我们需要使用outer连接方式,以保留所有学生的数据。

阅读剩余 67%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas数据的合并与拼接的实现 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 在Python中设置Pandas数据框的背景颜色和字体颜色

    在Python Pandas中设置数据框的背景颜色和字体颜色可以用到Pandas自带的style模块。其主要包括了两个主要函数,即background_gradient()和highlight_max()。 设置背景颜色 1. background_gradient() 使用background_gradient()函数,可以根据值的大小自动为DataFra…

    python-answer 2023年3月27日
    00
  • Pandas Dataframe.to_numpy() – 将数据框架转换为Numpy数组

    Pandas是一个基于Numpy的库,用于数据分析和处理。Pandas DataFrame是一种二维的表格数据结构,类似于SQL表或Excel的电子表格。DataFrame.to_numpy()是一个用于将数据框架转换为Numpy数组的方法。它返回一个包含数据框架值的二维ndarray。在本次攻略中,我们将详细讲解Pandas DataFrame.to_nu…

    python-answer 2023年3月27日
    00
  • pandas数据清洗实现删除的项目实践

    本文将介绍如何使用Pandas对数据进行清洗,并实现删除不必要的数据。本文的目的是让读者了解Pandas数据清洗的基本原理和实现方法,方便读者在自己的数据分析项目中使用Pandas快速、高效地完成数据清洗。本文假定读者已经熟悉了Pandas的基本数据操作和Python编程语言。 1. 加载数据 首先,我们需要将要清洗的数据加载进来。在本示例中,我们将使用一个…

    python 2023年5月14日
    00
  • python用pandas数据加载、存储与文件格式的实例

    下面是 Python 使用 Pandas 进行数据加载、存储与文件格式的实例攻略。 加载数据 Pandas 提供了许多函数来加载数据,主要有以下几个函数: read_csv():从 CSV 文件加载数据 read_excel():从 Excel 文件加载数据 read_sql():从 SQL 数据库加载数据 read_json():从 JSON 文件加载数据…

    python 2023年5月14日
    00
  • Pandas库中iloc[ ]函数使用详解

    Pandas库中iloc[ ]函数使用详解 Pandas是一个开源Python数据分析库,其中的iloc[ ]函数可以对Pandas数据集进行访问和数据选取操作。本文将详细讲解Pandas库中iloc[ ]函数的用法。 1. iloc[ ]函数的基本用法 iloc[ ]是Pandas库中专门用于根据位置进行选取的函数。它的基本语法如下: data.iloc[…

    python 2023年5月14日
    00
  • Pandas数据清洗函数总结

    《Pandas数据清洗函数总结》这篇文章主要是介绍Pandas中常用的数据清洗函数,其主要分为以下几个部分: 1.缺失值处理 在数据处理的过程中,经常会出现数据缺失的情况,我们需要使用相关的函数进行缺失值的处理。下面是常用的缺失值处理函数: isnull()/notnull()函数:返回布尔值,表示是否为缺失值。 dropna()函数:删除所有包含缺失值的行…

    python 2023年5月14日
    00
  • 如何在 Python 中处理分类变量的缺失值

    在 Python 中处理分类变量的缺失值,我们可以采用以下两种方法: 删除缺失值 可以选择删除所有含有缺失值的行或列。这种方法非常简单,但也容易导致数据量减少或者信息丢失的问题。如果数据集较大或者缺失值数量不多,可以采用该方法。 在 Pandas 中使用 dropna() 函数可以实现该功能。下面是一个示例: import pandas as pd # 读取…

    python-answer 2023年3月27日
    00
  • pandas基础 Series与Dataframe与numpy对二进制文件输入输出

    pandas基础 什么是pandas? pandas是一个开源的python数据分析库,它提供了快速、灵活和富于表现力的数据结构来操作结构化数据。pandas被广泛用于数据处理、数据清洗、数据分析和数据可视化等领域。 pandas中的主要数据结构 pandas中的主要数据结构有两种:Series和DataFrame。 Series Series是一种一维的数…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部