Pandas-二进制操作

指尖编程 2021-04-07 16:40:45
Python numpy Apache Axis mul


Pandas数据结构之间执行二进制操作,要注意下列两个关键点:

  • 多维(DataFrame)与低维(Series)对象之间的广播机制
  • 计算中的缺失值处理

这两个问题可以同时,但下面我们先介绍怎么分开处理。

匹配/广播机制

DataFrame支持add()、sub()、mul()、div()、radd()、rsub()等方法执行二进制操作。广播机制重点关注输入的Series,通过axis关键字,匹配index或columns即可调用这些函数。

还可以用Series对齐多层索引DataFrame的某一层次。

Series与Index还支持divmod()内置函数,该函数同时执行向下取整除与模运算,返回两个与左侧类型相同的元组。

divmod还支持元素级运算:

缺失值与填充缺失值

Series与DataFrame的算数函数支持fill_value选项,即用指定值替换某个位置的缺失值。比如,两个DataFrame相加,除非两个DataFrame里同一个位置都有缺失值,其相加的和仍为NaN,如果只有一个DataFrame里存在缺失值,则可用fill_value指定一个值来替代NaN,当然,也可以用fillna把NaN替换为想要的值。

比较操作

Series与DataFrame还支持eq、ne、lt、gt、le、ge等二进制比较操作的方法:

这些操作生成一个与左侧输入对象类型相同的Pandas对象,即dtype为bool。boolean对象可用于索引操作。

布尔简化

empty、any、all、bool可以把数据汇总简化至单个布尔值。

还可以进一步把上面的结果简化为单个布尔值。

通过empty属性,可以验证Pandas对象是否为空。

用bool方法验证单元素Pandas对象的布尔值

比较对象是否等效

一般情况下,多种方式都能得出相同的结构。以df+df与df*2为例。测试这两种计算方式的结构是否一致,大部分人都会用(df+df==df*2).all(),但是这个表达式的结果时False。

布尔型DataFrame df+df==df*2中有False值是因为两个NaN值的比较结果为不相等:

为了验证数据是否等效,Series与DataFrame等N维框架提供了equals()方法,用这个方法验证NaN值的结果为相等。

但这里要注意Series与DataFrame索引的顺序必须一致,验证结果才能为True。

比较array型对象

用标量值与Pandas数据结构对比数据元素非常简单:

Pandas还能对比两个等长array对象里的数据元素:

对此不等长的Index或Series对象会触发valueError:

但是这里的操作与NumPy的广播机制不同:

NumPy无法执行广播操作时,返回False:

如果你想学习Python,但是找不到学习路径和资源,欢迎上指尖编程

在线交互式学Python,更快更好!

版权声明
本文为[指尖编程]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4896486/blog/5011329

  1. 用 Python 读写 Excel 表格
  2. Python装饰器高级用法
  3. Reading and writing excel table with Python
  4. Python decorator advanced usage
  5. 从零开始学python | 什么是Python JSON?
  6. Learn Python from scratch | what is Python JSON?
  7. Python with关键字原理详解
  8. Python with keyword principle
  9. python + uiautomator2 实现钉钉工单提交
  10. 一个神级般的 Python 调试神器
  11. Nail work order submission based on Python + uiautomator2
  12. A magic Python debugging artifact
  13. 从零开始学python | 什么是Python JSON?
  14. Learn Python from scratch | what is Python JSON?
  15. 上手Pandas,带你玩转数据(3)-- pandas数据存入文件
  16. Start pandas, take you to play with data (3) -- save pandas data into file
  17. Python能代替shell吗?有什么特点?
  18. Can Python replace shell? What are the features?
  19. Scikit-learn 机器学习库介绍!【Python入门】
  20. Scikit learn machine learning library introduction! [introduction to Python]
  21. 【Python从零到壹】面向对象的封装,继承和多态
  22. Scikit-learn 机器学习库介绍!【Python入门】
  23. Python能代替shell吗?有什么特点?
  24. 【Python从零到壹】Python文件的操作详解
  25. 【Python从零到壹】Python爬虫部分开篇
  26. 【Python从零到壹】学习Python爬虫前,你需要先掌握这些内容
  27. 【Python从零到壹】python爬虫系列-网络请求
  28. Object oriented encapsulation, inheritance and polymorphism
  29. Python经典面试题(附答案)!
  30. Scikit learn machine learning library introduction! [introduction to Python]
  31. 菜谱系统小成阶段,Python Web 领域终于攻占一个小山头
  32. Python Web 菜谱项目再次前进一步,从应用层了解内置用户认证系统
  33. Can Python replace shell? What are the features?
  34. Detailed explanation of Python file operation
  35. Python from zero to one
  36. [Python from zero to one] before learning Python crawler, you need to master these contents
  37. [Python from zero to one] Python crawler series - web request
  38. Python经典面试题(附答案)!
  39. Python classic interview questions (with answers)!
  40. When the recipe system was in its infancy, python web finally took over a small hill
  41. Python web menu project takes another step forward to learn about the built-in user authentication system from the application layer
  42. Python classic interview questions (with answers)!
  43. 【Python从零到壹】Python的循环结构详解
  44. 【Python从零到壹】Python列表详解
  45. 【Python从零到壹】Python的字典详解
  46. 【Python从零到壹】Python的字符串详解
  47. 【Python从零到壹】Python基础之函数的应用
  48. 【Python从零到壹】用Python实现植物大战僵尸里的面向对象
  49. Detailed explanation of Python loop structure
  50. Detailed explanation of Python list
  51. Detailed explanation of Python dictionary
  52. Detailed explanation of Python string
  53. [Python from zero to one] the application of Python basic functions
  54. [Python from zero to one] using Python to realize object-oriented in plant vs. zombie
  55. 用 Python 实现微信版飞机大战
  56. 用 Python 实现***帝国中的数字雨落既视感
  57. 想知道未来孩子长相?Python人脸融合告诉你
  58. 我用 Python 做了一个全球疫情数据大屏
  59. Using Python to realize wechat aircraft war
  60. Using Python to realize the visual sense of digital rain in the Empire of the Communist Party of China