Series
o DataFrame
s¶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.
# Preliminares
import pandas as pd
import numpy as np
Para ilustrar, generamos un DataFrame
usando un generador de números aleatorios.
# 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
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 |
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
# Calculamos la exponencial de x e y, elemento a elemento
np.exp(df)
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 |
# Elevamos x a la potencia y, elemento a elemento:
np.power(df['x'], df['y'])
0 NaN 1 NaN 2 0.109767 3 0.165395 4 0.926605 dtype: float64
pandas
directamente a todo un DataFrame
¶# Para obtener la suma, columna por columna
df.sum()
x -0.375284 y 2.232192 dtype: float64
# Para obtener la media, columna por columna
df.mean()
x -0.075057 y 0.446438 dtype: float64
# Para obtener la desviación típica, columna por columna
df.std()
x 1.150935 y 0.948526 dtype: float64
También podríamos calcular estos indicadores, fila por fila, usando el parámetro axis=1
.
df.sum(axis=1)
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 DataFrame
en la documentación de pandas
.