pandas基础运算

来源:互联网 发布:接入网络方式 编辑:程序博客网 时间:2024/06/09 22:42

《Python for Data Analysis》

算术运算和数据对齐

pandas可以对不同索引的对象进行算术运算。

例如:当对象相加时,如果存在不同的索引对,其结果的索引就是该索引对的并集。自动的数据对齐操作在不重叠的索引处引入了NA值。并且会在算术运算中传播。

In [1]: import numpy as npIn [2]: import pandas as pdIn [3]: from pandas import Series, DataFrameIn [4]: df1 = DataFrame(np.arange(12).reshape((3,4)),columns=list('abcd'))In [5]: df2 = DataFrame(np.arange(20).reshape((4,5)),columns=list('abcde'))In [6]: df1Out[6]:   a  b   c   d0  0  1   2   31  4  5   6   72  8  9  10  11In [7]: df2Out[7]:    a   b   c   d   e0   0   1   2   3   41   5   6   7   8   92  10  11  12  13  143  15  16  17  18  19In [8]: df1+df2Out[8]:      a     b     c     d   e0   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 NaN

在算术方法中填充值

In [9]: df1.add(df2, fill_value=0)Out[9]:      a     b     c     d     e0   0.0   2.0   4.0   6.0   4.01   9.0  11.0  13.0  15.0   9.02  18.0  20.0  22.0  24.0  14.03  15.0  16.0  17.0  18.0  19.0In [10]: df1.reindex(columns=df2.columns, fill_value=0)Out[10]:   a  b   c   d  e0  0  1   2   3  01  4  5   6   7  02  8  9  10  11  0

DataFrame和Series之间的运算

广播

In [12]: arr = np.arange(12).reshape((3,4))In [13]: arrOut[13]:array([[ 0,  1,  2,  3],       [ 4,  5,  6,  7],       [ 8,  9, 10, 11]])In [14]: arr[0]  #行Out[14]: array([0, 1, 2, 3])In [15]: arr - arr[0]Out[15]:array([[0, 0, 0, 0],       [4, 4, 4, 4],       [8, 8, 8, 8]])

默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下传播。series=frame.ix[0]

上例是Series取DataFrame的行,但是如果想匹配到DataFrame的行,且希望在列上传播,必须使用算术运算方法。frame.sub(series, axis=0)。传入的轴号就是希望匹配的轴。(series = frame['a']

0 0