Trabajando con DataFrames#

Para los amantes de pandas.DataFrame y polars.DataFrame. Por defecto, todos los transformadores de scikit-learn y chemotools devuelven numpy.ndarray. Sin embargo, ahora es posible configurar tus métodos de preprocesamiento de chemotools para producir objetos pandas.DataFrame o polars.DataFrame como salida. Esto es posible después de implementar la nueva API set_output() de scikit-learn (>= 1.2.2 para pandas y >= 1.4.0 para polars) (documentación). La misma API implementada en otros métodos de preprocesamiento de scikit-learn como StandardScaler() ahora está disponible para los transformadores de chemotools.

Nota

¡Desde la versión 0.1.3, set_output() está disponible para todas las funciones de chemotools!

A continuación se presentan dos ejemplos de cómo usar esta nueva API:

Ejemplo 1: Usando la API set_output() con un único método de preprocesamiento#

1. Carga tus datos espectrales como un pandas.DataFrame#

Primero carga tus datos espectrales. En este caso, asumimos un archivo llamado spectra.csv donde cada fila representa un espectro y cada columna representa números de onda.

import pandas as pd
from chemotools.baseline import AirPls

# Load your data as a pandas DataFrame
spectra = pd.read_csv('data/spectra.csv', index_col=0)

La variable spectra es un objeto pandas.DataFrame con los índices representando los nombres de las muestras y las columnas representando los números de onda.

2. Crea un objeto de preprocesamiento de chemotools y establece la salida a pandas#

A continuación, creamos el objeto AirPls y establecemos la salida a pandas.

# Create an AirPLS object and set the output to pandas
airpls = AirPls().set_output(transform='pandas')

El método set_output() acepta los siguientes argumentos:

  • transform: El formato de salida. Puede ser 'pandas' o 'default' (el formato por defecto devolverá un numpy.ndarray).

Consejo

Si deseas establecer la salida a polars deberías usar transform='polars' en el método set_output() (AirPLS().set_output(transform='polars')).

3. Ajusta y transforma los espectros#

# Fit and transform the spectra
spectra_airpls = airpls.fit_transform(spectra)

La salida del método fit_transform() ahora es un objeto pandas.DataFrame.

Consejo

Observa que por defecto los índices y las columnas de los datos de entrada no se mantienen en la salida, y el DataFrame spectra_airpls tiene índices y columnas por defecto.

Ejemplo 2: Usando la API set_output() con un pipeline#

De manera similar, la API set_output() se puede usar con pipelines. El siguiente código muestra cómo crear un pipeline que realiza:

  • Corrección de dispersión multiplicativa

  • Escalado estándar

import pandas as pd
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from chemotools.scatter import MultiplicativeScatterCorrection

# Make the pipeline
pipeline = make_pipeline(MultiplicativeScatterCorrection(), StandardScaler())

# Set the output to pandas
pipeline.set_output(transform="pandas")

# Fit the pipeline and transform the spectra
output = pipeline.fit_transform(spectra)

Consejo

Si deseas establecer la salida a polars deberías usar transform='polars' en el método set_output() (pipeline.set_output(transform='polars')).