Python - EJERCICIO PYTHON -LIBRERÍA DE CÓDIGO PANDAS- ÍNDICE QUETELET - ¿FUNCIÓN ANIDADA? - AYUDA PORFAVOR

 
Vista:
sin imagen de perfil

EJERCICIO PYTHON -LIBRERÍA DE CÓDIGO PANDAS- ÍNDICE QUETELET - ¿FUNCIÓN ANIDADA? - AYUDA PORFAVOR

Publicado por Daltex (2 intervenciones) el 19/11/2022 18:57:31
Buenas tardes compañeros foreros,

Necesito ayuda con un simple ejercicio de Python que pide lo siguiente: "Relación estado de salud e índice Quetelet: El trabajo consiste en asignar en el fichero test las etiquetas (normal, sobrepeso) a la variable estado_de_salud dependiendo del resto de variables".

Mi problema reside en que la puntuación del ejercicio radica en la precisión de calificación de los distintos sujetos como normales o sobrepeso en relación a una serie de variables como son el IMC y la edad. De forma que, mis conocimientos del lenguaje solo alcanzan para definir una función, en este caso el IMC, y de esta manera calificar a los sujetos, por lo que mis resultados de la etiqueta estado_de_salud no son muy precisos. ¿Se les ocurre algún código para ayudarme en esta tarea?

A continuación, adjuntaré los archivos necesarios y el código que llevo hasta ahora:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pandas as pd
 
def NIVEL_DE_PESO(IMC):
  if IMC<24.9:
    return "normal"
  else:
    return "sobrepeso"
 
tabla_test= pd.read_csv("datos_test_encuesta_nutricion_kaggle.csv")
tabla_test
df = pd.DataFrame(tabla_test)
df['bmi'] = df['bmi'].str.replace(',','.').astype(float)
df["edad"]=df["edad"].astype(int)
tabla_test["estado_de_salud"]= tabla_test["bmi"].apply(NIVEL_DE_PESO)
tabla_test
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

EJERCICIO PYTHON -LIBRERÍA DE CÓDIGO PANDAS- ÍNDICE QUETELET - ¿FUNCIÓN ANIDADA? - AYUDA PORFAVOR

Publicado por Daltexito (2 intervenciones) el 19/11/2022 20:31:31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import pandas as pd
 
def EDAD_NIVEL_DE_PESO(edad,bmi):
  if edad<= 24 and bmi<=24.9:
    return "normal"
  else:
    return "sobrepeso"
  if 25<=edad<=34 and bmi<=25.9:
    return "normal"
  else:
    return "sobrepeso"
  if 35<=edad<=44 and bmi<=26.9:
    return "normal"
  else:
    return "sobrepeso"
  if 45<=edad<=54 and bmi<=27.9:
    return "normal"
  else:
    return "sobrepeso"
  if 55<=edad<=64 and bmi<=28.9:
    return "normal"
  else:
    return "sobrepeso"
  if edad>=65 and bmi<=29.9:
    return "normal"
  else:
    return "sobrepeso"
 
tabla_test= pd.read_csv("datos_test_encuesta_nutricion_kaggle.csv")
tabla_test
df = pd.DataFrame(tabla_test)
df['bmi'] = df['bmi'].str.replace(',','.').astype(float)
df["edad"]=df["edad"].astype(int)
tabla_test["Category"]= tabla_test["edad"]["bmi"].apply(EDAD_NIVEL_DE_PESO)

Aquí un intento de lo que quiero lograr, pero no funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

EJERCICIO PYTHON -LIBRERÍA DE CÓDIGO PANDAS- ÍNDICE QUETELET - ¿FUNCIÓN ANIDADA? - AYUDA PORFAVOR

Publicado por Dio (25 intervenciones) el 06/12/2022 20:20:58
Algo así buscas?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pandas as pd
 
# Definimos una función para calcular el IMC de un sujeto dado su peso y estatura
def calcular_imc(peso, estatura):
  return peso / (estatura ** 2)
 
# Leemos el archivo de datos y creamos un dataframe
tabla_test = pd.read_csv("C:/ruta/completa/al/archivo/datos_test_encuesta_nutricion_kaggle.csv")
df = pd.DataFrame(tabla_test)
 
# Convertimos la columna "bmi" a float y la columna "edad" a int
df['bmi'] = df['bmi'].str.replace(',','.').astype(float)
df["edad"] = df["edad"].astype(int)
 
# Calculamos el IMC de cada sujeto
df["imc"] = df.apply(lambda x: calcular_imc(x["peso"], x["estatura"]), axis=1)
 
# Determinamos el estado de salud de cada sujeto en función de su IMC
df["estado_de_salud"] = "normal"
df.loc[df["imc"] >= 25, "estado_de_salud"] = "sobrepeso"
df.loc[df["imc"] >= 30, "estado_de_salud"] = "obesidad"
 
# Imprimimos el dataframe resultante
print(df)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar