对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版微信红包分配算法
May 04 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
Python中super函数的用法
Nov 17 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 Python
Python 阶乘详解
Oct 05 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实现活动人选抽奖功能
2017/04/19 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
js中运算符&& 和 || 的使用记录
2014/08/21 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
Javascript复制实例详解
2016/01/28 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
python里运用私有属性和方法总结
2019/07/08 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
解释一下Windows的消息机制
2014/01/30 面试题
大学生四个方面的自我评价
2013/09/19 职场文书
银行求职推荐信范文
2013/11/30 职场文书
物流专业求职计划书
2014/01/10 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
重阳节慰问信
2015/02/15 职场文书
争做文明公民倡议书
2019/06/24 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python
mysql幻读详解实例以及解决办法
2022/06/16 MySQL