对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打开url并按指定块读取网页内容的方法
Apr 29 Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
Python 实现的 Google 批量翻译功能
Aug 26 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
opencv之为图像添加边界的方法示例
Dec 26 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
python 怎样进行内存管理
Nov 10 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
微信小程序使用npm支持踩坑
2018/11/07 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python中自定义函数的教程
2015/04/27 Python
python利用正则表达式提取字符串
2016/12/08 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
python提取log文件内容并画出图表
2019/07/08 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
python制作抽奖程序代码详解
2021/01/15 Python
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
平面设计岗位职责
2013/12/14 职场文书
什么是就业协议书
2014/04/17 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
应聘教师求职信
2014/07/19 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
MYSQL 表的全面总结
2021/11/11 MySQL
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS