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 aplicar la fórmula de pandas de Python para categorizar individuos basándose en sus muestras de hemoglobina.

Tengo los datos xls (Hoja Principal) adjuntos en la [imagen del archivo xlsx de muestra][1] aquí.

Siendo principiante en Python y Ciencia de Datos, estoy intentando leer las hojas en el archivo xlsx de la siguiente manera:

Cargar pandas

import pandas as pd

# Leer archivo CSV en el DataFrame df
hoja1, hoja2 = None, None
with pd.ExcelFile("blood_data.xlsx") as lector:
    hoja1 = pd.read_excel(lector, sheet_name='Hoja Principal')
    hoja2 = pd.read_excel(lector, sheet_name='Otra Hoja')

# Mostrar DataFrame
print(hoja1)

Obtengo todas las 110 filas y columnas en la salida, pero quiero filtrar según la condición que se muestra en verde en la captura de pantalla. Hb Masculino 13-17 y Bilirrubina 0.3-1.2. Si los valores no están dentro de ese rango, debo imprimir el nombre del candidato. Por favor, ayúdame a aplicar un filtro basado en múltiples columnas utilizando pandas para lograr mi resultado.

Archivo de entrada de muestra: https://github.com/wittymindstech/medical-data-analysis/blob/main/blood_data.xlsx

Salida: MEHRAWAN, RAKHI, etc.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para filtrar los datos según las condiciones proporcionadas en la pregunta, se puede utilizar el siguiente código:

    import pandas as pd
    
    # Leer archivo de Excel en el DataFrame df
    df = pd.read_excel("blood_data.xlsx", sheet_name='Master sheet')
    
    # Filtrar los datos según las condiciones
    condition1 = (df['Test Name'] == 'Hb') & (df['Gender'] == 'Male') & (df['Reference Range'].str.contains('13-17'))
    condition2 = (df['Test Name'] == 'Bilirubin') & (df['Gender'] == 'Male') & (df['Reference Range'].str.contains('0.3-1.2'))
    filtered_df = df[condition1 | condition2]
    
    # Imprimir los nombres de los candidatos cuyos valores están fuera del rango
    out_of_range = filtered_df[~((filtered_df['Result'] >= filtered_df['Reference Range'].str.extract(r'(\d+\.\d+)')[0].astype(float)) & (filtered_df['Result'] <= filtered_df['Reference Range'].str.extract(r'(\d+\.\d+)')[1].astype(float)))]['Candidate Name']
    print(out_of_range.to_list())
    

    Explicación:

    1. Se importa la librería pandas.
    2. El archivo de Excel se lee en un DataFrame utilizando la función read_excel().

    3. Se definen dos condiciones basadas en las condiciones verdes mencionadas en la pregunta. Esto se hace utilizando los operadores & y | para combinar múltiples condiciones. Se utiliza la función str.contains() para verificar si la cadena coincide con el rango proporcionado.

    4. El DataFrame df se filtra según las condiciones anteriores utilizando la técnica de indexación booleana. El DataFrame resultante se almacena en la variable filtered_df.

    5. Los valores fuera de rango se filtran verificando si la columna Result no está dentro del rango proporcionado en la columna Reference Range. Esto se hace utilizando el operador ~.

    6. Se extraen los nombres de los candidatos cuyos valores están fuera del rango de la columna Candidate Name y se imprimen en la consola.

    La salida será una lista de nombres de los candidatos cuyos valores no están dentro del rango especificado.

Comments are closed.