使用Pandas进行数据匹配

本文转载自:蓝鲸的网站分析笔记

原文链接:使用Pandas进行数据匹配

目录

  • merge()介绍

    • inner模式匹配
    • lefg模式匹配
    • right模式匹配
    • outer模式匹配
    • NaN值匹配模式

Pandas中的merge函数类似于Excel中的Vlookup,可以实现对两个数据表进行匹配和拼接的功能。与Excel不同之处在于merge函数有4种匹配拼接模式,分别为inner,left,right和outer模式。 其中inner为默认的匹配模式。本篇文章我们将介绍merge函数的使用方法和4种拼接模式的区别。

下面是我们准备进行拼接的两个数据表,左边是贷款状态表loan_stats,右边为用户等级表member_grade。我们将分别用merge函数的4种匹配模式对这两个表进行拼接。

准备工作

开始使用merge函数进行数据拼接之前先导入所需的功能库,然后将分别读取两个数据表,并命名为loanstats表和member_grade表。

1
2
3
4
import numpy as np
import pandas as pd
loanstats=pd.DataFrame(pd.read_excel('loanStats.xlsx'))

member_grade=pd.DataFrame(pd.read_excel('member_grade.xlsx'))

函数功能介绍

merge函数的使用方法很简单,以下是官方的函数功能介绍和使用说明。merge函数中第一个出现的数据表是拼接后的left部分,第二个出现的数据表是拼接后的right部分。第三个是数据匹配模 式,默认是inner模式。第四个参数on表示数据匹配所依据的字段名称,如果这个字段名称同时出现在两个数据表中,那么可以省略on参数的设置,merge默认会按照两个数据表中共有的字段名称进行匹配和拼接。如果两个数据表中的匹配字段名称不一致,则需要分别在left_on和right_on参数中指明两个表匹配字段的名称。如果两个数据表中没有匹配字段,需要使用索引列进行匹配和拼接,可以对left_index和right_index参数设置为True。merge还有一些排序和其他的参数,可在需要使用时进行设置。

Inner模式匹配

inner模式是merge的默认匹配模式,我们通过下面的文氏图来说明inner的匹配方法。Inner模式提供在loanstats和member_grade表中共有字段的匹配结果。也就是对两个的表交集部分进行匹配和拼接。单独只出现在一个表中的字段值不会参与匹配和拼接。

以下是使用merge函数进行拼接的代码,因为inner是默认的拼接模式,因此也可以省略how=’inner’部分。其中第一个出现的loanstats出现在拼接后的左侧,member_grade出现在拼接后的右侧。拼接后的数据表中只包含两个表的交集,因此不存在未匹配到的NaN情况。

1
loan_inner=pd.merge(loanstats,member_grade,how='inner')


left模式匹配

left模式是左匹配,以左边的数据表loanstats为基础匹配右边的数据表member_grade中的内容。匹配不到的内容以NaN值显示。在Excel中就好像将Vlookup公式写在了左边的表中。下面的文氏图说明了left模式的匹配方法。Left模式匹配的结果显示了所有左边数据表的内容,以及和右边数据表共有的内容。

以下为使用left模式匹配并拼接后的结果,loanstats在merge函数中第一个出现,因此为左表,member_grade第二个出现,为右表。匹配模式为left模式。从结果中可以看出left匹配模式保留了一张完整的loanstats表,以此为基础对member_grade表中的内容进行匹配。loanstats表中有两个member_id值在member_grade中无法找到,因此grades字段显示为NaN值。

1
loan_left=pd.merge(loanstats,member_grade,how='left')


right模式匹配

第三种模式是right匹配,right与left模式正好相反,right模式是右匹配,以右边的数据表member_grade为基础匹配左边的数据表loanstats。匹配不到的内容以NaN值显示。下面通过文氏图说明right模式的匹配方法。Right模式匹配的结果显示了所有右边数据表的内容,以及和左边数据表共有的内容。

以下为使用right模式匹配拼接的结果,从结果表中可以看出right匹配模式保留了完整的member_grade表,以此为基础对loanstats表进行匹配,在member_grade数据表中有两个条目在loanstats数据表中无法找到,因此显示为了NaN值。

1
loan_right=pd.merge(loanstats,member_grade,how='right')

outer模式匹配

最后一种模式是outer匹配,outer模式是两个表的汇总,将loanstats和member_grade两个要匹配的两个表汇总在一起,生成一张汇总的唯一值数据表以及匹配结果。


下面是使用outer模式匹配拼接的结果,其中member_id列包含了loanstats和member_grade中的唯一值,grade列显示了对member_grade表匹配的结果,其他列则显示了对loanstats表匹配的结果 ,无法匹配的内容以NaN值显示。

1
loan_outer=pd.merge(loanstats,member_grade,how='outer')


NaN值匹配问题

在进行数据匹配和拼接的过程中经常会遇到NaN值。这种情况下merge函数会如何处理呢?merge会将两个数据表中的NaN值进行交叉匹配拼接,换句话说就是将loanstats表member_id列中的NaN值
分别与member_grade表中member_id列中的每一个NaN值进行匹配,然后再拼接在一张表中。下面是包含NaN值的两张数据表进行拼接的结果,当我们使用left模式进行匹配时,loanstats作为基础
表,其中member_id列的NaN值分别与member_grade表中member_id列的每一个NaN值进行匹配。并将匹配结果显示在了结果表中。

1
loan_left=pd.merge(loanstats,member_grade,how='left')

转载于:https://www.cnblogs.com/leeInvisible/p/10395573.html

转载:使用Pandas进行数据匹配相关推荐

  1. 【转载】使用Pandas创建数据透视表

    使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...

  2. 用pandas处理数据过程记录

    STEP1 split_ananm#把原始数据(分公司的数据)处理成分分析师的数据. df=pd.read_excel('before16.xlsx)#读取xlsx,命名为dfdf.set_index ...

  3. Python数据分析pandas之数据拼接与连接

    Python数据分析pandas之数据拼接与连接 数据拼接处理 数据拼接处理指的是numpy.pandas里对数据的拼接.连接.合并等多种方法的概称.有时我们处理的数据会分很多步骤,而中间或者最终的结 ...

  4. antd 获取table选中行数据_Excel数据匹配:函数法+PQ法+PB法

    无论是在办公室还是实验室,数据匹配都是我们的日常任务. 假设一个情境来说明数据匹配的逻辑: 下图是一张[总体表],记录了动画片<葫芦兄弟>中10位主要角色的姓名.身份和能力,这是我们需要的 ...

  5. [转载] Python pandas数据分析中常用方法

    参考链接: Python | Pandas处理文本text数据 官方教程 读取写入文件 官方IO 读取 写入 read_csv to_csv read_excel to_excel read_hdf ...

  6. pandas:数据筛选的8个操作

    文章来源于 公众号 Python数据科学的文章pandas 筛选数据的 8 个骚操作,是个很不错的系列,感兴趣的同学可以移步去学习. 数据分析最常用到的就是查询筛选,按各种条件.各种维度以及组合挑出我 ...

  7. pandas学习(数据分组与分组运算、离散化处理、数据合并)

    pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表数 ...

  8. Pandas处理数据遇到的问题与解决

    前言 主要记录自己pandas处理数据遇到的一些困难,基础非常薄弱,希望能越来越熟练 Next:set_index与reindex的区别 问题描述 经常会遇到 更改index 将某一个column的信 ...

  9. 使用Pandas对数据进行筛选和排序

    使用Pandas对数据进行筛选和排序 转自:http://bluewhale.cc/2016-08-06/use-pandas-filter-and-sort.html 筛选和排序是Excel中使用频 ...

最新文章

  1. 互联网大佬口口声声的人工智能,笑到最后的也许是马云的云计算
  2. 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
  3. openstack quantum搭建过程中一些有用的链接
  4. Windows编程初步(二)
  5. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%
  6. 英语一窍不通能学计算机吗,对英语一窍不通怎么学有什么好的方法
  7. 详解ProToolkit注册文件
  8. 软件观念革命:交互设计精髓_最全交互设计书单
  9. 巨蟒python全栈开发-第5天 字典集合
  10. 华为云服务器安装win10系统,云服务器安装win10
  11. html 苹果6尺寸,iPhone6界面设计尺寸规范大全【含原型设计规范】
  12. 计算机RRC是什么指令,srb0 srb1 srb2的区别_srb什么意思_srb1 RRC建立请求
  13. ICCV 2015 B-CNN细粒度分类
  14. 天涯共此时--中秋赏古诗
  15. anthony1314的小笔记
  16. 抑郁研究所融资历程分享--以太一堂--直播课
  17. android选择相册图片并显示
  18. OTG线与普通USB线的区别
  19. C语言 数组元素的遍历
  20. 键盘按键修改工具(修改默认按键位置) 绿色版

热门文章

  1. 邓斌老师华为原中国区规划咨询总监,华友会华为管理研究院执行院长
  2. 外设驱动库开发笔记50:HP203B气压传感器驱动
  3. 认识计算机学情分析方案,知学情 研教法 夯基础 重效果-------计算机应用工程系召开2014级学情分析会...
  4. notepad 记事本的问题
  5. Java毕设项目便利店系统(java+VUE+Mybatis+Maven+Mysql)
  6. 施耐德电气新款中压智能真空断路器上市,一手资料全解析
  7. Unbuntu系统下,切换python版本
  8. 【JZOJ 省选模拟】6681.图
  9. 利用Matplotlib进行科技论文绘图模板
  10. laravel微信公众号自定义分享获取签名