数据分析 day04(三)

pandas的拼接操作

pandas中拼接操作有两种:
级联与合并

导入模块

import pandas as pd
import numpy as np
from pandas import Series,DataFrame

1、pandas中的级联

pandas中的级联,主要是针对于DataFrame的操作
级联函数:pd.concat(objs,axis=0,join=“outer”,…)

1.1 简单级联

对行进行级联的时候列标对应相同,对列进行级联的时候行标对应相同,此时级联会非常顺利,这样的级联就是简单级联

首先创建三个DataFrame对象
在这里插入图片描述

pandas中级联不仅要看形状是否一致,还要看对应的索引是否一致
在这里插入图片描述

1.2 不匹配级联

不匹配级联是指:对行级联列标有不匹配的相,对列级联行标有不匹配的相
(这些报红是警告,并不影响功能,版本低的可能就没有,版本高的一些功能会进行更改,可以加上sort=True)
axis默认为0,表示按行级联;axis=1表示按列级联
在这里插入图片描述
在这里插入图片描述

不匹配级联有以下几种链接方式

首先再创建一个DataFrame对象df4
在这里插入图片描述

  1. 外连接
    join参数默认是"outer"代表外联接,对应行标或者列标如果有不匹配的地方则先补NaN再连接
    在这里插入图片描述
  1. 内连接
    join参数值为"inner"代表内连接,对应的行标或者列标如果有不匹配的地方直接去掉

行级联
在这里插入图片描述
对比外连接,就是把含有NaN列都去掉
在这里插入图片描述

列级联
在这里插入图片描述
对比外连接,就是把含有NaN行都去掉
在这里插入图片描述

  1. 指定轴连接
    默认axis=0,指定列时,要匹配的是行元素,axis=0,可以不写
    指定行时,要匹配的是列元素,axis=1,此时要写上

创建一个DataFrame对象df5
在这里插入图片描述
综合连接,有很多不匹配的地方
在这里插入图片描述

指定轴连接,指定"a",“c”,"g"三列,不匹配的地方以NaN补齐
在这里插入图片描述
还可以 以某个DataFrame对象的列为指定值
在这里插入图片描述
除了指定列,还可以指定行
在这里插入图片描述

1.3 append()函数

DataFrame的append()函数,用于将两个DataFrame进行行级联
在这里插入图片描述
df1.append(df2)
在这里插入图片描述
df2.append(df1)
在这里插入图片描述

2、合并

pd.merge()用于合并,合并与级联的区别:

  1. 级联可以对行也可以对列,合并只能对列
  2. 级联不需要有公共属性,而合并必须依赖于一个或者若干个key
  3. 合并的功能要比级联更加强大

首先创建两个DataFrame对象
在这里插入图片描述

2.1 合并形式
  1. 一对一合并
    合并如果key值是两个表的公共属性,会把他们并成一个属性
    df1和df2有公共属性name,可以直接以name为key值来合并在这里插入图片描述
    无公共属性的时候两个表不能直接合并
    新建一个DataFrame对象df3,此时属性名变为"姓名"
    在这里插入图片描述
    df1和df3无公共属性,不能合并
    在这里插入图片描述
  1. 一对多合并
    新建一个DataFrame对象df4,
    在这里插入图片描述
    df1中的name属性的某些值在df4中有多个相对应,这种的合并就是一对多合并
    一的那方把元素按照多的那一方扩展,然后合并
    在这里插入图片描述
  1. 多对多合并
    新建一个DataFrame对象df5,
    在这里插入图片描述
    f4中的name属性中的某些值有重复且在df5中有多个对应
    拿df4的每一和df5的每一个分别匹配
    在这里插入图片描述
2.2 key值的规范化

两个表之间进行合并会以某些公共的属性作为合并的key值,进行匹配并合并

2.2.1 如果有多个公共属性
  1. 当有多个公共属性的时候,默认情况下合并会以所有的公共属性为key,进行匹配
    在这里插入图片描述
    合并df1和df6
    在这里插入图片描述
  1. 指定以某一个属性为key来合并,
    此时其他的公共属性就会冲突,我们需要做一个冲突处理
    在这里插入图片描述
2.2.2 如果没有公共属性

df1和df3,没有公共属性
在这里插入图片描述

  1. 如果两个表没有公共属性,我们可以左边出一个属性,右边出一个属性,共同构成key值来进行合并
    左边df1出属性"name",右边df3出属性"姓名"
    在这里插入图片描述
    由于左侧和右侧出的key值名字不一样,所以没有合成一个属性,我们需要去掉一个
    使用drop函数
    去掉指定的行(或者列)索引,axis代表指定维度
    在这里插入图片描述
  1. 左侧出索引右侧出索引来合并
    在这里插入图片描述
2.3 内合并、外合并、左合并与右合并

df1
在这里插入图片描述
df7
在这里插入图片描述

  1. 内合并,不匹配的地方直接去掉
    在这里插入图片描述
  1. 外合并 不匹配的地方补nan
    在这里插入图片描述
  1. 左合并(方式同内合并)
    在这里插入图片描述
  1. 右合并(方式同外合并)
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值