Aplicar funciones a elementos de Series o DataFrames¶

Cualquier procesado, manipulación o análisis de conjuntos de datos implica el aplicar transformaciones, funciones o calcular indicadores elemento a elemento, fila a fila o columna a columna.

In [1]:
# Preliminares
import pandas as pd
import numpy as np

Para ilustrar, generamos un DataFrame usando un generador de números aleatorios.

In [2]:
# Usamos el generador por defecto del módulo random de numpy
rng = np.random.default_rng()
# 
df = pd.DataFrame(
    rng.standard_normal(size=10).reshape(5, 2),
    columns=list('xy')
)
df
Out[2]:
x y
0 -0.131601 -0.186435
1 -1.908522 0.039505
2 0.324792 1.964660
3 0.093982 0.760966
4 1.246065 -0.346505

Funciones universales ufuncs de numpy¶

Puesto que un DataFrame también es un array de numpy, podemos aplicarle cualquier función universal de numpy. Las funciones universales de numpy(ufuncs) se pueden consultar en la referencia Available ufuncs

In [3]:
# Calculamos la exponencial de x e y, elemento a elemento
np.exp(df)
Out[3]:
x y
0 0.876691 0.829913
1 0.148299 1.040296
2 1.383743 7.132488
3 1.098540 2.140343
4 3.476635 0.707155
In [4]:
# Elevamos x a la potencia y, elemento a elemento:
np.power(df['x'], df['y'])
Out[4]:
0         NaN
1         NaN
2    0.109767
3    0.165395
4    0.926605
dtype: float64

También se pueden aplicar métodos de pandas directamente a todo un DataFrame¶

In [5]:
# Para obtener la suma, columna por columna
df.sum()
Out[5]:
x   -0.375284
y    2.232192
dtype: float64
In [6]:
# Para obtener la media, columna por columna
df.mean()
Out[6]:
x   -0.075057
y    0.446438
dtype: float64
In [7]:
# Para obtener la desviación típica, columna por columna
df.std()
Out[7]:
x    1.150935
y    0.948526
dtype: float64

También podríamos calcular estos indicadores, fila por fila, usando el parámetro axis=1.

In [8]:
df.sum(axis=1)
Out[8]:
0   -0.318036
1   -1.869017
2    2.289452
3    0.854949
4    0.899560
dtype: float64

Podéis encontrar y explorar la gran cantidad de métodos disponibles para un DataFrameen la documentación de pandas.