前言学习Pandas的最好方式就是多用它,只有在实际中多用,才能更好地掌握其中的技巧,这一次我们从数据的聚合来开始。

GroupBy的使用

聚合的意思指的是对数据框架中某一类型的数据进行整合,在整合后可以对其进行求和、求平均值等操作,下面举例说明:对上面创建的数据框架按公司进行分类,求各公司的人均销售额:再来统计一下各公司出现的次数:请注意,在用count统计的时候,groupby是按哪列分组,则统计的就是哪列中不同类别的个数。在Pandas中,有一个函数.describe(),它通常用来给出一个数据框架的纵览,比如:上述的输出结果中,有各公司出现的次数、销售额的均值、均方差、最小最大值等等,如果觉得这样的排列看起来不好看,还可以将其转置:或者只看一个公司的纵览:

数据框架的级联(concatenation)

为了说明数据集的级联,我们考虑这样一种情况,某公司派出一些数据采集人员对某个地区的某些产品进行满意度调查,比如调查ABCD四种产品,分别得到的数据如下:现需要将这些数据合在一起进行分析,这种情况下就要用到数据集的级联概念。在Pandas中,用.concat()来完成数据集的级联:从上述输出结果来看,整合数据的任务完成了,这种级联的方案属于按列级联,相应地,肯定还有一种按行级联,此时需要添加参数axis=1从上述结果来看,当按行级联时,由于在每个数据框架中,我们为其指定的index都不重合,因此,级联的结果中,不同框架中缺少数据的部分,都是用NaN来填充,如果还记得上一节中fillnan函数,那么一定记得它也有一个参数axis=1设置为填充行时的情况。也就是说,在DataFrame中,如果一个函数对行列均有效果时,其默认情况都是对列操作的。上述的级联中,我们之所有产生了那么多缺失值,是由于各数据的index不重合,如果有重合的情况会怎么样呢?

数据的合并(merge)

如果熟悉SQL语言的同学肯定对数据表的合并不陌生,在pandas中,主要是通过pd.merge函数来进行的,它的语法是这样的:

pd.merge(leftdata, rightdata, how='inner', on='Key')

上述语法中的leftdata指的是应该显示在左侧的数据框架,rightdata当然是指显示在右侧的数据框架,关于how的方式,我们下来将举例细说,on当然是指两个数据集要合并时所具备的关键列:我们也可以根据多个关键列合并,比如:请注意,观察上述结果,我们可以发现,leftdata中的key1key2组合[k0,k0][k1,k0]rightdata中的关键列有重合,其中[k1,k0]rightdata中对应两组数据,因此,当以inner方式合并时,它们就逐一匹配合并在一起。下面我们来看一下how=outer时的合并方式:当以outer的方式合并时,结果中将包含两个数据框架对应的关键列中所有组合,对没有该组合对应的框架中的数据,在结果中将以NaN来填充。

综上可知,inner合并,指的是求两个数据框架对应关键列的交集,而outer合并,则是两个数据框架对应关键列的并集。

Merge是对两个数据框架有共同列的进行合并,但在级联部分的最后,我们还提到如果index有共同部分时该怎样处置的问题,下面给出该问题的解决方案。

联合(join)

当两个数据框架中的index有重合部分时,想要合并两部分数据,则需要用到join方法:上面给出了join的四种联合方法,innerouter分别是求index的交集和并集,left是以左数据的index为基准,而right则是以右数据的index为基准。由此推断,merge的参数how也有同样的leftright,请同学们测试。

小结

本文首先对groupby的分组聚合方式进行了研究,之后对于两个数据框架的级联关系进行了探索。从结果来看,级联事实上分三类,一是用concat进行操作,它可以对多个数据框架进行级联,二是用merge进行数据合并,它可以对有重合列名的两部分数据进行合并,三是用join方式,它可以对index有重合的部分进行数据拼接。

pandas用均值填充nan_Pandas学习笔记(三)相关推荐

  1. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  2. SurfaceFlinger学习笔记(三)之SurfaceFlinger进程

    概述 本系列是基于android Q 即android10 SurfaceFlinger学习笔记(一)应用启动流程 SurfaceFlinger学习笔记(二)之Surface SurfaceFling ...

  3. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  4. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  5. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  6. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  7. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  8. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

  9. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

最新文章

  1. EMD算法之Hilbert-Huang Transform原理详解和案例分析
  2. 再次携号转网_湖北省通信管理局召开视频会议 再次强调携号转网服务要求
  3. Oracle数据库迁移-基础
  4. JZOJ 3775. 【NOIP2014模拟8.15】因子的排列
  5. c#結合正則表達式驗證輸入的字符串
  6. C++AVL树(自平衡二叉查找树)(附完整源码)
  7. Dll学习一_Dll 创建并动态引用窗体且释放窗体Demo
  8. OpenCV-数字图像处理之中值滤波
  9. 【Nodejs开发】第2章 网站首页的布局
  10. C/C++通过WMI和系统API函数获取获取系统硬件配置信息(转)
  11. numpy tricks(一)—— 多维数组的阈值化处理
  12. Scrapy和MongoDB的应用---爬取
  13. 结合百度地图城市编码的数据表
  14. 【AI视野·今日CV 计算机视觉论文速览 第243期】Thu, 14 Apr 2022
  15. [unity]在unity中创建圆锥体
  16. Java中访问修饰符public、private、protect、default访问范围
  17. dapper mysql_.NET Core Dapper操作mysql数据库的实现方法
  18. iOS 性能优化方案-弱网优化
  19. mac office
  20. 机械臂运动空间的计算_机器人学导论---第八章 操作臂的机械设计(一)8.1-8.9...

热门文章

  1. 我为什么选择Angular 2?
  2. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
  3. Django10:Ajax介绍/发送数据/SweetAlert
  4. C# 快捷键/hotkey简单例子
  5. linux c之perror和exit使用总结
  6. 栈与队列之用java实现队列
  7. Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散列图、雷达图)优雅的舞动
  8. Android之DiskLruCache(缓存工具)
  9. 服务器安装红帽系统进入不图形界面,CentOS 安装图形化界面方法
  10. qtabwidget切换tab事件_某超超临界机组初压/限压切换过程中扰动原因分析