Pandas - 函数应用

  • 简述

    要将您自己或其他库的函数应用于 Pandas 对象,您应该了解三个重要方法。下面讨论了这些方法。使用的适当方法取决于您的函数是否希望在整个 DataFrame、行或列或元素方面进行操作。
    • 表格函数应用:pipe()
    • 行或列函数应用:apply()
    • 元素智能函数应用:applymap()
  • 表格函数应用

    可以通过将函数和适当数量的参数作为管道参数传递来执行自定义操作。因此,对整个 DataFrame 执行操作。
    例如,将值 2 添加到 DataFrame 中的所有元素。然后,

    adder 函数

    adder 函数将两个数值作为参数相加并返回总和。
    
    def adder(ele1,ele2):
       return ele1+ele2
    
    我们现在将使用自定义函数对 DataFrame 进行操作。
    
    df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
    df.pipe(adder,2)
    
    让我们看看完整的程序 -
    
    import pandas as pd
    import numpy as np
    def adder(ele1,ele2):
       return ele1+ele2
    df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
    df.pipe(adder,2)
    print df.apply(np.mean)
    
    它的输出如下 -
    
            col1       col2       col3
    0   2.176704   2.219691   1.509360
    1   2.222378   2.422167   3.953921
    2   2.241096   1.135424   2.696432
    3   2.355763   0.376672   1.182570
    4   2.308743   2.714767   2.130288
    
  • 行或列函数应用

    可以使用任意函数沿 DataFrame 或 Panel 的轴应用apply()方法,与描述性统计方法一样,采用可选的轴参数。默认情况下,该操作按列执行,将每一列视为类似数组。

    示例 1

    
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
    df.apply(np.mean)
    print df.apply(np.mean)
    
    它的输出如下 -
    
    col1   -0.288022
    col2    1.044839
    col3   -0.187009
    dtype: float64
    
    通过传递axis参数,操作可以按行执行。

    示例 2

    
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
    df.apply(np.mean,axis=1)
    print df.apply(np.mean)
    
    它的输出如下 -
    
    col1    0.034093
    col2   -0.152672
    col3   -0.229728
    dtype: float64  
    

    示例 3

    
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
    df.apply(lambda x: x.max() - x.min())
    print df.apply(np.mean)
    
    它的输出如下 -
    
    col1   -0.167413
    col2   -0.370495
    col3   -0.707631
    dtype: float64
    
  • 元素智能函数应用

    并非所有函数都可以向量化(既不是返回另一个数组的 NumPy 数组也不是任何值),方法applymap()在 DataFrame 和analogously map()on Series 接受任何接受单个值并返回单个值的 Python 函数。

    示例 1

    
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
    # My custom function
    df['col1'].map(lambda x:x*100)
    print df.apply(np.mean)
    
    它的输出如下 -
    
    col1    0.480742
    col2    0.454185
    col3    0.266563
    dtype: float64
    

    示例 2

    
    import pandas as pd
    import numpy as np
    # My custom function
    df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
    df.applymap(lambda x:x*100)
    print df.apply(np.mean)
    
    它的输出如下 -
    
    col1    0.395263
    col2    0.204418
    col3   -0.795188
    dtype: float64