LogoEjk

TEST

Correlando variables con Pandas

Dec. 11, 2015

En esta entrada, veremos una aplicación práctica de la librería Pandas al análisis de datos.

En esta entrada, veremos una aplicación práctica de la librería Pandas al análisis de datos. Para ello, usaremos un objeto DataFrame en el que cargarems los contenidos de un archivo CSV que contiene datos de medida de una celda de flotación.

Una celda de flotación se usa en minería para separar minerales de mezclas extraídas en crudo, aprovechando diferencias en su hidrofobicidad.
El conjunto de datos (enlace de descarga) tiene un índice en forma de marcas temporales, y cada columna es una variable dependiente del tiempo que mide magnitudes tales como la tasa de alimentación o el flujo de aire.

Buscaremos la correlación entre todas las variables. Esto nos dará una idea de cómo de relacionadas están entre sí; y en general, nos dará una idea de si hay factores en común afectando a las variables.
Cargamos en primer lugar los datos del archivo CSV descargado:

>>> import pandas as pd
>>> fcdata = pd.read_csv('flotation-cell.csv', index_col=0)
>>> print(fcdata.head())
Feed rate Upstream pH CuSO4 added Pulp level \
Date and time
15/12/2004 19:57:01 341.049347 10.820513 7.995605 24.443470
15/12/2004 19:57:31 274.270782 10.827351 7.786569 27.819294
15/12/2004 19:58:01 334.836761 10.854701 7.655922 30.335533
15/12/2004 19:58:32 323.605927 10.885470 7.838828 30.663738
15/12/2004 19:59:03 322.341309 10.851282 7.995605 30.288647

Air flow rate
Date and time
15/12/2004 19:57:01 2.802198
15/12/2004 19:57:31 2.798535
15/12/2004 19:58:01 2.805861
15/12/2004 19:58:32 2.802198
15/12/2004 19:59:03 2.805861

Hemos cargado el archivo con read_csv() especificando explícitamente que la primera columna es el índice, como se indica en la documentación. DataFrame.head() muestra las cinco primeras filas del objeto, una función muy útil cuando queremos hacernos una idea de cómo son los datos con los que trabajamos sin tener que inspeccionarlos todos. Una vez cargados, podemos representar los datos:

>>> import matplotlib.pyplot as plt
>>> fcdata.plot()
>>> plt.show()

El gráfico no es bonito, pero es informativo. Para conseguir gráficos mejores, podemos usar las librerías Matplotlib o Seaborn.
A continuación, obtenemos la correlación entre los parámetros. Afortunadamente, Pandas tiene un método para ello: DataFrame.correl().

>>> fcdata.corr()
Feed rate Upstream pH CuSO4 added Pulp level Air flow rate
Feed rate 1.000000 0.163943 0.438234 0.036742 0.026665
Upstream pH 0.163943 1.000000 0.188979 0.088289 0.040845
CuSO4 added 0.438234 0.188979 1.000000 -0.013927 0.008808
Pulp level 0.036742 0.088289 -0.013927 1.000000 0.158203
Air flow rate 0.026665 0.040845 0.008808 0.158203 1.000000

Esta tabla muestra que las variables más correladas son Feed rate y CuSO4 added. Esto se puede observar en la gráfica; cuando hay una caída en Feed rate, se observa una similar en CuSO4 added. En este caso, hemos utilizado el coeficiente de Pearson, pero en la documentación podemos ver que hay otros coeficientes que se pueden usar.
En esta entrada, hemos visto una aplicación práctica muy simple de lo que hemos visto en entradas anteriores. Para cerrar esta serie de entradas dedicadas a Pandas, veremos otro ejemplo práctico en una futura entrada.

Return to blog