对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自动扫雷实现方法
Jul 25 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
python+pandas分析nginx日志的实例
Apr 28 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
Django学习之文件上传与下载
Oct 06 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
大数据分析用java还是Python
Jul 06 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
pytorch 带batch的tensor类型图像显示操作
May 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
4.与数据库的连接
2006/10/09 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
pycharm 使用心得(三)Hello world!
2014/06/05 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
酒店端午节促销方案
2014/02/18 职场文书
培训专员岗位职责
2014/02/26 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
英文邀请函
2015/02/02 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android