对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的socket编程入门教程
Apr 23 Python
Python合并两个字典的常用方法与效率比较
Jun 17 Python
python字典的常用操作方法小结
May 16 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
python实现批量nii文件转换为png图像
Jul 18 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
python实现三次密码验证的示例
Apr 29 Python
python自动化测试之Selenium详解
Mar 13 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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合并静态文件详解
2014/11/14 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
srcElement表格样式
2006/09/03 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
动态创建按钮的JavaScript代码
2016/01/29 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
Javascript继承机制详解
2017/05/30 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
js实现抽奖功能
2020/11/24 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python中GeoJson和bokeh-1的使用讲解
2019/01/03 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
如何基于Python实现数字类型转换
2020/02/07 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
乡镇一岗双责责任书
2015/01/29 职场文书
英语通知范文
2015/04/22 职场文书
工作时间调整通知
2015/04/24 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL