对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数据类型详解(二)列表
May 08 Python
Python实现Youku视频批量下载功能
Mar 14 Python
简单谈谈python中的语句和语法
Aug 10 Python
python 读入多行数据的实例
Apr 19 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
Python基础之字符串操作常用函数集合
Feb 09 Python
Keras - GPU ID 和显存占用设定步骤
Jun 22 Python
使用gunicorn部署django项目的问题
Dec 30 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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设计模式之简单投诉页面实例
2016/02/24 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
python压包的概念及实例详解
2021/02/17 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
工作的心得体会
2013/12/31 职场文书
项目管理计划书
2014/01/09 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
2014年财政所工作总结
2014/11/22 职场文书
市场部岗位职责范本
2015/04/15 职场文书
重阳节活动主持词
2015/07/04 职场文书
员工担保书范本
2015/09/22 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
学会Python数据可视化必须尝试这7个库
2021/06/16 Python