五、pandas系列---pandas库的数据类型运算

来源:互联网 发布:大学生网络成瘾的原因 编辑:程序博客网 时间:2024/05/19 10:34

pandas系列—pandas库的数据类型运算

[TOC]

如何改变Series和DataFrame对象:
1. 算术运算根据行列索引,补齐后运算,运算默认产生浮点数,补齐时缺项填充NaN
2. 二维和一维,一维和零维间为广播运算
3. 采用 + - * / 符号进行的二元运算会产生新的对象

一、数据类型的算术运算

1.1 简单的算术运算

例子1:

import pandas as pdimport numpy as npa = pd.DataFrame(np.arange(12).reshape(3,4))aOut[42]:    0  1   2   30  0  1   2   31  4  5   6   72  8  9  10  11b = pd.DataFrame(np.arange(20).reshape(4,5))bOut[44]:     0   1   2   3   40   0   1   2   3   41   5   6   7   8   92  10  11  12  13  143  15  16  17  18  19a+bOut[45]:       0     1     2     3   40   0.0   2.0   4.0   6.0 NaN1   9.0  11.0  13.0  15.0 NaN2  18.0  20.0  22.0  24.0 NaN3   NaN   NaN   NaN   NaN NaNa*bOut[46]:       0     1      2      3   40   0.0   1.0    4.0    9.0 NaN1  20.0  30.0   42.0   56.0 NaN2  80.0  99.0  120.0  143.0 NaN3   NaN   NaN    NaN    NaN NaN

1.2 方法形成的运算

方法 说明 .add(d,**argws) 加法运算,可选参数 .sub(d,**argws) 减法运算,可选参数 .mul(d,**arwgs) 乘法运算,可选参数 .div(d,**argws) 除法运算,可选参数

例子2:

import pandas as pdimport numpy as npa = pd.DataFrame(np.arange(12).reshape(3,4))b = pd.DataFrame(np.arange(20).reshape(4,5))b.add(a,fill_value=100)  #空的数据用100来填充Out[47]:        0      1      2      3      40    0.0    2.0    4.0    6.0  104.01    9.0   11.0   13.0   15.0  109.02   18.0   20.0   22.0   24.0  114.03  115.0  116.0  117.0  118.0  119.0a.mul(b,fill_value=0)Out[48]:       0     1      2      3    40   0.0   1.0    4.0    9.0  0.01  20.0  30.0   42.0   56.0  0.02  80.0  99.0  120.0  143.0  0.03   0.0   0.0    0.0    0.0  0.0

1.3 不同维度间的运算

import pandas as pdimport numpy as npb = pd.DataFrame(np.arange(20).reshape(4,5))bOut[50]:     0   1   2   3   40   0   1   2   3   41   5   6   7   8   92  10  11  12  13  143  15  16  17  18  19c = pd.Series(np.arange(4))cOut[52]: 0    01    12    23    3dtype: int32c-10Out[53]: 0   -101    -92    -83    -7dtype: int32b-cOut[54]:       0     1     2     3   40   0.0   0.0   0.0   0.0 NaN1   5.0   5.0   5.0   5.0 NaN2  10.0  10.0  10.0  10.0 NaN3  15.0  15.0  15.0  15.0 NaN

注1:不同维度间为广播运算,一维Series默认在轴1参与运算(b的每一行减去c的元素)
若要使轴0参与运算,需要指定axis

b.sub(c,axis=0)Out[55]:     0   1   2   3   40   0   1   2   3   41   4   5   6   7   82   8   9  10  11  123  12  13  14  15  16

二、比较运算


1. 比较运算只能比较相同索引的元素,不进行补齐
2. 二维和一维、一维和零维间为广播运算
3. 采用 > < >= <= != 等符号进行的二元运算产生布尔对象

a = pd.DataFrame(np.arange(12).reshape(3,4))aOut[57]:    0  1   2   30  0  1   2   31  4  5   6   72  8  9  10  11b = pd.DataFrame(np.arange(12,0,-1).reshape(3,4))bOut[59]:     0   1   2  30  12  11  10  91   8   7   6  52   4   3   2  1a>bOut[60]:        0      1      2      30  False  False  False  False1  False  False  False   True2   True   True   True   True

注:同维度运算,尺寸一致

a = pd.DataFrame(np.arange(12).reshape(3,4))aOut[65]:    0  1   2   30  0  1   2   31  4  5   6   72  8  9  10  11c = pd.Series(np.arange(4))cOut[67]: 0    01    12    23    3dtype: int32a>c            #不同维度,广播运算,默认在1轴Out[68]:        0      1      2      30  False  False  False  False1   True   True   True   True2   True   True   True   Truec>0Out[69]: 0    False1     True2     True3     Truedtype: bool

参考资料:北京理工大学嵩天老师教学视频

原创粉丝点击