0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Pandas中使用Merge、Join、Concat合并数据的效率对比

数据分析与开发 来源:Deephub Imba 作者:Deephub Imba 2022-10-25 14:24 次阅读

在 Pandas 中有很多种方法可以进行DF的合并。

本文将研究这些不同的方法,以及如何将它们执行速度的对比。

合并

Pandas 使用 .merge() 方法来执行合并。

importpandasaspd

#adictionarytoconverttoadataframe
data1={'identification':['a','b','c','d'],
'Customer_Name':['King','West','Adams','Mercy'],'Category':['furniture','OfficeSupplies','Technology','R_materials'],}

#ourseconddictionarytoconverttoadataframe
data2={'identification':['a','b','c','d'],
'Class':['First_Class','Second_Class','Same_day','StandardClass'],
'Age':[60,30,40,50]}

#ConvertthedictionaryintoDataFrame
df1=pd.DataFrame(data1)
df2=pd.DataFrame(data2)
运行我们的代码后,有两个 DataFrame,如下所示。
identificationCustomer_NameCategory
0aKingfurniture
1bWestOfficeSupplies
2cAdamsTechnology
3dMercyR_materials

identificationClassAge
0aFirst_Class60
1bSecond_Class30
2cSame_day40
3dStandardClass50

使用 merge() 函数进一步合并。

2adbf736-541f-11ed-a3b6-dac502259ad0.png

#using.merge()function
new_data=pd.merge(df1,df2,on='identification')
这产生了下面的新数据;
identificationCustomer_NameCategoryClassAge
0aKingfurnitureFirst_Class60
1bWestOfficeSuppliesSecond_Class30
2cAdamsTechnologySame_day40
3dMercyR_materialsStandardClass50

.join() 方法也可以将不同索引的 DataFrame 组合成一个新的 DataFrame。我们可以使用参数‘on’参数指定根据哪列进行合并。

2b01b5b6-541f-11ed-a3b6-dac502259ad0.png   让我们看看下面的例子,我们如何将单索引 DataFrame 与多索引 DataFrame 连接起来;

importpandasaspd

#adictionarytoconverttoadataframe
data1={
'Customer_Name':['King','West','Adams'],
'Category':['furniture','OfficeSupplies','Technology'],}7
#ourseconddictionarytoconverttoadataframe
data2={
'Class':['First_Class','Second_Class','Same_day','StandardClass'],
'Age':[60,30,40,50]}

#ConvertthedictionaryintoDataFrame
Ndata=pd.DataFrame(data1,index=pd.Index(['a','b','c'],name='identification'))

index=pd.MultiIndex.from_tuples([('a','x0'),('b','x1'),
('c','x2'),('c','x3')],
names=['identification','x'])19
#ConvertthedictionaryintoDataFrame
Ndata2=pd.DataFrame(data2,index=index)

print(Ndata,"

",Ndata2)


#joiningsinglyindexedwith
#multiindexed
result=Ndata.join(Ndata2,how='inner')

我们的结果如下所示;

Customer_NameCategoryClassAge
identificationx3ax0KingfurnitureFirst_Class60
bx1WestOfficeSuppliesSecond_Class30
cx2AdamsTechnologySame_day40
x3AdamsTechnologyStandardClass50

连接DF

Pandas 中concat() 方法在可以在垂直方向(axis=0)和水平方向(axis=1)上连接 DataFrame。我们还可以一次连接两个以上的 DataFrame 或 Series。

让我们看一个如何在 Pandas 中执行连接的示例;

importpandasaspd

#adictionarytoconverttoadataframe
data1={'identification':['a','b','c','d'],
'Customer_Name':['King','West','Adams','Mercy'],
'Category':['furniture','OfficeSupplies','Technology','R_materials'],}

#ourseconddictionarytoconverttoadataframe
data2={'identification':['a','b','c','d'],
'Class':['First_Class','Second_Class','Same_day','StandardClass'],
'Age':[60,30,40,50]}

#ConvertthedictionaryintoDataFrame
df1=pd.DataFrame(data1)
df2=pd.DataFrame(data2)
#performconcatenationherebasedonhorizontalaxis
new_data=pd.concat([df1,df2],axis=1)
print(new_data)
这样就获得了新的 DataFrame :
identificationCustomer_NameCategoryidentification
0aKingfurniturea31bWestOfficeSuppliesb42cAdamsTechnologyc53dMercyR_materialsd

ClassAge
0First_Class60
1Second_Class30
2Same_day40
3StandardClass50

Merge和Join的效率对比

Pandas 中的Merge Joins操作都可以针对指定的列进行合并操作(SQL中的join)那么他们的执行效率是否相同呢?下面我们来进行一下测。 两个 DataFrame 都有相同数量的行和两列,实验中考虑了从 100 万行到 1000 万行的不同大小的 DataFrame,并在每次实验中将行数增加了 100 万。我对固定数量的行重复了十次实验,以消除任何随机性。下面是这十次试验中合并操作的平均运行时间。

2b2f5282-541f-11ed-a3b6-dac502259ad0.png

上图描绘了操作所花费的时间(以毫秒为单位)。

正如我们从图中看到的,运行时间存在显着差异——最多相差 5 倍。随着 DataFrame 大小的增加,运行时间之间的差异也会增加。两个 JOIN 操作几乎都随着 DataFrame 的大小线性增加。但是,Join的运行时间增加的速度远低于Merge。

如果需要处理大量数据,还是请使用join()进行操作。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4304

    浏览量

    62420
  • 代码
    +关注

    关注

    30

    文章

    4742

    浏览量

    68333
  • merge
    +关注

    关注

    0

    文章

    5

    浏览量

    2470
  • concat
    +关注

    关注

    0

    文章

    3

    浏览量

    1910

原文标题:Pandas 中使用 Merge、Join 、Concat 合并数据的效率对比

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    pandas数据分析的方法

    pandas数据分析中常用方法
    发表于 06-03 06:16

    Fork/Join的框架机制详解

    策略在分布式数据库中非常常见,数据分布在不同的数据库的副本中,在执行查询时,每个服务都要跑查询任务,最后在一个服务上做数据合并,或者提供一个
    发表于 01-05 17:51

    pandas是什么

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着
    发表于 08-09 07:39

    pandas使用步骤

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结学习内容:学习时间:学习产出:前言一、pandas是什么?二
    发表于 08-10 07:50

    pandas是什么?

    文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言一、pandas是什么?二、使用步骤1.引入库代码如下(示例):import numpy as npimport
    发表于 01-11 07:53

    pandas是什么?

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着
    发表于 01-12 07:53

    对于mergejoinconcat三者的区别分析

    合并的方式看mergejoin是一样的,有left/right/inner/outer,而concat只有inner/outer两种,因为mer
    的头像 发表于 01-06 11:55 2w次阅读
    对于<b class='flag-5'>merge</b>、<b class='flag-5'>join</b>和<b class='flag-5'>concat</b>三者的区别分析

    Git命令解析-merge、rebase

    把feature的分支代码合并回到master,通常执行的操作是先检出master分支,然后执行git merge feature。一般来说,在单人开发的情况下,merge通常会产生快进(fast-forward
    的头像 发表于 07-29 18:21 1055次阅读
    Git命令解析-<b class='flag-5'>merge</b>、rebase

    5个必须知道的Pandas数据合并技巧

    concatpandas中专门用于数据连接合并的函数,功能非常强大,支持纵向合并和横向合并,默
    的头像 发表于 04-13 10:35 2288次阅读

    应用层关联的优势 MySQL不推荐使用join的原因

    对于mysql,不推荐使用子查询和join是因为本身join效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引单表取
    发表于 02-23 14:07 470次阅读

    如何优化MySQL中的join语句

    在mysql中,join 主要有Nested Loop、Hash JoinMerge Join 这三种方式,我们今天来看一下最普遍 Nested Loop 循环连接方式,主要包括三种
    的头像 发表于 04-24 17:03 785次阅读
    如何优化MySQL中的<b class='flag-5'>join</b>语句

    Python Pandas如何来管理结构化数据

    和DataFrame)。   在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过提供数据清理、重塑、合并和聚合,可以将原始
    的头像 发表于 05-25 11:22 659次阅读
    Python <b class='flag-5'>Pandas</b>如何来管理结构化<b class='flag-5'>数据</b>

    git rebase和git merge的区别

      解决冲突 git rebase和git merge的区别 分支合并 git merge是用来合并两个分支的。 比如:将 b 分支合并到当
    的头像 发表于 07-05 09:54 618次阅读
    git rebase和git <b class='flag-5'>merge</b>的区别

    pandas合并数据的5个函数

    今天借着这个机会,就为大家盘点一下pandas合并数据的5个函数。 join join是基于索引的横向拼接,如果索引一致,直接横向拼接。如
    的头像 发表于 10-31 11:11 705次阅读
    <b class='flag-5'>pandas</b>中<b class='flag-5'>合并</b><b class='flag-5'>数据</b>的5个函数

    Pandas DataFrame的存储格式性能对比

    Pandas 支持多种存储格式,在本文中将对不同类型存储格式下的Pandas Dataframe的读取速度、写入速度和大小的进行测试对比。 创建测试Dataframe 首先创建一个包含不同类型
    的头像 发表于 11-03 09:58 495次阅读
    <b class='flag-5'>Pandas</b> DataFrame的存储格式性能<b class='flag-5'>对比</b>