对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根据距离和时长计算配速示例
Feb 16 Python
python多线程操作实例
Nov 21 Python
python中字符串前面加r的作用
Jun 04 Python
Python中集合的内建函数和内建方法学习教程
Aug 19 Python
Python爬虫实例爬取网站搞笑段子
Nov 08 Python
python enumerate函数的使用方法总结
Nov 15 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
python 追踪except信息方式
Apr 25 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
Python爬取某平台短视频的方法
Feb 08 Python
pyqt5打包成exe可执行文件的方法
May 14 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
实用函数8
2007/11/08 PHP
smarty简单分页的实现方法
2014/10/27 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
js计算页面刷新的次数
2009/07/20 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
nodeJS微信分享
2017/12/20 NodeJs
js实现动态改变radio状态的方法
2018/02/28 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
js实现导航跟随效果
2018/11/17 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
简单介绍Python中的JSON使用
2015/04/28 Python
python如何为创建大量实例节省内存
2018/03/20 Python
python去除扩展名的实例讲解
2018/04/23 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Django 返回json数据的实现示例
2020/03/05 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
祖国在我心中演讲稿500字
2014/05/04 职场文书
《日月潭》教学反思
2016/02/20 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
pytorch--之halfTensor的使用详解
2021/05/24 Python
Vue如何清空对象
2022/03/03 Vue.js
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers