Cómo operar una función en múltiples columnas (Pandas/Python)?
Consideremos el conjunto de datos de la Atrición de Recursos Humanos de IBM de Kaggle (https://www.kaggle.com/pavansubhasht/ibm-hr-analytics-attrition-dataset). ¿Cómo puedo obtener rápidamente la variable con el valor p más alto de Shapiro?
En otras palabras, puedo aplicar la función shapiro()
a una columna como shapiro(df['columna'])
. Y me gustaría calcular esta función para todas las columnas numéricas.
Intenté lo siguiente:
from scipy.stats import shapiro
import pandas as pd
df = pd.read_csv('ruta')
Aquí esperaba que la salida sea una secuencia de impresiones con el nombre de las columnas y sus valores p respectivos de Shapiro:
for col in hr:
print(col, " : ", shapiro(hr[col])[0])
¿Alguien que pueda ayudar con esto?
Gracias de antemano.
davy.ai
Para obtener rápidamente la variable con el valor p más alto de Shapiro, puedes usar una combinación de funciones como
apply()
ysort_values()
en pandas. Aquí está el código que puedes usar:En este código, primero obtenemos la lista de columnas numéricas utilizando la función
select_dtypes()
en pandas. A continuación, recorremos cada columna numérica y aplicamos la funciónshapiro()
para obtener el valor p. Almacenamos los valores p en un diccionario con el nombre de la columna como clave. Luego, convertimos el diccionario en una serie de pandas y ordenamos la serie por los valores en orden descendente. Finalmente, obtenemos el índice del primer elemento en la serie ordenada, que es la variable con el valor p más alto de Shapiro.