pandas用均值填充nan_Pandas学习笔记(三)

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

GroupBy的使用

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

数据框架的级联(concatenation)

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

数据的合并(merge)

如果熟悉SQL语言的同学肯定对数据表的合并不陌生,在pandas中,主要是通过pd.merge函数来进行的,它的语法是这样的:
pd.merge(leftdata, rightdata, how='inner', on='Key')
上述语法中的leftdata指的是应该显示在左侧的数据框架,rightdata当然是指显示在右侧的数据框架,关于how的方式,我们下来将举例细说,on当然是指两个数据集要合并时所具备的关键列:9edff94b4c34b0efe204406326df47ee.png我们也可以根据多个关键列合并,比如:299412885546b29253582b39bad91416.png请注意,观察上述结果,我们可以发现,leftdata中的key1key2组合[k0,k0][k1,k0]rightdata中的关键列有重合,其中[k1,k0]rightdata中对应两组数据,因此,当以inner方式合并时,它们就逐一匹配合并在一起。下面我们来看一下how=outer时的合并方式:e0d52123d2c58e26ef6a9e4154aeffd1.png当以outer的方式合并时,结果中将包含两个数据框架对应的关键列中所有组合,对没有该组合对应的框架中的数据,在结果中将以NaN来填充。
综上可知,inner合并,指的是求两个数据框架对应关键列的交集,而outer合并,则是两个数据框架对应关键列的并集。
Merge是对两个数据框架有共同列的进行合并,但在级联部分的最后,我们还提到如果index有共同部分时该怎样处置的问题,下面给出该问题的解决方案。

联合(join)

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

小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

acwing2019. 拖拉机(最短路径)

题目描述:(边权只有0和1的最短路径问题) 可以走出矩阵 点权{走障碍物:1,不走障碍物:0} 最短路径=路径上障碍物的数量 双端队列:0的时候入队首,1的时候入队尾(只能出队一次,但可以入队很多次) 双端队列的前半段是全为0,后半段全为1. bfs(实际上是一种迪杰斯特拉算法…

有关Quartz.NET,与一线码农大佬对个线?

跟[一线码农大佬]翻译的某技术文对个线最近看到一线码农大佬翻译的《如何在 ASP.NET Core 中使用 Quartz.NET 执行任务调度》,行文思路:安装Quartz.NETQuartz.NET 中的Job,triggers 和 Schedulers创建 Scheduler开启和停止 scheduler创建 job 工厂创建 J…

python统计字符串中字母个数字母无视大小写_判断一个字符串中字母的个数(无视大小写)...

其实Java学习中还是笔试中基本都会遇到这样类似的问题,统计一个字符串中a~z的个数:代码如下:public class Wheel {public static void main(String[] args) {// 定义一个字符串String abc "aaaabbbbAAABBBB";// 定义一个整形数组&…

真的,太多人辜负了.NET5!

.NET5发布一个月了,有没有动手试试?Windows服务器Visual Studio SQL Server做跨平台开发?那你真的辜负了这个时代!强烈建议尝试下Linux,不仅是程序部署,而是全Linux环境开发、运行、部署.NET 5项目&#x…

数据结构——最小生成树之克鲁斯卡尔算法(Kruskal)

最小生成树算法 prime算法和克鲁斯卡尔算法 克鲁斯卡尔算法 思路 优先队列+并查集 Kuskal算法 【算法简介】:上一篇中的Prime算法是一种“加点式的算法”,而Kuskal算法是一种“加边式的算法”;Kuskal算法与Prime算法都是一种贪心算法,但Kruskal算法对图中存在相同权值的边…

react 版权问题_react使用fetch封装请求的方法-简单易懂

方法有很多种,这里贴一个比较优雅又简单易懂的。用class类写法,new一个实例方法。其中qs是包,类似于url拼接的方法,自行npm安装。我这里fetch使用的是dva的fetch,也可以自行使用自带的fetch ,把const fetc…

总结 Visual Studio 2019 发布以来 XAML 工具的改进

不知不觉,Visual Studio 2019 已经出到 16.8 和 16.9 Preview 了。虽然每次更新都林林总总地一大堆新功能和改进,但关于 XAML 的内容总是,always,每次都只有一点点。其实 Xamarin 相关的内容有在使劲地更新,不过和我做…

数据结构——最小生成树之prime算法(与最短路径之迪杰斯特拉算法很像)

最小生成树之prime算法 ***最小生成树:一个连通图的生成树中,所有边的权值加起来最小的生成树;称为最小生成树; 【简介】:Prime算法可在加权连通图里搜索最小生成树。即:所有边的权值之和为最小。 Prime算法是图论中求最小生成树的一种算法,与之类似的算法还有Kruskal算…

linux yum自动挂载_LINUX6安装YUM仓库和实现开机自动挂载

# LINUX6安装YUM仓库和实现开机自动挂载---------------------------------安装环境-------------------------------Redhat6镜像文件:链接:https://pan.baidu.com/s/1DKH6adbrsipM-cTzH-wBgA 百度网盘 密码是hxcbVmware Workstation虚拟机工具&#x…

与您相约.NET Conf China 2020! 新进2位重磅嘉宾

2020年12月19日由.NET众多社区联合组织主办的2020年中国.NET开发者大会将于苏州盛大开幕,明天将发布大会的直播方案,敬请关注。时间:2020/12/19-12/20主题:开源、共享、创新地点:苏州人工智能产业园本次大会以“开源、…

数据结构——最短路径之Dijkstra算法(与最小生成树的prime算法很像,建议一起看)

最短路径之Dijkstra算法 (一)Dijkstra算法 单源最短路径:就是从某一个顶点出发,到图中任意顶点之间的最短路径; 【算法概述】:Dijkstra算法适用于解决单源最短路径的问题。即:从源点到任意指定顶点之间的最短距离的问题;但Dijkstra算法要求所有边的权值非负。看过Pri…

层与特征融合_【计算机系统应用】(第122期)感受野特征增强的 SSD 目标检测算法...

点击上方“蓝字”,关注我们吧!目标检测是计算机视觉领域的一项重要任务, 是 生活中如实例分割[1] , 面部分析[2] , 汽车自动驾驶[3]、视 频分析[4] 等各种视觉应用的先决条件. 近些年, 伴随着深度卷积神经网络的充分发展[5] 以及良好的数据集注释先验工作…

Dapr微服务应用开发系列2:Hello World与SDK初接触

题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发Hello WorldDapr应用的Hello World其实和其他的Hello World一样简单:首先用你喜欢的语言和框架创建一个Hello World程序。比如在.NET 5下,就可以简单的这样实…

数据结构——最短路径算法之floyd算法

数据结构——最短路径算法之floyd算法 (一) Flody算法 【前言】:前面的Dijkstra算法用来解决单源最短路径的问题,即:从指定点到图上其他各点的最短路径。那么,如果我们要求图中任意两个结点之间的最短路径,如何用算法来实现呢?如果用Dijkstra来实现,就需要每次改变源…

详解python运行三种方式_详解python调用cmd命令三种方法

目前我使用到的python中执行cmd的方式有三种使用os.system("cmd")该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况…

一个基于.Net 5开发的轻量级Quartz配置中心 - QuartzCore.Blazor

项目简介QuartzCore.Blazor 是一个基于 .Net5 开发的轻量级 Quartz 作业配置中心,实践应用 Ant Design Blazor 和 FreeSql 两个技术, 对这两个技术感兴趣的小伙伴可以加我一起学习讨论哦,对有 Quartz 有需求的小伙伴亦可以开箱即用Code First…

如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型

本实验的目的是讲解 JVM 的三大参数类型。在JVM调优中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本节以实验的方式讲解 JVM 参数的查看和设置。希望大家能有所启发。标配参数常见标配参数-version,获取JDK版本…

ASP VNext 开源服务容错处理库Polly

背景Polly是一个.NET弹性和瞬态故障处理库,允许开发人员以流畅和线程安全的方式表达诸如重试,断路器,超时,隔离头和回退之类的策略。Polly面向.NET Standard 1.1(覆盖范围:.NET Core 1.0,Mono&a…

python中定制类_python定制类__str__(实例详解)

在接下来的文章中,让我们明白什么是python中的自定义类。学习什么是python的自定义类,python定制类可以扮演何种角色在python编程。当你看到像__xxx__ __slots__变量或函数名,你应该注意他们。这些在Python中有特殊用途。我们已经知道如何使用__slots__,我们也知道__len__()方法…

如何在 C# 中使用 Exceptionless

背景“Exceptionless”一词的定义是:无例外。Exceptionless可为您的JavaScript,Node,.NET Core,ASP.NET,Web API,WebForms,WPF,控制台和MVC应用程序提供实时错误报告。它将收集到的信…