对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和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
pandas string转dataframe的方法
Apr 11 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
python中join()方法介绍
Oct 11 Python
kali中python版本的切换方法
Jul 11 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
python 实现字符串下标的输出功能
Feb 13 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
Python字典实现伪切片功能
Oct 28 Python
基于PyQt5制作一个群发邮件工具
Apr 08 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 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 Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
python 安装移动复制第三方库操作
2020/07/13 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
经贸日语毕业生自荐信
2013/11/03 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
集中采购方案
2014/06/10 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
三方股东合作协议书
2014/10/28 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python