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á unnumpy.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')).