美文网首页
Pandas的基本功能(四)

Pandas的基本功能(四)

作者: 5f2a6061653d | 来源:发表于2018-12-01 16:05 被阅读1次

    DataFrame和Series之间的算术运算

    DataFrame和Series之间的算术运算与NumPy数组运算一样都有明确规定,具体示例如下所示:

    In [40]: import numpy as np
    In [41]: from pandas import Series,DataFrame
    In [42]: f = DataFrame(np.arange(12).reshape(4,3),index =
     ...: ['qian','feng','jiao','yu'],columns = ['a','b','c'])
    In [43]: se = f.loc['qian']
    In [44]: se1 = Series(range(3),index = ['b','c','d'])
    In [45]: se2 = f['b']
    In [46]: f1 = f - se
    In [47]: f2 = f + se1
    In [48]: f3 = f.sub(se2,axis = 0)
    

    上述代码是DataFrame和Series之间的算术运算,其中In [43]是使用loc获取f中行索引为“qian”的数据,并将其赋值给变量se;In [45]是获取f中列索引为“b”的数据,并将其赋值给变量se2;In [46]是计算对象f与对象se的差,并将计算结果赋值给变量f1;In [47]是计算对象f与对象se1的和,并将计算结果赋值给变量f2;In [48]是计算对象f与对象se2的差,并将计算结果赋值给变量f3。各变量的运行结果如下所示:

    In [49]: f
    Out[49]:
     a b c
    qian 0 1 2
    feng 3 4 5
    jiao 6 7 8
    yu 9 10 11
    In [50]: se
    Out[50]:
    a 0
    b 1
    c 2
    Name: qian, dtype: int32
    In [51]: se1
    Out[51]:
    b    0
    c 1
    d 2
    dtype: int64
    In [52]: se2
    Out[52]:
    qian 1
    feng 4
    jiao 7
    yu 10
    Name: b, dtype: int32
    In [53]: f1
    Out[53]:
     a b c
    qian 0 0 0
    feng 3 3 3
    jiao 6 6 6
    yu 9 9 9
    In [54]: f2
    Out[54]:
     a b c d
    qian NaN 1.0 3.0 NaN
    feng NaN 4.0 6.0 NaN
    jiao NaN 7.0 9.0 NaN
    yu NaN 10.0 12.0 NaN
    In [55]: f3
    Out[55]:
     a b c
    qian -1 0 1
    feng -1 0 1
    jiao -1 0 1
    yu -1 0 1
    

    从上述运行结果可看出,默认情况下的f1是将Series对象的索引直接匹配到DataFrame对象的列,然后沿着行往下一直广播(矩阵或向量减去一个常数,一般是矩阵中的每一个元素减去此常数)。当在DataFrame的列索引或Series对象的索引中匹配不成功,则参与运算的两个对象会被重新索引并形成并集,如f2中f1与se1的加法运算。若既要匹配行,又要在列上广播,则需要使用算术运算方法,如f3。

    上述示例中使用了Pandas中的算术方法sub,用于不同对象中的减法运算,Pandas中还有很多类似的算术方法,具体如表4.6所示。

    方法 说明
    add 用于加法(+)运算的方法
    sub 用于减法(-)运算的方法
    mul 用于乘法(*)运算的方法
    div 用于除法(/)运算的方法

    相关文章

      网友评论

          本文标题:Pandas的基本功能(四)

          本文链接:https://www.haomeiwen.com/subject/ctsbgftx.html