es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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() y sort_values() en pandas. Aquí está el código que puedes usar:

    from scipy.stats import shapiro
    import pandas as pd
    
    # cargar el conjunto de datos
    df = pd.read_csv('ruta')
    
    # obtener la lista de columnas numéricas
    num_cols = df.select_dtypes(include=['float64', 'int64']).columns.tolist()
    
    # aplicar la función shapiro a cada columna numérica y almacenar los valores p en un diccionario
    p_values = {}
    for col in num_cols:
       p_values[col] = shapiro(df[col])[1]
    
    # convertir el diccionario en una serie de pandas
    p_values_series = pd.Series(p_values)
    
    # ordenar la serie por los valores en orden descendente
    p_values_sorted = p_values_series.sort_values(ascending=False)
    
    # obtener la variable con el valor p más alto de Shapiro
    highest_p_variable = p_values_sorted.index[0]
    
    # imprimir el resultado
    print("La variable con el valor p más alto de Shapiro es:", highest_p_variable)
    

    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ón shapiro() 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.

Comments are closed.