6. 通过迭代自检Groupby对象

当你调用df.groupby(“x”)时,生成的Pandas groupby对象可能有点难懂。这个对象是延迟实例化的,并且本身没有任何有意义。

你可以用示例1中的鲍鱼数据集来演示:

好吧,现在你有一个groupby对象,但是这是什么东西,我怎么看呢?

在调用类似grouped.apply(func)之前,可以利用groupby对象是可迭代的事实:

由grouped.__iter__产生的每个“事物”都是一个元组(name, subsetted object),其中name是正在分组的列的值,subsetted object是一个DataFrame,它是基于你指定的任何分组条件的原始DataFrame的子集。也就是说,数据被分组:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSI0PV6E-1631013616011)(https://upload-images.jianshu.io/upload_images/23127588-11e28b28275da56c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

与之相关的是,groupby 对象也具有.groups和group-getter, .get_group:

这可以帮助你更加确信,你正在执行的操作是你想要的:

不管对grouped执行什么计算,不管是单个Pandas方法还是定制的函数,这些“子框架”中的每一个都将作为一个参数逐个传递给该可调用对象。这就是术语“split-apply-combine(化整为零)”的来源:按组分解数据,执行每组计算,并以某种聚合方式重新组合。

如果你无法准确地可视化这些组实际是什么样子,那么只需迭代并打印一些就非常有用。

7. 使用映射技巧来进行成员分类

假设你有一个序列和相应的“映射表”,其中每个值都属于一个多成员组,或者根本不属于任何组:

换句话说,你需要把countries映射到以下结果:

你需要的是一个类似于Pandas的pd.cut的函数,但它是基于分类成员的。你可以使用pd.Series.map来模拟这个,在示例5中已经看到了这一点:

这应该比countries中每个国家按照groups嵌套Python循环要快得多。

这是一个测试驱动:

让我们来解释一下这里发生了什么。(旁注:这是一个用Python的调试器pdb进入函数范围,来检查哪些变量是函数本地的好机会。)

目标是将groups中每个组映射为整数。

但是,Series.map不能识别"ab"——它需要分隔版本,每个组中的每个字符都映射到一个整数。这就是字典推导式所做的事情:

这个字典可以传递给s.map,将其值映射或“转换”它的值为相应的组索引。

8.了解Pandas如何使用布尔运算符

你可能熟悉Python的操作符优先级,其中and、not、和or比诸如<、 <=、>、>=、!=和==之类的算术操作符具有更低的优先级。考虑下面的两个语句,其中<和>比and运算符具有更高的优先级:

**注:**这不是Pandas相关的特定的,3 and 5计算结果为5,是因为短路短路求值:

“短路运算符的返回值是最后一个评估参数。”(来源)

Pandas (和在上面建造Pandas的NumPy)不使用 and、 or或not。相反,它分别使用&、|和~, 他们是常规的,真正的Python位运算符。

这些运算符不是Pandas“发明”的。相反,&、|、和~ 是有效的Python内置运算符,它们具有比算术运算符高(而不是更低)的优先级。(Pandas重写了类似于.ror()的函数映射为|操作符。)牺牲一些细节,你可以把“按位”想象成“按元素”,因为它与Pandas和NumPy有关:

完全理解这个概念是值得的。假设你有一系列像这样的Series:

我猜你可能已经看到了在某个点产生的异常:

这里发生了什么事?用圆括号递增地绑定表达式很有帮助,说明Python如何一步一步地扩展这个表达式:

[图片上传失败…(image-94d980-1631013483740)]

表达式 s % 2 == 0 & s > 3 相当于(或被处理为)((s % 2) == (0 & s)) and ((0 & s) > 3)。这叫做展开式:x < y <= z 相当于 x < y and y <= z。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

好了,现在就停下来,让我们把它带回Pandas。你有两个Pandas Series,我们将称为left和right:

你知道left and right是真值测试,如下所示:

问题是Pandas开发者故意不为整个Series建立一个真值(真实性)。Series是真的还是假的?谁知道呢?结果是模棱两可的:

唯一有意义的比较是元素比较。这就是为什么,如果涉及算术运算符,则需要括号:

简而言之,如果你看到弹出来上面的ValueError并带有布尔索引,那么你可能应该做的第一件事情是添加必要的括号。

9.从剪贴板加载数据

通常需要将数据从Excel或Sublime Text之类的地方传输到Pandas数据结构。理想情况下,你希望做到这一点,而不执行将数据保存到文件中,然后将文件读取到Pandas的中间步骤。

利用pd.read_clipboard,你可以从计算机的剪贴板数据缓冲区加载到DataFrames。它的关键字参数传递给pd.read_table。

这允许你直接将结构化文本复制到DataFrame或Series。在Excel中,数据看起来是这样的:

它的纯文本表示(例如,在文本编辑器中)将是这样的:

只是强调并复制上面的明文,调用pd.read_clipboard:

10.直接将Pandas对象写入压缩格式

这个是简短明了的为了充实清单。自Pandas版本0.21.0起,你可以将Pandas对象直接写入gzip、bz2、zip或xz压缩,而不是将未压缩的文件存储在内存中并进行转换。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

下面是一个使用技巧1的鲍鱼数据的例子:

在这种情况下,尺寸差异为11.6x:

如果想添加到这个列表中?告诉我们吧

希望你能够从这个列表中学到一些有用的技巧,使你的Pandas代码具有更好的可读性、通用性和性能。

如果你有这里不包含的什么高招,请在评论中留下建议或创建GitHub Gist。我们将很高兴地添加到这个列表中,并在适当处标明出处。

你可能不知道的10个Python Pandas的技巧和特性(下)相关推荐

  1. 你可能不知道的10个Python Pandas的技巧和特性

    Pandas是一个基础库,用于分析.数据处理和数据科学.它是一个庞大的项目,有大量的选择和奥秘. 本教程将以Buzzfeed清单体介绍一些使用较少但惯用的Pandas功能,这些功能为你的代码提供更好的 ...

  2. 关于ERP系统,你可能不知道的10件事

    谈到ERP系统,大多数人只是考虑ERP日常管理的核心功能,即财务.销售.采购.库存.生产和分销.保持对这些关键领域的控制对任何企业的成功都是不可或缺的.但这些只是冰山一角,如果深入挖掘ERP系统,你可 ...

  3. 苹果手机小技巧大全计算机,80%的人都不知道的五个iPhone实用小技巧,不知道的话赶紧看看...

    原标题:80%的人都不知道的五个iPhone实用小技巧,不知道的话赶紧看看 现在越来越多的人使用iPhone手机,而且iPhone新机也是出了一段时间了,但是还是有很多人不知道iPhone中的一些隐藏 ...

  4. ftpclient怎么获取到该目录下面得文件_你应该知道的10种Python文件系统方法

    使用os和shutil操作文件和文件夹 你可以编写Python程序来与文件系统进行交互来做很酷的事情.怎么做并不总是非常清楚.本文是当前和有抱负的开发人员和数据科学家的指南.我们将重点介绍10个基本的 ...

  5. 关于PHP你可能不知道的10件事

    小编之前也曾报导过PHP开发人员容易忽略的几点精华,除了一些精华技术方法外,很多细微之处也是程序员们容易忽略的,下面我们为您总结了10个关于PHP你可能不知道的事情. 关于PHP更多内容,欢迎访问:P ...

  6. 2022 年你必须知道的 10 个 Python 库

    前 10 个 Python 库: Python 是服务于各种用途的库的海洋,作为 Python 开发人员,您必须对最好的库有充分的了解.为了在这方面为您提供帮助,这里有一篇文章为您介绍了用于机器学习的 ...

  7. 你可能不知道的10个CSS新功能(2021版)

    多年来,CSS已经超越了背景颜色.边框.文本样式.边距和盒模型.现代CSS能够提供一系列的功能,而在过去,您需要JavaScript或变通方法来实现这些功能. 为了庆祝它在2021年取得的成就,在这篇 ...

  8. python内置函数多少个_每个数据科学家都应该知道的10个Python内置函数

    python内置函数多少个 Python is the number one choice of programming language for many data scientists and a ...

  9. 你可能不知道的java、python、JavaScript以及jquary循环语句的区别

    一.概述 java循环语句分为四种形式,分别是 while, do/while, for, foreach: python中循环语句有两种,while,for: JavaScript中循环语句有四种, ...

最新文章

  1. 页面加载完毕_【前端面试】dom 的解析,加载,渲染
  2. php allowoverride,Apache之AllowOverride参数详解
  3. 键盘跟计算机无法识别,键盘无法识别的原因与解决办法
  4. yum 不能安装应用,提示There are no enabled repos Run yum repolist all
  5. Hadoop系列之五:MapReduce进阶(2)
  6. java中abcd_java中请不要出现aBcd类似的变量名
  7. 2018-2019-2 20175215 实验五《网络编程与安全》实验报告
  8. boot camp驱动下载以及对应机型版本查询
  9. freeswitch 会议创建命令
  10. 百度离线地图-Vue
  11. python 以图搜图_以图搜图系统概述
  12. 让闲置的免费邮箱资源创造更大的价值
  13. 【LeetCode】马三来刷题之Permutations
  14. 福昕阅读器解除安全阅读模式
  15. android锁定屏幕通知_如何在Android锁定屏幕上隐藏敏感通知
  16. 实战 | Kaggle竞赛:华盛顿特区首都自行车租赁预测
  17. 【Pandas】解决在pandas中的两个正数相乘结果为负值
  18. 输入一个整数将其倒着输出,如54321——12345。
  19. 【WordPress】修改固定链接,文章链接
  20. 教育子女正确方式(楼天成父母教育孩子)

热门文章

  1. linux内存利用率多少合适,如何理解linux服务器中的内存使用率和平均负载
  2. oracle数据库中的系统自带表情_oracle 系统自带几个常用函数
  3. python 操作word文字加粗、变红_使用python-docx在表格中使单元格加粗
  4. 全选文字的快捷键_如果我是一个快捷键,我希望是?为什么?
  5. 农行软开是总行编制吗_2021农行总行校招笔试来啦,你知道农行笔试都考些什么吗?...
  6. 安杰文高等计算机与生产技术学校,法国留学院校推荐:安杰文高等计算机与生产技术学校...
  7. wx_login.php,wx.login 获取 用户的openid
  8. 集美大学诚毅学院计算机科学与技术学费,集美大学诚毅学院计算机科学与技术专业介绍...
  9. ASP.NET MVC Controller Overview摘录
  10. 微信小程序插件内页面跳转和参数传递