Proceso de an谩lisis y limpieza de datos

2/17
Recursos

Aportes 15

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Esto es lo que dice ChatGPT sobre NHANES:

  • NHANES (National Health and Nutrition Examination Survey) es una encuesta realizada por el gobierno de los Estados Unidos que recopila informaci贸n sobre la salud y la nutrici贸n de la poblaci贸n estadounidense. En Python, NHANES se refiere al conjunto de datos de esta encuesta que se han puesto a disposici贸n del p煤blico en formato de archivo.

  • El conjunto de datos de NHANES en Python puede ser utilizado por investigadores, cient铆ficos de datos y profesionales de la salud para realizar an谩lisis estad铆sticos y epidemiol贸gicos. El conjunto de datos incluye informaci贸n sobre una amplia variedad de variables, como edad, sexo, raza, antecedentes m茅dicos, medidas antropom茅tricas, resultados de laboratorio y encuestas de dieta.

  • En Python, existen paquetes especializados que permiten a los usuarios cargar y manipular los datos de NHANES, como Pandas y NumPy. Adem谩s, tambi茅n existen librer铆as de visualizaci贸n de datos, como Matplotlib y Seaborn, que pueden utilizarse para visualizar los datos de NHANES.

  • En resumen, NHANES en Python es una herramienta 煤til para la investigaci贸n en salud y nutrici贸n, que permite a los usuarios realizar an谩lisis estad铆sticos y epidemiol贸gicos basados en datos confiables y de gran calidad.

A pesar que se eliminaron los registros con valores faltantes para la variable diabetes debe tenerse argumentos bien claros por lo que se hizo. Esto se debe a que se pierde informacion en otras variables que podrian ser relevantes. Todo depende del analisis que se quiere realizar.

2. Proceso de an谩lisis y limpieza de datos

nhanes_raw_df = (
    nhanes.load.load_NHANES_data(year='2017-2018')
    .clean_names(case_type='snake')
    
)
nhanes_raw_df.shape

nhanes_df = (
    nhanes_raw_df
    .select_columns(
        'general_health_condition',
        'age_in_years_at_screening',
        'gender',
        'current_selfreported_height_inches',
        'current_selfreported_weight_pounds',
        'doctor_told_you_have_diabetes',
        '60_sec_pulse30_sec_pulse2',
        'total_cholesterol_mgdl'
        
    )
    .rename_columns(
        {
            'age_in_years_at_screening': 'age',
            'current_selfreported_height_inches': 'height',
            'current_selfreported_weight_pounds': 'weight',
            'doctor_told_you_have_diabetes': 'diabetes',
            '60_sec_pulse30_sec_pulse2': 'pulse',
            'total_cholesterol_mgdl': 'total_cholesterol'
        }
    )
    .replace(
        {
            'height': {
                9999: np.nan,
                7777: np.nan,
            },
            'weight': {
                9999: np.nan,
                7777: np.nan,
            },
            'diabetes': {
                'Borderline': np.nan
            }
        }
    )
    .missing.sort_variables_by_missingness()
    .dropna(
        subset = ['diabetes'],
        how = 'any'
    )
    .transform_column(
        column_name = 'diabetes',
        function = lambda s: s.astype(int),
        elementwise = False
    )
)
nhanes_df.head()

Cambiar nombres de las variables

nhanes_df = (
    nhanes_raw_df
    .select_columns(
        "general_health_condition",
        "age_in_years_at_screening",
        "gender",
        "current_selfreported_height_inches",
        "current_selfreported_weight_pounds",
        "doctor_told_you_have_diabetes",
        "60_sec_pulse30_sec_pulse2",
        "total_cholesterol_mgdl"
    )   # cambiar nombre de las columnas seleccionadas mediante un dict
    .rename_columns(
        {
            "age_in_years_at_screening":"age",
            "current_selfreported_height_inches":"height",
            "current_selfreported_weight_pounds":"weight",
            "doctor_told_you_have_diabetes":"diabetes",
            "60_sec_pulse30_sec_pulse2":"pulse",
            "total_cholesterol_mgdl":"total_cholesterol"
        }
    )

Una funcion muy util!

Alguien me puede ayudar? cada vez que duplico el proyecto y lo trabajo funciona perfecto, pero cuando se apaga el notebook, y lo vuelvo a encender y trato de ejecutar empieza a dar errores con los import y librerias, y la unica forma de solucionarlo es borrando el proyecto y creandolo de nuevo

chequeado:


# Ordenar solo la columna de mayor a menor
sorted_heights = nhanes_raw_df['current_selfreported_height_inches'].sort_values(ascending=False)
sorted_weights = nhanes_raw_df['current_selfreported_weight_pounds'].sort_values(ascending=False)

# Imprimir la columna ordenada
print(sorted_heights)
print(sorted_weights)

por si acaso鈥

驴Por qu茅 鈥淏orderline鈥 realmente no nos interesa?
No es un dato faltante, puede ser una condici贸n de pre-diabetes?

Yo lo cambie de la siguiente manera: ```js (nhanes_raw_df.select_columns( "general_health_condition", "age_in_years_at_screening", "gender", "current_selfreported_height_inches", "current_selfreported_weight_pounds", "doctor_told_you_have_diabetes", "60_sec_pulse30_sec_pulse2", "total_cholesterol_mgdl" ) .rename(columns={'general_health_condition': 'health_condition'}) .rename(columns={'age_in_years_at_screening': 'age'}) .rename(columns={'current_selfreported_height_inches': 'height_inches'}) .rename(columns={'current_selfreported_weight_pounds': 'weight_pounds'}) .rename(columns={'doctor_told_you_have_diabetes': 'diabetes'}) .rename(columns={'60_sec_pulse30_sec_pulse2': 'pulse'}) .rename(columns={'total_cholesterol_mgdl': 'cholesterol'}) ) ```(nhanes\_raw\_df.select\_columns(聽 聽 "general\_health\_condition",聽 聽 "age\_in\_years\_at\_screening",聽 聽 "gender",聽 聽 "current\_selfreported\_height\_inches",聽 聽 "current\_selfreported\_weight\_pounds",聽 聽 "doctor\_told\_you\_have\_diabetes",聽 聽 "60\_sec\_pulse30\_sec\_pulse2",聽 聽 "total\_cholesterol\_mgdl").rename(columns={'general\_health\_condition': 'health\_condition'}).rename(columns={'age\_in\_years\_at\_screening': 'age'}).rename(columns={'current\_selfreported\_height\_inches': 'height\_inches'}).rename(columns={'current\_selfreported\_weight\_pounds': 'weight\_pounds'}).rename(columns={'doctor\_told\_you\_have\_diabetes': 'diabetes'}).rename(columns={'60\_sec\_pulse30\_sec\_pulse2': 'pulse'}).rename(columns={'total\_cholesterol\_mgdl': 'cholesterol'})聽)
```js .dropna( subset = ["diabetes"], how = "any" ) ```En esta parte no es necesario colocar any ya que esta por defecto en dropna :)
馃摑 **Mi resumen de la clase** 馃搶 Limpiar los datos antes de imputarlos. **Pasos de la limpieza de datos:** 1. Selecci贸n de variables: Dejar solo las variables necesarias para el an谩lisis. 2. Cambio de nombre a las variables: Definir nombres m谩s legibles. 3. Cambio de representaci贸n de valores faltantes: Identificar como est谩n codificados los valores faltantes y reemplazarlo por un `np.nan`. 4. Ordenar dataset: De mayor a menor cantidad de valores faltantes 5. Eliminar observaciones con valores faltantes: observaciones de valores faltantes en una variable cuando sea una proporci贸n no significativa o muy peque帽a 6. Cambio de tipo de datos: Si la variable solo tiene valores enteros y la herramienta nos dice que son tipo Object, modificarlo al tipo de dato correspondiente.

para ver los m谩ximos y los minimos:

# Seleccionar solo las columnas num茅ricas
numeric_columns = nhanes_raw_df.select_dtypes(include='number')

# Encontrar el valor m谩ximo y m铆nimo de cada columna
max_values = numeric_columns.max()
min_values = numeric_columns.min()

# Configurar la visualizaci贸n para mostrar todas las filas y columnas
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)

print("Valores m谩ximos:")
print(max_values)

print("\nValores m铆nimos:")
print(min_values)
Hola familia! Perd贸n pero tengo una duda, estoy trabajando desde jupyter notebooks en vscode y quer铆a saber si conocen una manera de que al cargar los dataframes muestren la displot con los datos faltantes arriba de cada columna como en deepnote. Gracias!