对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实现扫描端口示例
Mar 29 Python
python根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
在Python中操作列表之list.extend()方法的使用
May 20 Python
Python3搜索及替换文件中文本的方法
May 22 Python
Python实现的简单hangman游戏实例
Jun 28 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
python中绕过反爬虫的方法总结
Nov 25 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打造属于自己的MVC框架
2012/03/07 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
php输入数据统一类实例
2015/02/23 PHP
为你总结一些php信息函数
2015/10/21 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
jQuery总体架构的理解分析
2011/03/07 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
Python isinstance函数介绍
2015/04/14 Python
python3 配置logging日志类的操作
2020/04/08 Python
python 如何调用远程接口
2020/09/11 Python
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
企业治理工作自我评价
2013/09/26 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技