Pandas-二进制操作

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

1.多维(DataFrame)与低维(Series)对象之间的广播机制

2.计算中的缺失值处理

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

匹配/广播机制

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,更快更好!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • pandas 入门 pandas 的数据结构介绍 pandas 有两个重要的数据结构:Series和DataFra...
    昱灬岩阅读 11,134评论 0 16
  • 呆鸟云:“在学习 Python 数据分析的过程中,呆鸟发现直接看官档就是牛逼啊,内容全面、丰富、详细,而 Pyth...
    呆鸟的简书阅读 6,009评论 2 13
  • 目录: 5.1 pandas 的数据结构介绍 5.1.1 Series 5.1.2 DataFrame 5.1.3...
    凌岸_ing阅读 10,262评论 0 17
  • 引言 原始的数据有时候是一串文字(过度聚合),有时候是分散在多个位置的分离文件(过于分散)。数据的预处理就是要把原...
    DDuncan阅读 4,474评论 0 0
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,597评论 0 11

友情链接更多精彩内容