美文网首页
Series第二讲 二元运算

Series第二讲 二元运算

作者: butters001 | 来源:发表于2020-09-16 11:24 被阅读0次

Series第二讲 二元运算

二元运算方法总览

  • Series.add/radd
  • Series.sub/rsub
  • Series.mul/rmul
  • Series.div/rdiv 浮点除法
  • Series.truediv/rtruediv 浮点除法
  • Series.floordiv/rfloordiv 除法向下取整
  • Series.mod/rmod 除法取模
  • Series.pow/rpow 平方
  • Series.combine 组合
  • Series.combine_first 组合
  • Series.round 保留小数
  • Series.lt/le 小于/小于等于
  • Series.gt/ge 大于/大于等于
  • Series.eq/ne 等于/不等于
  • Series.product/prod 所有数值相乘
  • Series.dot 矩阵乘法

详细介绍

先来创建两个简单的Series

In [5]: a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])            

In [6]: b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])       

In [7]: a                                                                       
Out[7]: 
a    1.0
b    1.0
c    1.0
d    NaN
dtype: float64

In [8]: b                                                                       
Out[8]: 
a    1.0
b    NaN
d    1.0
e    NaN
dtype: float64
  1. Series.add(other, level=None, fill_value=None, axis=0):两个Series相加

参数介绍:

  • other:另一个Series对象
  • level:MultiIndex(多重索引)时需要的参数
  • fill_value:None or float value, default None (NaN) 用来处理缺失值

此处 a.add(b) 和 a + b 具有相同效果

In [9]: a.add(b)                                                                
Out[9]: 
a    2.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64

In [10]: a+b                                                                    
Out[10]: 
a    2.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64

可以看出:对应索引位置的数值相加,无相同索引、nan值相加的位置都为nan。

🌟tips🌟:a.radd(b) 代表的意思是 b.add(a),即:b + a。r这个字母是right的意思。其他带r的操作符同理。

  1. Series.sub(other[, level, fill_value, axis]):表示Series - other
In [11]: a.sub(b)                                                               
Out[11]: 
a    0.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.mul(参数同上):表示Series * other
In [51]: a.mul(b)                                                               
Out[51]: 
a    1.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.div(参数同上):表示Series / other
In [12]: a.div(b)                                                               
Out[12]: 
a    1.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.truediv(参数同上):效果等同于 Series.div
  1. Series.floordiv(参数同上):表示Series // other

x//y 在 python3 中表示两数相除,结果向下取整(舍弃小数部分)

In [13]: a.floordiv(b)                                                          
Out[13]: 
a    1.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.mod(参数同上):表示Series % other

x%y 在 python3 中表示两数相除,取结果的余数部分

In [14]: a.mod(b)                                                               
Out[14]: 
a    0.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.pow(参数同上):表示Series ** other

x**y 在 python3 中表示x的y次方

In [19]: a.pow(b)                                                               
Out[19]: 
a    1.0
b    1.0
c    1.0
d    NaN
e    NaN
dtype: float64

注意⚠️:这里有个细节

1 ** np.nan 结果是 1.0
其他数 2 ** np.nan 结果是 nan
所以 1 的 nan 次方比较特殊,结果并不是 nan
  1. Series.combine(other, func[, fill_value]):组合两个Series

参数介绍:

  • func:以两个Series的每个相对位置的元素(标量)为输入并返回一个元素。即输入两个,输出一个。
In [32]: a.combine(other=b, func=max)                                           
Out[32]: 
a    1.0
b    1.0
c    1.0
d    NaN
e    NaN
dtype: float64

说明:这个方法的意思是 每个相同索引的值一同进入func函数中(这里是max),返回func处理后的结果。

  1. Series.combine_first(other):合并Series,优先取Series的值,如果没有再取other的值
In [33]: a.combine_first(b)                                                     
Out[33]: 
a    1.0
b    1.0
c    1.0
d    1.0
e    NaN
dtype: float64
  1. Series.round([decimals]):保留几位小数

效果等同于 python 里的round函数

参数介绍:

  • decimals:保留几位小数,默认0
In [34]: s = pd.Series([0.1, 1.3, 2.7])                               
In [35]: s.round()                                                              
Out[35]: 
0    0.0
1    1.0
2    3.0
dtype: float64
  1. Series.lt(other[, level, fill_value, axis]):表示Series < other

相同索引位置的值进行比较,返回bool值。
le表示<=

In [36]: a.lt(b)                                                                
Out[36]: 
a    False
b    False
c    False
d    False
e    False
dtype: bool
  1. Series.gt(参数同上):表示Series > other

ge表示>=

In [38]: a.ge(b)                                                                
Out[38]: 
a     True
b    False
c    False
d    False
e    False
dtype: bool
  1. Series.eq(参数同上):表示Series == other

ne表示!=

In [39]: a.eq(b)                                                                
Out[39]: 
a     True
b    False
c    False
d    False
e    False
dtype: bool 

注意⚠️:np.nan != np.nan

  1. Series.product(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, **kwargs:所有数值的乘积

表示此Series里所有数值的乘积,Series.prod()等效

参数介绍:

  • skipna:bool, default True 计算结果时排除 NA/null 值
  • levelint or level name, default None 多级索引时可指定的参数
  • numeric_onlybool, default None 默认只计算float, int, boolean类型元素,如果为None,则尝试计算数据
  • min_count:能执行相乘操作的值的最小数量,如果不够则该函数返回nan
In [44]: a.prod()                                                               
Out[44]: 1.0

In [46]: a.prod(min_count=4)                                                    
Out[46]: nan
  1. Series.dot(other):表示矩阵乘法

也可以表示为 Series @ other

In [49]: s.dot(df)                                                              
Out[49]: 
0    24
1    14
dtype: int64

In [50]: s@df                                                                   
Out[50]: 
0    24
1    14
dtype: int64

继续 坚持 ✊ ✊ ✊!!!

相关文章

  • Series第二讲 二元运算

    Series第二讲 二元运算 二元运算方法总览 Series.add/radd 加 Series.sub/rsub...

  • Pandas的基本功能(四)

    DataFrame和Series之间的算术运算 DataFrame和Series之间的算术运算与NumPy数组运算...

  • JavaScript运算符_二元运算符(九)

    目录: 1.什么是二元运算符?2.二元运算符都有哪些? 一、什么是二元运算符? 二元运算符应写在执行运算的子表达式...

  • pandasⅠ- 数据结构

    一、Series的定义 二、Series的创建 三、Series的索引和切片 四、Series的运算 五、Data...

  • 数据类型和运算符(二)

    运算符(operator) 运算符分类 算术运算符 二元运算符指的是需要两个操作数才能完成运算的运算符。 二元运算...

  • Kotlin运算符重载及其他约定

    一、重载算术运算符 1.1 重载二元算术运算 kotlin 允许我们重载常用的二元算术运算:+ - * / ,这样...

  • 离散数学大概(二)

    设S为集合,函数f: SxS->S称为S上的二元运算,简称为二元运算。验证一个运算是否为集合S上的二元运算主要考虑...

  • Java--算术运算符

      算术运算符中+,-,*,/,%属于二元运算符,二元运算符指的是需要两个操作数才能完成运算的运算符。其中的%是取...

  • js函数式编程术语之幂等性 Idempotent

    幂等性 Idempotent 了解这个概念前,需要知道以下概念 [二元运算],它需要三个元素:二元运算符以及该运算...

  • Series第一讲 属性

    Series第一讲 属性 属性总览 Series.index Series.array Series.values...

网友评论

      本文标题:Series第二讲 二元运算

      本文链接:https://www.haomeiwen.com/subject/ropcyktx.html