pandas数据探索之合并数据示例详解

 更新时间:2023年10月08日 11:53:36   作者:海狸大大  
这篇文章主要为大家介绍了pandas数据探索之合并数据示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

用pandas探索你的数据-合并数据

在数据处理和分析中,数据的合并是一项关键任务。Pandas 提供了丰富的工具来处理不同来源的数据,并将它们合并成一个更大的数据集。在这篇文章中,我们将深入探讨 Pandas 中两个重要的数据合并函数:pd.concat() 和 pd.merge()

首先,我们将通过一系列的步骤和示例来学习如何使用这些函数。然后,我们将深入解释每个函数的详细用法,包括参数和常见的用例。无论您是数据科学家、数据分析师还是对数据处理感兴趣的任何人,这篇文章都将为您提供处理和合并数据的实用技能。

探索虚拟姓名数据

步骤1 导入必要的库

# 运行以下代码
import numpy as np
import pandas as pd

步骤2 按照如下的元数据内容创建数据框

# 运行以下代码
raw_data_1 = {
        'subject_id': ['1', '2', '3', '4', '5'],
        'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 
        'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']}
raw_data_2 = {
        'subject_id': ['4', '5', '6', '7', '8'],
        'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 
        'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}
raw_data_3 = {
        'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
        'test_id': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}

步骤3 将上述的数据框分别命名为data1, data2, data3

# 运行以下代码
data1 = pd.DataFrame(raw_data_1, columns = ['subject_id', 'first_name', 'last_name'])
data2 = pd.DataFrame(raw_data_2, columns = ['subject_id', 'first_name', 'last_name'])
data3 = pd.DataFrame(raw_data_3, columns = ['subject_id','test_id'])

步骤4 将data1和data2两个数据框按照行的维度进行合并

命名为all_data

# 运行以下代码
all_data = pd.concat([data1, data2])
all_data

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_namelast_name
01AlexAnderson
12AmyAckerman
23AllenAli
34AliceAoni
45AyoungAtiches
04BillyBonder
15BrianBlack
26BranBalwner
37BryceBrice
48BettyBtisan

步骤5 将data1和data2两个数据框按照列的维度进行合并

命名为all_data_col

# 运行以下代码
all_data_col = pd.concat([data1, data2], axis = 1)
all_data_col

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_namelast_namesubject_idfirst_namelast_name
01AlexAnderson4BillyBonder
12AmyAckerman5BrianBlack
23AllenAli6BranBalwner
34AliceAoni7BryceBrice
45AyoungAtiches8BettyBtisan

步骤6 打印data3

# 运行以下代码
data3

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idtest_id
0151
1215
2315
3461
4516
5714
6815
791
81061
91116

步骤7 按照subject_id的值对all_data和data3作合并

# 运行以下代码
pd.merge(all_data, data3, on='subject_id')

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_namelast_nametest_id
01AlexAnderson51
12AmyAckerman15
23AllenAli15
34AliceAoni61
44BillyBonder61
55AyoungAtiches16
65BrianBlack16
77BryceBrice14
88BettyBtisan15

步骤8 对data1和data2按照subject_id作连接

# 运行以下代码
pd.merge(data1, data2, on='subject_id', how='inner')

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_name_xlast_name_xfirst_name_ylast_name_y
04AliceAoniBillyBonder
15AyoungAtichesBrianBlack

步骤9 找到 data1 和 data2 合并之后的所有匹配结果

# 运行以下代码
pd.merge(data1, data2, on='subject_id', how='outer')

style scoped

.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}
.dataframe tbody tr th {
    vertical-align: top;
}
.dataframe thead th {
    text-align: right;
}
subject_idfirst_name_xlast_name_xfirst_name_ylast_name_y
01AlexAndersonNaNNaN
12AmyAckermanNaNNaN
23AllenAliNaNNaN
34AliceAoniBillyBonder
45AyoungAtichesBrianBlack
56NaNNaNBranBalwner
67NaNNaNBryceBrice
78NaNNaNBettyBtisan

总结

在本练习中,我们使用Pandas进行了合并操作,主要涉及以下要点:

  • 使用pd.concat函数可以按行维度合并两个数据框。例如,将data1data2合并为all_data,使用pd.concat([data1, data2])
  • 使用pd.concat函数的axis参数可以按列维度合并两个数据框。例如,将data1data2按列维度合并为all_data_col,使用pd.concat([data1, data2], axis=1)
  • 使用pd.merge函数可以按照指定的列(如subject_id)对两个数据框进行合并。例如,按照subject_idall_datadata3合并,使用pd.merge(all_data, data3, on='subject_id')
  • 在合并操作中,可以使用how参数指定合并的方式,包括inner(内连接,保留两个数据框的交集)、outer(外连接,保留两个数据框的并集)等。
  • 合并操作可以帮助我们根据共享的列值将不同数据框中的信息整合在一起,从而进行更复杂的数据分析和处理。

pd.concat() 是 Pandas 中用于合并数据的函数之一,它通常用于按行或列方向将多个数据框连接在一起。以下是对 pd.concat() 函数的详细解释:

pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)

参数说明:

  • objs:要合并的对象,通常是一个包含多个数据框的列表或元组。
  • axis:指定合并的方向,可以是 0(默认,按行方向)或 1(按列方向)。
  • join:指定合并时的连接方式,可以是 'outer'(默认,取并集)或 'inner'(取交集)。
  • ignore_index:如果为 True,则在合并时重置索引,默认为 False,保留原始索引。
  • keys:创建一个层次化索引,用于标识每个原始数据框的来源。
  • levels:指定多层索引的级别名称。
  • names:为多层索引的级别指定名称。
  • verify_integrity:如果为 True,则检查合并后的数据是否唯一,如果有重复的索引,将引发异常,默认为 False
  • sort:如果为 True,则对合并后的数据进行排序,默认为 False
  • copy:如果为 True,则复制数据而不修改原始对象,默认为 True

pd.concat() 返回一个合并后的新数据框,不会修改原始数据框。

使用示例:

合并两个数据框按行方向(默认方式):

result = pd.concat([df1, df2])

合并两个数据框按列方向:

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

创建多层索引:

result = pd.concat([df1, df2], keys=['df1', 'df2'])

重置索引:

result = pd.concat([df1, df2], ignore_index=True)

pd.concat() 是一个非常有用的函数,用于在数据处理中将多个数据框合并在一起,以便进行分析和操作。

pd.merge() 是 Pandas 中用于合并数据的函数之一,它通常用于将两个数据框(DataFrame)按照指定的列或索引进行连接操作。以下是对 pd.merge() 函数的详细解释:

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:连接方式,可选值有 'left'(左连接,默认),'right'(右连接),'outer'(外连接),'inner'(内连接)。
  • on:连接列名,如果左右两侧的数据框都有相同列名,可以使用这个参数指定列名进行连接。
  • left_on:左侧数据框的连接列名,用于指定左侧数据框的连接列。
  • right_on:右侧数据框的连接列名,用于指定右侧数据框的连接列。
  • left_index:如果为 True,则使用左侧数据框的索引进行连接。
  • right_index:如果为 True,则使用右侧数据框的索引进行连接。
  • sort:如果为 True,则在连接之前对数据进行排序,默认为 False
  • suffixes:如果左右两侧数据框有相同列名,可以使用 suffixes 参数添加后缀以区分这些列,默认为 ('_x', '_y')
  • copy:如果为 True,则复制数据而不修改原始对象,默认为 True
  • indicator:如果为 True,则在结果中添加一个特殊的列 _merge,用于表示每行的合并方式,默认为 False
  • validate:用于验证连接操作的有效性,可选值有 'one_to_one''one_to_many''many_to_one''many_to_many'

pd.merge() 返回一个合并后的新数据框,不会修改原始数据框。

使用示例:

内连接两个数据框,使用相同列名连接:

result = pd.merge(left_df, right_df, on='key_column', how='inner')

左连接两个数据框,指定左侧数据框的连接列和右侧数据框的连接列:

result = pd.merge(left_df, right_df, left_on='left_key', right_on='right_key', how='left')

连接时使用左侧数据框的索引:

result = pd.merge(left_df, right_df, left_index=True, right_on='key_column', how='inner')

添加后缀以区分相同列名的列:

result = pd.merge(left_df, right_df, on='key_column', suffixes=('_left', '_right'))

pd.merge() 是一个强大的数据连接工具,可用于合并不同来源的数据,进行数据分析和处理。根据不同的连接需求,可以选择不同的连接方式和参数。

以上就是pandas数据探索之合并数据示例详解的详细内容,更多关于pandas合并数据的资料请关注脚本之家其它相关文章!

相关文章

  • 详解python 字符串和日期之间转换 StringAndDate

    详解python 字符串和日期之间转换 StringAndDate

    这篇文章主要介绍了python 字符串和日期之间转换 StringAndDate简单实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • 手把手教你实现Python重试超时装饰器

    手把手教你实现Python重试超时装饰器

    这篇文章主要为大家介绍了实现Python重试超时装饰器教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2023-05-05
  • 基于Python编写一个宝石消消乐小游戏

    基于Python编写一个宝石消消乐小游戏

    快过年回家啦用,本文将为大家介绍一个用python编写的宝石消消乐游戏用来哄小朋友,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2022-01-01
  • Pycharm学习教程(6) Pycharm作为Vim编辑器使用

    Pycharm学习教程(6) Pycharm作为Vim编辑器使用

    这篇文章主要为大家详细介绍了最全的Pycharm学习教程第六篇,Pycharm作为Vim编辑器使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Pytorch四维Tensor转图片并保存方式(维度顺序调整)

    Pytorch四维Tensor转图片并保存方式(维度顺序调整)

    这篇文章主要介绍了Pytorch四维Tensor转图片并保存方式(维度顺序调整),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python定时执行程序问题(schedule)

    Python定时执行程序问题(schedule)

    这篇文章主要介绍了Python定时执行程序问题(schedule),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Django使用rest_framework写出API

    Django使用rest_framework写出API

    这篇文章主要介绍了Django使用rest_framework写出API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • python中如何读取xlsx文件

    python中如何读取xlsx文件

    这篇文章主要介绍了python中如何读取xlsx文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python控制台获取输入与常见的正则表达式用法

    Python控制台获取输入与常见的正则表达式用法

    这篇文章主要给大家介绍了关于Python控制台获取输入与常见的正则表达式用法的相关资料,在Python编程中,控制台输入和正则表达式是两个重要而实用的概念,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 使用pycharm设置控制台不换行的操作方法

    使用pycharm设置控制台不换行的操作方法

    今天小编就为大家分享一篇使用pycharm设置控制台不换行的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01

最新评论