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.