Pandas知识点-算术运算函数

本文介绍Pandas中的算术运算函数。

算术运算是最基本的运算,看起来很简单,但也有一些需要注意的地方,本文中会依次介绍。

一、Pandas算术运算函数介绍

基本的算术运算是四则运算(加、减、乘、除)和乘方等。Pandas中都实现了对应的算术运算函数,如add()、sub()、mul()、div()等,常用的算术运算函数见下表。

算术运算函数 用法介绍(以DataFrame为例) 描述
add() df1.add(df2) df1与df2进行加法运算
radd() df1.radd(df2) df2与df1进行加法运算
sub() df1.sub(df2) 用df1减df2
rsub() df1.rsub(df2) 用df2减df1
mul() df1.mul(df2) df1与df2进行乘法运算
rmul() df1.rmul(df2) df2与df1进行乘法运算
div() df1.div(df2) 用df1除df2
rdiv() df1.rdiv(df2) 用df2除df1
truediv() df1.truediv(df2) 用df1除df2
rtruediv() df1.rtruediv(df2) 用df2除df1
floordiv() df1.floordiv(df2) 用df1除df2,取整除
rfloordiv() df1.rfloordiv(df2) 用df2除df1,取整除
mod() df1.mod(df2) 用df1除df2,取余数
rmod() df1.rmod(df2) 用df2除df1,取余数
pow() df1.pow(df2) 计算df1的df2次方,df1^df2
rpow() df1.rpow(df2) 计算df2的df1次方,df2^df1

在Pandas中,这些函数的用法和运算规则都相同,运算结果的数据结构也都相同。所以本文中只以加法运算函数add()作为例子,使用其他函数时将函数名进行替换即可。如果有特殊的地方,会单独说明。

二、DataFrame与数字的算术运算

DataFrame与数字相加时,会将DataFrame中的每一个数都与指定数字相加,返回一个新的DataFrame(不是修改原DataFrame,而是返回一个新的DataFrame)。

add()函数的作用与运算符“+”(加号)的作用一样,运算结果也相同。其他算术运算函数与加法的用法一样,也都可以用对应的运算符代替。

在进行除法运算时,如果被除数是0,得到的结果可能是inf(表示无穷大,与Python的浮点数精度有关),也可能是NaN(空值)。在后面的所有运算中都一样。

每一个算术运算函数都有一个r字母开头的对应函数,起到的作用是交换运算数字的位置,如交换两个加数的位置、交换被除数与除数的位置、交换底数与指数的位置。

三、Series与数字的算术运算

Series与数字相加时,与DataFrame相同,也是将Series中的每一个数都与指定数字相加,返回一个新的Series。

四、两个DataFrame算术运算

1. 两个形状和索引相同的DataFrame进行运算

两个DataFrame相加,如果DataFrame的形状和对应的索引都一样,直接将对应位置(按行索引和列索引确定位置)的数据相加,得到一个新的DataFrame。

2. 两个形状或索引不一样的DataFrame进行运算

两个DataFrame相加,如果DataFrame的形状和索引不完全一样,只会将两个DataFrame中行索引和列索引对应的数据相加,生成一个形状能兼容两个DataFrame的新DataFrame,在没有运算结果的位置填充空值(NaN)。

当且仅当两个DataFrame中都有值时,才会有运算结果,其他位置的结果都为空值,运算原理如下图。

在运算结果中有很多空值,如果需要进行空值填充,可以使用fillna()函数。

fillna(value): 运算出结果后,将所有空值的位置都填充成指定值。

在算术运算函数中,可以使用fill_value参数,在运算前先填充数据。

与fillna()函数不同,使用fill_value参数是先填充数据再进行运算,而fillna()函数是先运算再对结果填充,所以两者的结果不一样。

使用fill_value参数填充数据后再进行运算,如果两个DataFrame中的数据都是填充值,则此位置的结果为空值,运算原理如下图。

五、两个Series算术运算

1. 两个形状和索引相同的Series进行运算

两个Series相加,如果形状和索引都一样,直接将对应位置(按行索引确定位置)的数据相加,得到一个新的Series。

2. 两个形状或索引不一样的Series进行运算

两个Series相加,如果形状和索引不完全一样,只会将行索引对应的数据相加,生成一个形状能兼容两个Series的新Series,在没有运算结果的位置填充空值(NaN)。

可以使用fillna()函数对运算结果中的空值进行填充。

可以使用fill_value参数先填充数据再进行运算。

与DataFrame不同的是,使用fill_value参数先填充数据再进行运算时,结果中不会有空值。因为Series是一维数据,对Series填充时,不存在两个Series都是填充值的行索引。

六、DataFrame与Series算术运算

1. Series的行索引与DataFrame的列索引相同

在Series与DataFrame进行算术运算时,默认会将Series看成是一行数据(而不是一列),在add()函数中,axis参数默认为1或'columns'。

如果Series的索引与DataFrame的列索引相同,会将Series依次与DataFrame中的每一行数据进行运算,得到一个新的DataFrame。

2. Series的行索引与DataFrame的行索引相同

如果Series的索引与DataFrame的行索引对应,要使Series按列与DataFrame运算,可以将axis参数设置成0或'index',这样会将Series依次与DataFrame中的每一列数据进行运算,得到一个新的DataFrame。

3. Series的行索引与DataFrame的行索引或列索引不完全相同

此时,DataFrame与Series的运算原理同两个DataFrame进行算术运算,会得到一个形状能兼容DataFrame和Series的新DataFrame。其中Series可以按行运算,也可以按列运算,取决于axis参数。

fillna()函数的用法也一样,对运算结果进行空值填充。

但是,DataFrame与Series的算术运算不支持fill_value参数,不能先填充再运算,会报错。

以上就是Pandas中的算术运算函数介绍,如果需要本文代码,可以扫码关注公众号“Python碎片”,然后在后台回复“pandas07”关键字获取完整代码。

Pandas知识点-算术运算函数相关推荐

  1. Pandas知识点-统计运算函数

    Pandas知识点-统计运算函数 统计运算非常常用.本文介绍Pandas中的统计运算函数,这些统计运算函数基本都可以见名知义,使用起来非常简单. 本文使用的数据来源于网易财经,具体下载方法可以参考:h ...

  2. Pandas知识点-详解聚合函数agg

    Pandas知识点-详解聚合函数agg Pandas提供了多个聚合函数,聚合函数可以快速.简洁地将多个函数的执行结果聚合到一起. 本文介绍的聚合函数为DataFrame.aggregate(),别名D ...

  3. Pandas知识点-详解行列级批处理函数apply

    Pandas知识点-详解行列级批处理函数apply 在Pandas中,DataFrame和Series等对象需要执行批量处理操作时,可以借用apply()函数来实现. apply()的核心功能是实现& ...

  4. Pandas知识点-添加操作append

    Pandas知识点-添加操作append 在Pandas中,append()方法用于将一个或多个DataFrame或Series添加到DataFrame中.append()方法也可以用于合并操作,本文 ...

  5. Pandas知识点-合并操作combine

    Pandas知识点-合并操作combine combine是联合的意思,在Pandas中,combine()方法也是一种实现合并的方法,本文介绍combine()方法的用法. 一.combine_fi ...

  6. Pandas知识点-equals()与==的区别

    Pandas知识点-equals()与==的区别 在Pandas中,equals()方法用于验证数据是否等效. 验证等效性需要进行比较,上一篇文章介绍了比较操作.比较操作参考:https://blog ...

  7. Pandas知识点-逻辑运算

    Pandas知识点-逻辑运算 逻辑运算在代码中基本是必不可少的,Pandas的逻辑运算与Python基础语法中的逻辑运算存在一些差异,所以本文介绍Pandas中的逻辑运算符和逻辑运算. 本文使用的数据 ...

  8. Pandas知识点-Series数据结构介绍

    Pandas知识点-Series数据结构介绍 本文用到的数据来源于网易财经,具体下载方式可以参考上一篇文章:https://blog.csdn.net/weixin_43790276/article/ ...

  9. 机器学习-Pandas 知识点汇总(吐血整理)

    作者:HappyPuppy 出处:http://www.cnblogs.com/tangxiaobo199181/ 本文版权归作者HappyPuppy所有,欢迎转载,但未经作者同意必须保留此段声明,且 ...

最新文章

  1. 使用SharpPCap在C#下进行网络抓包
  2. 在线作图|在线做随机森林分析
  3. 独家|测量、建议、快速上手!你所使用的Python对象占用了多少内存?(附代码)...
  4. Linux 配置JAVA_HOME
  5. 【Python金融量化 10- 100 】十、怎样的收益率预测模型才是好的模型?
  6. 【数据结构与算法】之深入解析“解码方法”的求解思路与算法示例
  7. android复选按钮,Android的复选框的详细开发案例分析
  8. 普通技术人员如何快速成长为合格的CTO
  9. vue中v-show指令的使用之Vue知识点归纳(五)
  10. BZOJ 3289 Mato的文件管理(莫队+树状数组)
  11. 7的整除特征 三位一截_茅台酒的合格证有哪些特征和鉴别要点?
  12. Solr中的数据导入
  13. 参数默认值,剩余参数,拓展参数(default spread rest parameter)
  14. CODESYS Visualization
  15. MAE平均绝对误差和MSE均方误差
  16. html doc全称,html标签全称和功能介绍.doc
  17. notepad++ paste data vertically
  18. 最保险的“跳槽理由”
  19. Nmos驱动电路分析
  20. uni-app 调用讯飞语音。

热门文章

  1. vue上传图片并预览
  2. Mac环境下Gradle配置
  3. FTP协议和serv-U的基本使用
  4. centos安装tftpserver
  5. im中的定位消息 ios_iOS消息发送失败和消息进度回调中msgId没有解包
  6. 有的时候看似是对的往往是不对的
  7. linux怎么样运行c程序,linux下运行C程序
  8. 【一文了解】经典图像的增强方法都有些什么?什么又是振铃现象?为什么图像会产生噪声?噪声又有什么分类?
  9. tomcat目录介绍
  10. 图片识别文字怎么做?这几种方法轻松解决