推广

pandas数据合并:concat、join、append

iseeyu2年前 (2024-02-21)推广142

image

Pandas连载

本文是Pandas数据分析库的第15篇,欢迎阅读:

image

模拟数据

首先是模拟几份不同的数据:

import pandas as pd
import numpy as np

image

image

image

image

image

concat

concat也是一个常用的合并函数,下面通过具体例子来介绍它的使用。

参数

pandas.concat(objs,  # 合并对象
              axis=0,   # 合并方向,默认是0纵轴方向
              join='outer', # 合并取的是交集inner还是并集outer
              ignore_index=False, # 合并之后索引是否重新
              keys=None, # 在行索引的方向上带上原来数据的名字;主要是用于层次化索引,可以是任意的列表或者数组、元组数据或者列表数组
              levels=None, # 指定用作层次化索引各级别上的索引,如果是设置了keys
              names=None, # 行索引的名字,列表形式
              verify_integrity=False, # 检查行索引是否重复;有则报错
              sort=False, # 对非连接的轴进行排序
              copy=True   # 是否进行深拷贝
             )

默认情况

默认情况是直接在纵向上进行合并

image

axis

指定合并的方向

image

image

如果某个数据框中不存在,则会显示为NaN:

image

  • 根据实际数据调整合并的方向,默认是axis=0
  • 某个数据库中不存在的数据,用NaN代替

参数ignore_index

是否保留原表索引,默认保留,为 True 会自动增加自然索引。

image

参数join

指定取得交集inner还是并集outer,默认是并集outer

image

df3和df4只有地址这个字段是相同的,所以保留了它,其他的舍弃了:

image

参数keys

image

当我们设置了索引重排(ignore_index=True),keys参数就无效啦

image

参数name

指定每个层级索引的名字

image

我们可以检查下df6的索引,发现是层级索引:

image

合并多个DataFrame

同时合并df1、df2、df5

pd.concat([pd.concat([df1,df2],axis=0,ignore_index=True),df5],axis=1)

image

分两步来实现:先合并df1、df2,将得到的结果和df5合并

image

join

参数

来自官网的参数说明:

dataframe.join(other,  # 待合并的另一个数据框
        on=None,  # 连接的键
        how='left',   # 连接方式:‘left’, ‘right’, ‘outer’, ‘inner’ 默认是left
        lsuffix='',  # 左边(第一个)数据框相同键的后缀
        rsuffix='',  # 第二个数据框的键的后缀
        sort=False)  # 是否根据连接的键进行排序;默认False

模拟数据

为了解释join的操作,再模拟下数据:

image

image

image

参数 lsuffix、rsuffix

功能是为了添加指定的后缀

image

如果不指定的话,会报错:

image

参数how

how参数默认是left,保留左边的全部字段。右边不存在的数据用NaN

image

改成right之后,保留右边的全部数据:

image

可以在默认的参数结果中,name字段被分成了name_left和name_right,如何进行字段的合并呢???

  1. 先把键当做行索引
  2. 通过join合并
  3. 通过reset_index()重新设置索引

image

合并两个数据:

image

最后进行索引重置的功能:

image

还有一种更为简便的方法:

image

合并多个DataFrame

利用join来实现多个DataFrame的合并:

image

如果我们想要用merge函数来实现呢?

使用how=”outer”,保留全部字段的数据信息

image

append

字面意思是“追加”。向dataframe对象中添加新的行,如果添加的列名不在dataframe对象中,将会被当作新的列进行添加

参数

DataFrame.append(other, 
                 ignore_index=False, 
                 verify_integrity=False, 
                 sort=False)

参数解释:

  • other:待合并的数据。可以是pandas中的DataFrame、series,或者是Python中的字典、列表这样的数据结构
  • ignore_index:是否忽略原来的索引,生成新的自然数索引
  • verify_integrity:默认是False,如果值为True,创建相同的index则会抛出异常的错误
  • sort:boolean,默认是None。如果self和other的列没有对齐,则对列进行排序,并且属性只在版本0.23.0中出现。

模拟数据

image

添加不同类型数据

1、Python字典

image

2、Series类型

image

3、最常用的DataFrame

image

默认合并

df12和df13默认合并的结果:

image

参数ignore_index

改变生成的索引值

image

参数verify_integrity

默认是False,如果值为True,创建相同的index则会抛出异常的错误

image

image

案例实战

假设现在一个excel表中有3个sheet:订单表、订单商品表、商品信息表:

1、订单表

image

2、订单商品表

image

3、商品信息表

image

现在我们通过合并函数将3个sheet中的内容关联起来:

import pandas as pd
import numpy as np

# 读取订单表中的内容
df1 = pd.read_excel("水果订单商品信息3个表.xlsx",sheet_name=0)  # 第一个sheet的内容,索引从0开始
df1

image

#  读取订单商品表
df2 = pd.read_excel("水果订单商品信息3个表.xlsx",sheet_name=1)

# 商品信息表
df3 = pd.read_excel("水果订单商品信息3个表.xlsx",sheet_name="商品信息")  # 可以直接指定sheet的名字name,不通过索引
df3

image

第一步:订单表和订单商品表的合并

image

第二步:将上面的结果和商品信息表合并

image

当我们得到上面的结果后,就可以完成很多的需求,举2个例子说明:

1、不同水果的销量和订单数:根据水果进行分组统计数量和订单数

image

2、不同区域的水果销售额和客户数

image

总结

两篇关于pandas数据合并的文章,详细介绍了4个函数:merge、concat、join、append的使用;其中,merge和concat最为常用。它们可以是实现SQL中join的功能。不管是交集、并集、还是左右连接,甚至是全连接都是可以直接实现的。

上面的实战案例数据是存放在一个Excel表中。在pandas中,我们可以从不同的来源:Excel、数据库、本地文件夹等获取来进行数据合并,方便后续实现我们的需求,希望本文对读者有所帮助。

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57502.html

相关文章

小编教你母婴用品广告推广,母婴用品免费发布信息网。

小编教你母婴用品广告推广,母婴用品免费发布信息网。

网络推广重在推广,更注重的是通过推广后,给企业带来的网站流量、世界排名、访问量、注册量等等,目的是扩大被推广对象的知名度和影响力。下面是小编整理的企业网站推广平台渠道和网络推广的知识,希望对你有帮助!广告推广,母婴用品免费发布信息网 交互性强是互联网络媒体的最大的优势,它不同于传统媒体的...

服装等多品类销量缩水,母婴店如何激发抗风险能力?

2020年能成为店的一次大考,很大程度上是营收起伏过大不断冲击了门店的体系。客流减少、大单难求、品类营收贡献参差不齐......母婴店品类结构调整也成为今年行业的热门话题。奶粉圈在走访时了解到,很多门店都出现不同程度缩水,这对门店有什么启示?我们一起来看看。春季服装积压重,...

淘宝开店需要什么证件,个人申请淘宝店需要什么要求(在淘宝上开网店需要什么手续)

淘宝开店需要什么证件,个人申请淘宝店需要什么要求(在淘宝上开网店需要什么手续)

​现在有很多人都会想在网上开店铺,但在开店之前,我们需要了解开店所需的证件。下面,将从企业店铺和个人店铺两个方面来为大家介绍淘宝开店所需的证件,希望大家阅读了这些方面的信息后能对开店铺的朋友有帮助。...

关于BFC的整理

关于BFC的整理

image.png 发现两个同级的块级盒子在垂直方向上margin值应该是20px,但是却只有10px,发生了重叠 于是我使用BFC的一条规则 ” overflow: hidden; “来去除重叠问题 <!DOCTYPE html> <html lang="en"&...

老域名再用应如何保留其网站SEO优化效果。

老域名再用应如何保留其网站SEO优化效果。

做SEO优化,很多人都忌讳从头开始做,这样也就意味着之前全部的努力都消失了。所以很多人一般都不会轻易对网站进行改版的,因为一般改版都会伤筋动骨,对已有的关键词排名会有很大的影响。那么老域名再用应如何保留其网站SEO优化效果? 网站改版,企业都担心针对以前老网站做的优化又得从头做起,其实这个不必过于...

手表淘宝分期付款(淘宝分期买手表怎么分期)

手表淘宝分期付款(淘宝分期买手表怎么分期)

淘宝怎么分期付款买东西 1、打开商品,进入淘宝首页页面,页面选择要购买的商品点击打开。点击购买,进入商品详情页面,选择购买点击打开,页面显示立即购买窗口。选择商品版本,更多版本选择商品版本点击,选择商品净含量,选择购买数量。 2、淘宝花呗分期有2种方式,分别是购买时直接分期购买和付款后对账单...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片