对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使用xauth方式登录饭否网然后发消息
Apr 11 Python
python文件和目录操作函数小结
Jul 11 Python
收集的几个Python小技巧分享
Nov 22 Python
Python实现扩展内置类型的方法分析
Oct 16 Python
python数字图像处理之高级形态学处理
Apr 27 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
Django项目后台不挂断运行的方法
Aug 31 Python
详解Python time库的使用
Oct 10 Python
django配置app中的静态文件步骤
Mar 27 Python
Django框架请求生命周期实现原理
Nov 13 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 30 Python
在Python 中将类对象序列化为JSON
Apr 06 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+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
javascript数组定义的几种方法
2017/10/06 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
Python获取网页上图片下载地址的方法
2015/03/11 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
行政专员求职信范文
2014/05/03 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
Apache POI的基本使用详解
2021/11/07 Servers