Correlando variables con Pandas

Estándar

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()
Dataset plot

Representación de los valores del conjunto de datos

 

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *