English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ejemplo de operación de reconstrucción de índices en Pandas
Para aplicar funciones propias o de otras bibliotecas a objetos Pandas, debe conocer tres métodos importantes. Los métodos se describen a continuación. El método adecuado a usar depende de si desea operar con todo el DataFrame, las filas, las columnas o los elementos.
Aplicación de funciones de tabla: pipe() Aplicación de funciones de filas o columnas: apply() Aplicación de funciones a nivel de elementos: applymap()
Se puede ejecutar una operación personalizada en DataFrame pasando una función y la cantidad adecuada de parámetros como parámetros de tubería.
Por ejemplo, añadir2Añadir un valor a un DataFrame. La función de sumador suma dos valores numéricos y devuelve la suma.
def adder(ele1,ele2) : return ele1+ele2
Usamos funciones personalizadas para operar con DataFrames.
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.pipe(adder,2)
Vamos a ver el programa completo:
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))
Resultados de la ejecución:
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
Se puede usar el método apply() para aplicar cualquier función a un DataFrame o Panel en el eje, que es similar a los métodos de estadísticas descriptivas y admite el parámetro opcional axis. Por defecto, la operación se realiza por columnas, considerando cada columna como un array similar.
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))
Resultados de la ejecución:
col1 -0.288022 col2 1.044839 col3 -0.187009 dtype: float64
Al pasar el parámetro axis, se puede ejecutar la operación por fila.
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))
Resultados de la ejecución:
col1 0.034093 col2 -0.152672 col3 -0.229728 dtype: float64
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))
Resultados de la ejecución:
col1 -0.167413 col2 -0.370495 col3 -0.707631 dtype: float64
No todas las funciones se pueden vectorizar (los arreglos NumPy ni devuelven otro array ni devuelven ningún valor), el método applymap() de DataFrame y el método map() de Series aceptan cualquier función de Python que tome un solo valor y devuelva un solo valor.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) # Función personalizada df['col1'].map(lambda x:x*100) print(df.apply(np.mean))
Resultados de la ejecución:
col1 0.480742 col2 0.454185 col3 0.266563 dtype: float64
import pandas as pd import numpy as np # Función personalizada df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.applymap(lambda x:x*100) print(df.apply(np.mean))
Resultados de la ejecución:
col1 0.395263 col2 0.204418 col3 -0.795188 dtype: float64