pandas读书笔记 算数运算和数据对齐
pandas最重要的一个功能是,它可以对不同索引的对象进行算数运算。在对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集。
Series
s1=Series([7.3,-,3.4,1.5],index=['a','c','d','e'])
s2=Series([-2.1,3.6,-1.5,,3.1],index=['a','c','e','f','g']) s1
Out[]:
a 7.3
c -25.0
d 3.4
e 1.5
dtype: float64 s2
Out[]:
a -2.1
c 3.6
e -1.5
f 4.0
g 3.1
dtype: float64
它们相加就会产生:
s1+s2
Out[]:
a 5.2
c -21.4
d NaN
e 0.0
f NaN
g NaN
dtype: float64
自动的数据对齐操作在不重叠的索引处引入了NA值。
DataFrame
对齐操作会同时发生在行和列上:
df1=DataFrame(np.arange().reshape((,)),columns=list('bcd'),
index=['Ohio','Texas','Colorado'])
df2=DataFrame(np.arange().reshape((,)),columns=list('bde'),
index=['Utah','Ohio','Texas','Oregon'])
df1
Out[]:
b c d
Ohio
Texas
Colorado
df2
Out[]:
b d e
Utah
Ohio
Texas
Oregon
把它们相加后会返回一个新的DataFrame,其索引和列为原来那两个DataFrame的并集:
df1+df2
Out[]:
b c d e
Colorado NaN NaN NaN NaN
Ohio 3.0 NaN 6.0 NaN
Oregon NaN NaN NaN NaN
Texas 9.0 NaN 12.0 NaN
Utah NaN NaN NaN NaN
df1=DataFrame(np.arange().reshape((,)),columns=list('abcd'))
df2=DataFrame(np.arange().reshape((,)),columns=list('abcde'))
df1
Out[]:
a b c d
df2
Out[]:
a b c d e
将它们相加时,没有重叠的位置就会产生NA值:
df1+df2
Out[]:
a b c d e
0.0 2.0 4.0 6.0 NaN
9.0 11.0 13.0 15.0 NaN
18.0 20.0 22.0 24.0 NaN
NaN NaN NaN NaN NaN
使用df1的add方法,传入df2以及一个fill_value参数:
df1.add(df2,fill_value=)
Out[]:
a b c d e
0.0 2.0 4.0 6.0 4.0
9.0 11.0 13.0 15.0 9.0
18.0 20.0 22.0 24.0 14.0
15.0 16.0 17.0 18.0 19.0
与此类似,在对Series或DataFrame重新索引时,也可以指定一个填充值:
df1.reindex(columns=df2.columns,fill_value=)
Out[]:
a b c d e
DataFrame和Series之间的运算
arr=np.arange().reshape((,)) arr
Out[]:
array([[ , , , ],
[ , , , ],
[ , , , ]]) arr[]
Out[]: array([, , , ]) arr-arr[]
Out[]:
array([[, , , ],
[, , , ],
[, , , ]])
这就叫做广播(broadcasting)。DataFrame和Series之间的运算差不多如此:
frame=DataFrame(np.arange().reshape((,)),columns=list('bde'),
index=['Utah','Ohio','Texas','Oregon'])
series=frame.ix[]
__main__:: DeprecationWarning:
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing
See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated
frame
Out[]:
b d e
Utah
Ohio
Texas
Oregon
series
Out[]:
b
d
e
Name: Utah, dtype: int32
frame-series
Out[]:
b d e
Utah
Ohio
Texas
Oregon
也可以理解为纵向广播↓。
如果某个索引值在DataFrame的列或Series的索引中找不到,则参与运算的两个对象就会被重新索引以形成并集:
series2=Series(range(),index=['b','e','f']) frame+series2
Out[]:
b d e f
Utah 0.0 NaN 3.0 NaN
Ohio 3.0 NaN 6.0 NaN
Texas 6.0 NaN 9.0 NaN
Oregon 9.0 NaN 12.0 NaN
series3=frame['d'] frame
Out[]:
b d e
Utah
Ohio
Texas
Oregon series3
Out[]:
Utah
Ohio
Texas
Oregon
Name: d, dtype: int32 frame.sub(series3,axis=)
Out[]:
b d e
Utah -
Ohio -
Texas -
Oregon -
传入的轴号就是希望匹配的轴。
可以理解为横向广播 →
pandas读书笔记 算数运算和数据对齐的更多相关文章
- Shell学习笔记——算数运算与条件测试
算数运算 1. 使用let命令 #!/sbin/bash var1=2 var2=3 let sum=var1+var2 echo $sum 使用let命令式,变量前不需要加$号 只用于整数运算,不适 ...
- 《利用python进行数据分析》读书笔记--第七章 数据规整化:清理、转换、合并、重塑(三)
http://www.cnblogs.com/batteryhp/p/5046433.html 5.示例:usda食品数据库 下面是一个具体的例子,书中最重要的就是例子. #-*- encoding: ...
- 《利用python进行数据分析》读书笔记--第六章 数据加载、存储与文件格式
http://www.cnblogs.com/batteryhp/p/5021858.html 输入输出一般分为下面几类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据.利用Web API ...
- 《统计推断(Statistical Inference)》读书笔记——第6章 数据简化原理
在外行眼里统计学家经常做的一件事就是把一大堆杂七杂八的数据放在一起,算出几个莫名其妙的数字,然后再通过这些数字推理出貌似很靠谱的结论,简直就像是炼金术士用“贤者之石”把一堆石头炼成了金矿.第六章,应该 ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理
1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以 ...
- OCA读书笔记(10) - 管理UNDO数据
Undo自动管理与手动管理 undo段自动管理SQL> show parameter undo_management 将undo段改为手工管理SQL> alter system set u ...
- MySQL必知必会 读书笔记三:检索数据和数据排序
检索数据 SELECT语句 它的用途是从一个或多个表中检索信息. 为了使用SELECT检索表数据,必须至少给出两条信息--想选择什 么,以及从什么地方选择. 检索单个列 SELECT col_1 FR ...
- $《第一行代码:Android》读书笔记——第6章 数据持久化
主要讲述了Android数据持久化的三种方式:文件存储.SharedPreference存储.SQLite数据库存储. (一)文件存储 其实Android中文件存储方式和Java的文件操作类似,就是用 ...
- 3D数学读书笔记——向量运算及在c++上的实现
本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661 ...
随机推荐
- 详解 Flexible Box 中的 flex 属性
导读: 弹性盒子是 CSS3 的一种布局模式,一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有适当的行为的布局方式.其中 flex 属性用于指定弹性子元素如何分配空间. flex 属性的值 ...
- 爬虫(十二):图形验证码的识别、滑动验证码的识别(B站滑动验证码)
1. 验证码识别 随着爬虫的发展,越来越多的网站开始采用各种各样的措施来反爬虫,其中一个措施便是使用验证码.随着技术的发展,验证码也越来越花里胡哨的了.最开始就是几个数字随机组成的图像验证码,后来加入 ...
- 死磕Spring源码系列
一.Spring总体架构 1.架构图 2.SpringIOC:核心容器提供 Spring 框架的基本功能.核心容器的主要组件是 BeanFactory,它是工厂模式的实现.BeanFactory 使用 ...
- git 分支相关操作
git status 查看当前工作区 会显示分支 如下 D:\工程\vue_study\testplat_vue>git statusOn branch masternothing to co ...
- 38th 字符串与 列表间的转换
字符串与 列表间的转换 如何利用字符串 'Life is short ,I use python'输出 :'python use I, short is Life' s = 'Life is shor ...
- codeforces 1A
题目大意: 就是在一块长方形地面上铺瓷砖,然后一共要用多少块瓷砖,一块瓷砖被割开后只能用一次,输入长,宽,以及瓷砖边长,求一共需要多少块瓷砖: 基本思路: 这里有个技巧:就长来说,需要(n+k-1)/ ...
- 区别|Pandas-qcut( )与cut( )的区别
https://blog.csdn.net/starter_____/article/details/79327997
- (转载)js引擎的执行过程(二)
概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 语法分析: 分别对加载完成的代码块进行语法检验,语法正 ...
- PHP FILTER_SANITIZE_STRIPPED 过滤器
定义和用法 FILTER_SANITIZE_STRIPPED 过滤器去除或编码不需要的字符. 该过滤器是 FILTER_SANITIZE_STRING 过滤器的别名 该过滤器删除那些对应用程序有潜在危 ...
- Spring定时器的使用方法
Spring定时器主要通过Quartz Cron表达式来实现定时任务,注解用法如下: # 每月的最后1天 @Scheduled(cron = "0 0 18 28–31 * ?") ...