对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进阶教程之词典、字典、dict
Aug 29 Python
python爬取51job中hr的邮箱
May 14 Python
python实现决策树ID3算法的示例代码
May 30 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
django项目登录中使用图片验证码的实现方法
Aug 15 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
Python爬虫实例——爬取美团美食数据
Jul 15 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
python中常用的数据结构介绍
Jan 12 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
基于php判断客户端类型
2016/10/14 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
JavaScript 特殊字符
2007/04/05 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
JavaScript实现简单验证码
2020/08/24 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
python获取指定时间差的时间实例详解
2017/04/11 Python
python实现BackPropagation算法
2017/12/14 Python
Python使用gRPC传输协议教程
2018/10/16 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
python Selenium 库的使用技巧
2020/10/16 Python
十一个高级MySql面试题
2014/10/06 面试题
酒店服务与管理毕业生求职信
2013/11/02 职场文书
大型车展策划方案
2014/02/01 职场文书
环保建议书作文
2014/03/12 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
总经理检讨书
2014/09/15 职场文书
小学数学教学反思范文
2016/02/16 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL
Python中json.dumps()函数的使用解析
2021/05/17 Python
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL