对pandas的算术运算和数据对齐实例详解


Posted in Python onDecember 22, 2018

pandas可以对不同索引的对象进行算术运算,如果存在不同的索引对,结果的索引就是该索引对的并集。

一、算术运算

a、series的加法运算

s1 = Series([1,2,3],index=["a","b","c"])
  s2 = Series([4,5,6],index=["a","c","e"])
  print(s1+s2)
  '''
  a  5.0
  b  NaN
  c  8.0
  e  NaN
  '''

sereis相加会自动进行数据对齐操作,在不重叠的索引处会使用NA(NaN)值进行填充,series进行算术运算的时候,不需要保证series的大小一致。

b、DataFrame的加法运算

d1 = np.arange(1,10).reshape(3,3)
  dataFrame1 = DataFrame(d1,index=["a","b","c"],columns=["one","two","three"])
  d2 = np.arange(1,10).reshape(3,3)
  dataFrame2 = DataFrame(d2,index=["a","b","e"],columns=["one","two","four"])
  print(dataFrame1+dataFrame2)
  '''
    four one three  two
  a  NaN 2.0  NaN  4.0
  b  NaN 8.0  NaN 10.0
  c  NaN NaN  NaN  NaN
  e  NaN NaN  NaN  NaN
  '''

dataFrame相加时,对齐操作需要行和列的索引都重叠的时候才回相加,否则会使用NA值进行填充。

二、指定填充值

s1 = Series([1,2,3],index=["a","b","c"])
  s2 = Series([4,5,6],index=["a","c","e"])
  print( s1.add(s2,fill_value=0))
  '''
  a  5.0
  b  2.0
  c  8.0
  e  6.0
  '''

需要注意的时候,使用add方法对两个series进行相加的时候,设置fill_value的值是对于不存在索引的series用指定值进行填充后再进行相加。除了加法add,还有sub减法,div除法,mul乘法,使用方式与add相同。DataFrame与series一样。

s1 = Series([1,2,3],index=["a","b","c"])
  s2 = Series([4,5,6],index=["a","c","e"])
  print(s2.reindex(["a","b","c","d"],fill_value=0))
  '''
  a  4
  b  0
  c  5
  d  0
  '''
  s3 = s1 + s2
  print(s3.reindex(["a","b","c","e"],fill_value=0))
  '''
  a  5.0
  b  NaN
  c  8.0
  e  NaN
  '''

使用reindex进行填充的时候,需要注意的是,不能对已经是值为NaN的进行重新赋值,只能对使用reindex之前不存在的所以使用指定的填充值,DataFrame也是一样的。

三、DataFrame与Series的混合运算

a、DataFrame的行进行广播

a = np.arange(9).reshape(3,3)
  d = DataFrame(a,index=["a","b","c"],columns=["one","two","three"])
  #取d的第一行为Series
  s = d.ix[0]
  print(d+s)
  '''
    one two three
  a  0  2   4
  b  3  5   7
  c  6  8   10
  '''

b、DataFrame的列进行广播

a = np.arange(9).reshape(3,3)
  d = DataFrame(a,index=["a","b","c"],columns=["one","two","three"])
  #取d的第一列为Series
  s = d["one"]
  print(d.add(s,axis=0))
  '''
    one two three
  a  0  1   2
  b  6  7   8
  c  12  13   14
  '''

对列进行广播的时候,必须要使用add方法,而且还要将axis设置为0,不然就会得到下面的结果

print(d.add(s))
  '''
    a  b  c one three two
  a NaN NaN NaN NaN  NaN NaN
  b NaN NaN NaN NaN  NaN NaN
  c NaN NaN NaN NaN  NaN NaN
  '''

以上这篇对pandas的算术运算和数据对齐实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python将动态GIF图片倒放播放的方法
Nov 02 Python
详解python 发送邮件实例代码
Dec 22 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
用Django写天气预报查询网站
Oct 21 Python
Python实现图片转字符画的代码实例
Feb 22 Python
python五子棋游戏的设计与实现
Jun 18 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
python读写csv文件的方法
Aug 13 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
Python使用pandas对数据进行差分运算的方法
Dec 22 #Python
利用arcgis的python读取要素的X,Y方法
Dec 22 #Python
对python 读取线的shp文件实例详解
Dec 22 #Python
Python装饰器基础概念与用法详解
Dec 22 #Python
python 文本单词提取和词频统计的实例
Dec 22 #Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 #Python
Python函数装饰器实现方法详解
Dec 22 #Python
You might like
简单的php新闻发布系统教程
2014/05/09 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
Bootstrap表单布局
2016/07/19 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
Python实现分段线性插值
2018/12/17 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
大专自我鉴定范文
2013/10/23 职场文书
探亲邀请信范文
2014/01/30 职场文书
玲玲的画教学反思
2014/02/04 职场文书
八年级语文教学反思
2014/02/11 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python