首页 > 其他分享 >用pandas探索你的数据(五)-合并数据

用pandas探索你的数据(五)-合并数据

时间:2023-10-08 10:48:41浏览次数:31  
标签:name 探索 合并 id pd 数据 pandas subject

用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 将data1data2两个数据框按照行的维度进行合并,命名为all_data

# 运行以下代码
all_data = pd.concat([data1, data2])
all_data
subject_id first_name last_name
0 1 Alex Anderson
1 2 Amy Ackerman
2 3 Allen Ali
3 4 Alice Aoni
4 5 Ayoung Atiches
0 4 Billy Bonder
1 5 Brian Black
2 6 Bran Balwner
3 7 Bryce Brice
4 8 Betty Btisan

步骤5 将data1data2两个数据框按照列的维度进行合并,命名为all_data_col

# 运行以下代码
all_data_col = pd.concat([data1, data2], axis = 1)
all_data_col
subject_id first_name last_name subject_id first_name last_name
0 1 Alex Anderson 4 Billy Bonder
1 2 Amy Ackerman 5 Brian Black
2 3 Allen Ali 6 Bran Balwner
3 4 Alice Aoni 7 Bryce Brice
4 5 Ayoung Atiches 8 Betty Btisan

步骤6 打印data3

# 运行以下代码
data3
subject_id test_id
0 1 51
1 2 15
2 3 15
3 4 61
4 5 16
5 7 14
6 8 15
7 9 1
8 10 61
9 11 16

步骤7 按照subject_id的值对all_datadata3作合并

# 运行以下代码
pd.merge(all_data, data3, on='subject_id')
subject_id first_name last_name test_id
0 1 Alex Anderson 51
1 2 Amy Ackerman 15
2 3 Allen Ali 15
3 4 Alice Aoni 61
4 4 Billy Bonder 61
5 5 Ayoung Atiches 16
6 5 Brian Black 16
7 7 Bryce Brice 14
8 8 Betty Btisan 15

步骤8 对data1data2按照subject_id作连接

# 运行以下代码
pd.merge(data1, data2, on='subject_id', how='inner')
subject_id first_name_x last_name_x first_name_y last_name_y
0 4 Alice Aoni Billy Bonder
1 5 Ayoung Atiches Brian Black

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

# 运行以下代码
pd.merge(data1, data2, on='subject_id', how='outer')
subject_id first_name_x last_name_x first_name_y last_name_y
0 1 Alex Anderson NaN NaN
1 2 Amy Ackerman NaN NaN
2 3 Allen Ali NaN NaN
3 4 Alice Aoni Billy Bonder
4 5 Ayoung Atiches Brian Black
5 6 NaN NaN Bran Balwner
6 7 NaN NaN Bryce Brice
7 8 NaN NaN Betty Btisan

总结

总结:

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

  1. 使用pd.concat函数可以按行维度合并两个数据框。例如,将data1data2合并为all_data,使用pd.concat([data1, data2])

  2. 使用pd.concat函数的axis参数可以按列维度合并两个数据框。例如,将data1data2按列维度合并为all_data_col,使用pd.concat([data1, data2], axis=1)

  3. 使用pd.merge函数可以按照指定的列(如subject_id)对两个数据框进行合并。例如,按照subject_idall_datadata3合并,使用pd.merge(all_data, data3, on='subject_id')

  4. 在合并操作中,可以使用how参数指定合并的方式,包括inner(内连接,保留两个数据框的交集)、outer(外连接,保留两个数据框的并集)等。

  5. 合并操作可以帮助我们根据共享的列值将不同数据框中的信息整合在一起,从而进行更复杂的数据分析和处理。

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() 返回一个合并后的新数据框,不会修改原始数据框。

使用示例:

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

    result = pd.concat([df1, df2])
    
  2. 合并两个数据框按列方向:

    result = pd.concat([df1, df2], axis=1)
    
  3. 创建多层索引:

    result = pd.concat([df1, df2], keys=['df1', 'df2'])
    
  4. 重置索引:

    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() 返回一个合并后的新数据框,不会修改原始数据框。

使用示例:

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

    result = pd.merge(left_df, right_df, on='key_column', how='inner')
    
  2. 左连接两个数据框,指定左侧数据框的连接列和右侧数据框的连接列:

    result = pd.merge(left_df, right_df, left_on='left_key', right_on='right_key', how='left')
    
  3. 连接时使用左侧数据框的索引:

    result = pd.merge(left_df, right_df, left_index=True, right_on='key_column', how='inner')
    
  4. 添加后缀以区分相同列名的列:

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

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

本文由mdnice多平台发布

标签:name,探索,合并,id,pd,数据,pandas,subject
From: https://www.cnblogs.com/haidao09/p/17748300.html

相关文章

  • 升讯威在线客服系统的并发高性能数据处理技术:对接百度自动翻译
    我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可。客户组织多名客服上线后,所有员工同一时间打开访客页面疯狂不停的给在线客服发消......
  • VSCode & Intellij IDEA CE 数据库连接
    VSCode&IntellijIDEACE数据库连接大概记一下现在正在用的几个工具/插件VSCodeVSCode里面的工具我下载了很多,如果只是链接MySQL的话,可能用JunHan这位大佬的MySQL就好了:使用这个插件直接打开.sql文件单击运行就能跑sql命令,而且跑起来也挺方便的不过我们项目......
  • 盘点一个Python自动化办公Excel数据填充实战案例(上篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公的问题,一起来看看吧。有个表格,里面每行信息,如下图所示:现在需要将数据贴到另一个文件指定单元格中,另一个文件是这样子的。下图是他的原始数据和他想得到的目标数据,一页有三个,如下所......
  • Redis数据类型和应用场景
    一、Redis常用的5种数据类型字符串(String):最基本的数据类型,可以存储字符串、整数或浮点数。哈希(Hash):键值对的集合,可以在一个哈希数据结构中存储多个字段和值。列表(List):按照插入顺序存储一组有序的值,可以在列表的两端执行插入、删除和访问操作。集合(Set):无序的唯一值的集合,支持......
  • 高效数据管理:Java助力实现Excel数据验证
    摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言在Java中,开发者可以使用一些开源的库(如ApachePOI)来添加、修改和处理Excel中的数据:包括数字、文本、日期、列表等。每种数据验证类型都具有不......
  • Rockchip RK3399 - linux下抓取usb数据包
    ----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6英寸HDMI接口显示屏u-boot:2017.09linux:4.19----------------------------------......
  • 数据结构的思维导图(帮助梳理脉络)
    编辑......
  • 如何用tfds加载本地数据库
    云端的数据库存储在google的服务器,所以无法通过tfds.load('mnist',split='train')这样的方式直接加载,下面是一些变通的方式来读取。一、MNIST数据库1.我用tfds.load去加载本地的mnist数据库,mnist/3.0.1应该具有什么样的数据格式答:如果你正在使用`tfds.load`来加载本地的MNIST......
  • python · ssh · SQL | python 连接远程 SQL 数据库
    python连接本地SQL的教程存档。如果要连接远程的SQL数据库,需要先开一个ssh连接,在ssh连接里写pymysql的connect代码。代码如下:'''pipinstallpymysqlpipinstallsshtunnel'''importpymysqlimportpandasaspdfromsshtunnelimportSSHTunnelForward......
  • 数据可视化:将大数据转化为见解
    在今天的数字时代,大数据已经成为企业和组织中不可或缺的一部分。然而,大数据本身对于普通人来说可能过于庞大和复杂,难以理解和分析。在这种情况下,数据可视化成为一种强大的工具,可以将大数据转化为易于理解的见解。本文将介绍数据可视化的重要性,并提供一些用于数据可视化的示例代码,帮......