🧹2.2 Manejo y limpieza de datos

El manejo de bases de datos es un aspecto importante en cualquier disciplina que involucre el análisis de grandes cantidades de información. Una base de datos moleculares es un conjunto de estructuras químicas (datos), pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En Quimioinformática, el uso de bases de datos moleculares o quimiotecas es fundamental para realizar análisis y predicciones en la búsqueda de nuevas moléculas con propiedades específicas.

En esta sección, nos enfocamos en el manejo de bases de datos moleculares con Python y la librería Pandas. Comenzamos por importar una base de datos y luego realizamos el pre-tratamiento de dicha base de datos, incluyendo la limpieza de datos irrelevantes o duplicados.

Importar una base de datos

Antes de comenzar a trabajar con una base de datos en Python, es necesario importarla en el entorno de programación. Para importar una base de datos en Python, podemos usar la librería Pandas y la función read_csv(esto depende del tipo de archivo cargado).

Por ejemplo, si tenemos un archivo con extensión csv llamado "datos.csv" que contiene los datos de nuestra base de datos, podemos importarla con el siguiente código:

import pandas as pd
data = pd.read_csv("datos.csv")

Este código importa la base de datos y la almacena en un objeto llamado data.

Pre-tratamiento de la base de datos moleculares

Una vez que tenemos nuestra base de datos importada en Python, es importante realizar un pre-tratamiento para limpiar los datos y prepararlos para su análisis posterior.

Limpieza de datos irrelevantes o duplicados

En ocasiones, la base de datos puede contener información que no es relevante para el análisis que se quiere hacer o contiene datos que se repiten en varias filas. Para limpiar estos datos, se pueden usar las funciones de Pandas para filtrar y eliminar filas duplicadas.

Por ejemplo, si se quieren eliminar filas duplicadas, se puede usar la función drop_duplicates:

data = data.drop_duplicates()

Esta función eliminará todas las filas que contengan valores duplicados en todas las columnas.

Si se quieren eliminar columnas que contengan información irrelevante para el análisis de interés, se puede usar la función drop y especificar la columna o columnas a eliminar:

data = data.drop("columna_irrelevante", axis=1)

Esta función eliminará la columna especificada.

Cambiar nombres de columnas

La base de datos puede tener nombres de columnas poco descriptivos o difíciles de entender. Para cambiar el nombre de las columnas, podemos usar la función rename. Por ejemplo, el nombre de la columna "old_name" se puede cambiar a "new_name" con la función:

data = data.rename(columns={"old_name": "new_name"})

Cambiar tipos de datos

Es posible que se necesite cambiar el tipo de datos de una columna. Por ejemplo, si una columna se está interpretando como objeto, pero en realidad es una variable numérica, se puede cambiar el tipo de datos a float o int.

Para cambiar el tipo de datos de una columna en Pandas, se puede usar la función astype(). Este método permite convertir una columna a un tipo de datos específico.

Ejemplo: Supongamos que se tiene una base de datos con una columna de números representados como objetos. Para convertirlos a tipo de datos numéricos, se puede hacer lo siguiente:

import pandas as pd

# Importar la base de datos
df = pd.read_csv('datos.csv')

# Verificar los tipos de datos de las columnas
print(df.dtypes)

# Convertir la columna 'numeros' a tipo float
df['numeros'] = df['numeros'].astype(float)

# Verificar que el tipo de datos de la columna haya cambiado
print(f"Tipo de datos de columna: {df.dtypes}")

En este ejemplo, primero importamos la base de datos con la función read_csv() de Pandas y verificamos los tipos de datos de las columnas con el método dtypes. Luego, usamos astype() para convertir la columna 'numeros' a tipo float. Finalmente, verificamos que el tipo de datos de la columna haya cambiado correctamente.

Es importante tener en cuenta que, si hay valores en la columna que no se pueden convertir al nuevo tipo de dato, Pandas arrojará un error. En estos casos, es necesario limpiar la columna antes de realizar la conversión.

En resumen, el método astype() de Pandas permite cambiar el tipo de datos de una columna en una base de datos. Es importante verificar que la conversión se haya realizado correctamente y tener en cuenta posibles errores en la conversión.

Tratamiento de datos faltantes

Los datos faltantes, también conocidos como "missing values", son una de las situaciones más comunes en el manejo de bases de datos. Es probable que nos encontremos con datos faltantes en una o varias columnas de nuestra base de datos, ya sea porque no se recolectaron o porque se perdieron en algún momento del proceso. En cualquier caso, es importante tratar estos datos faltantes antes de realizar cualquier análisis o modelo predictivo. Métodos comunes para el tratamiento de datos faltantes son:

  • Eliminar las filas o columnas con datos faltantes: este enfoque es útil cuando el número de faltantes es pequeño en comparación con el tamaño total de la base de datos. Sin embargo, esta estrategia puede reducir significativamente el tamaño de la base de datos y, por lo tanto, reducir la cantidad de datos disponibles para el análisis.

  • Imputación de datos faltantes: este enfoque implica la sustitución de los datos faltantes por un valor estimado o promedio. Por ejemplo, podemos imputar el promedio de una columna en lugar de los datos faltantes en esa columna. Pandas proporciona la función fillna() para realizar este proceso.

  • Análisis de los patrones de los datos faltantes: en algunos casos, los datos faltantes pueden estar correlacionados con otras variables de la base de datos. En estos casos, podemos utilizar el conocimiento de las relaciones entre las variables para estimar los datos faltantes. Por ejemplo, si los faltantes en una columna están relacionados con otra columna, podemos utilizar la información de la segunda columna para estimar los datos faltantes en la primera columna.

  1. Eliminación de filas con datos faltantes:

Esta técnica consiste en eliminar todas las filas que contengan datos faltantes. Aunque es una solución rápida y sencilla, tiene el riesgo de eliminar información importante que puede ser relevante para el análisis posterior.

Veamos un ejemplo de cómo eliminar filas con datos faltantes utilizando la librería Pandas:

# Eliminar filas con valores faltantes
df.dropna(inplace=True)

En este ejemplo, df es el nombre de nuestro DataFrame. La función dropna() elimina todas las filas que contienen al menos un valor faltante. El parámetro inplace=True indica que los cambios se aplicarán directamente al DataFrame original.

#Otro ejemplo:
df_without_na = df.dropna()

En este código, df_without_na es el DataFrame resultante después de eliminar las filas con valores faltantes. Es importante tener en cuenta que esta opción puede no ser adecuada si se eliminan demasiados datos y la cantidad resultante es insuficiente para el análisis.

  1. Imputación de datos faltantes:

Esta técnica consiste en reemplazar los datos faltantes por otros valores estimados a partir de los datos existentes. Existen diferentes formas de realizar la imputación de datos faltantes, como la imputación por media, mediana, moda, entre otros.

Veamos un ejemplo utilizando la librería Pandas:

# Imputar datos faltantes por la media
df.fillna(df.mean(), inplace=True)

En este ejemplo, df es el nombre de nuestro DataFrame. La función fillna() reemplaza todos los valores faltantes por la media de cada columna. El parámetro inplace=True indica que los cambios se aplicarán directamente al DataFrame original.

  1. Utilizar algoritmos de aprendizaje automático:

Otra forma de tratar los datos faltantes es utilizar algoritmos de aprendizaje automático que permiten estimar los valores faltantes a partir de los datos existentes. Estos algoritmos pueden ser útiles cuando los datos faltantes no son aleatorios, sino que están relacionados con otras variables.

Veamos un ejemplo de cómo utilizar el algoritmo K-Nearest Neighbors (K-NN) para estimar los datos faltantes utilizando la librería Scikit-learn:

# Importar el modelo K-NN
from sklearn.impute import KNNImputer

# Crear una instancia del modelo con k=5
imputer = KNNImputer(n_neighbors=5)

# Imputar valores faltantes utilizando el modelo K-NN
df_imputed = imputer.fit_transform(df)

En este ejemplo, df es el nombre de nuestro DataFrame. Primero importamos el modelo K-NN de la librería Scikit-learn. Luego, creamos una instancia del modelo con k=5, lo que significa que se utilizarán los 5 vecinos más cercanos para estimar los datos faltantes. A continuación, se utiliza la función fit_transform para ajustar el modelo a los datos y transformar los faltantes utilizando el algoritmo de K-NN. En este código, df_imputed es el DataFrame resultante después de aplicar la imputación de datos faltantes.

En resumen, el tratamiento de valores faltantes es un paso importante en el preprocesamiento de datos. Pandas y Scikit-learn proporcionan herramientas útiles para imputar o eliminar los datos faltantes. Es importante evaluar cuidadosamente la cantidad de datos faltantes y seleccionar el método más adecuado para cada situación.

Para saber más:

Last updated