Una de las librerías más utilizadas para el análisis y procesamiento de datos en python es pandas. Como mismo estamos aprendiendo numpy en python, vamos a ir resumiendo en esta entrada todo lo relacionado con esta librería tan útil para machine learning.
Series
Queremos comenzar con las series, las cuales son como una matriz en Numpy, excepto que las series en pandas tienen etiquetas de datos, por lo que los valores están indexados.
Para utilizar esta librería, y en particular las Series, tenemos que importar lo siguiente:
Bien, vamos a hora a ver el primer ejemplo:
Como podéis ver, por defecto nos indexa numéricamente los datos.
Si queremos ver los valores de la serie:
Si queremos ver los índices de la serie:
Ahora vamos a crear una serie con índices personalizados:
Como podéis ver, hemos creado una serie con la densidad de habitantes por continentes.
Por supuesto para consultar solo un continente podemos llamar solo al index correspondiente:
También podemos consultar datos a través de filtros de la siguiente manera:
Podemos convertir toda la Serie en un diccionario:
y al revés, convertir diccionarios en series:
Al crear una serie a partir de un diccionario, también podemos pasarle los índices a partir de una lista, e incluso crear nuevos:
Como podéis ver me sustituye los índices que venían en el diccionario por los elementos de la lista, sustituyendo los elementos coincidentes, eliminando los elementos del diccionario cuyo índice no aparezca en la lista como es el caso de Antártica, y creando nuevos índices con valores NaN.
Pandas tiene un método muy potente para ver y sustituír los elementos nulos:
como ves pd.isnull() me devuelve True en los índices que contenga algún elemento NaN. De la misma manera podemos usar pd.notnull() y me devolverá un False en los índices donde tenga algún elemento NaN.
Podemos sumar los elementos iguales de dos series de la siguiente manera:
En este caso como hemos sumado la misma serie, obtenemos el doble en cada índice.
También podemos nombrar las series:
Podemos nombrar al conjunto de índices:
Reindexando Series en Pandas python
El ejemplo anterior podemos hacerlo de esta manera:
Con fill_value llenamos los indices nuevos creados.
Borrar index de Series
Podemos borrar un índice de la serie:
DataFrames
Los DataFrames están compuestos por Series. Si conocéis excel, un dataframe se podría asemejar a una tabla de excel.
Para importar los DataFrames lo podemos hacer de la siguiente manera:
Vamos ahora a crear un dataframe básico a partir de un array 2D:
Como véis, si no se expecifica, se asigna índices y columnas numéricos. Si queremos nombrar los índices y las columnas en el momento de la creación del dataframe lo podemos hacer de la siguiente manera:
Ya teniendo claro que son los índices y las columnas, podemos consultar columnas específicas:
Si queremos consultar varias columnas lo podemos hacer así:
También se puede hacer de la siguiente manera:
Podemos filtrar por columnas:
Este ejemplo me devuelve las filas donde la columna 2 tenga datos menores que 7.
También podemos consultar filas determinadas llamando al nombre de los índices usando loc:
o llamando al número del índice usando iloc:
Podemos evaluar si cada elemento del dataframe coincide con un criterio. Por ejemplo:
Como podemos ver en el ejemplo anterior df < 7 nos devuelve el dataframe, sustituyendo por true los valores que cumplen la condición y false los que no la cumplen.
Podemos consultar los nombres de las columnas del dataframe:
Como mismo ocurría con los diccionarios y las series podemos asignar el nombre a las columnas del dataframe:
Como podemos ver, al no existir la Col4, crea NaN en cada fila correspondiente a esa columna.
Podemos asignarle un mismo valorres a esa Col4:
Podemos rellenar esa cuarta columna a partir de una serie, incluso asignarlo a indices concretos:
Cuando importamos un DataFrame para analizarlo, podemos visualizar las primeras filas de la siguiente manera:
Y lo mismo con el final:
Si no se especifica ningún argumento para .tail() y .head(), devuelve 5 resultados. Podemos pasar por argumentos el número de resultados que queremos tener:
Podemos eliminar columnas:
Como mismo hicimos con las Series, podemos convertir DataFrame en diccionarios y al revés:
Borrar índices y columnas de DataFrame en Pandas
Al igual que hicimos con las Series, podemos borrar índices y columnas de los DataFrames. Veamos algunos ejemplos:
Como vemos en el ejemplo anterior usando .drop() podemos borrar índices ya sea de Series o de DataFrames. Para borrar columnas tenemos que añadir un argumento a .drop() especificando que eje borrar.
Estadísticas con Pandas
Una vez tenemos los DataFrames creados, podemos utilizar un conjunto de funciones estadísticas que nos permitirán obtener información de los datos que tenemos en esos DataFrames.
Un ejemplo de ellos es la función sum() la cual nos devuelve la suma total de cada columna:
aunque también nos devuelve la suma de las filas si especificamos el axis:
Si queremos que nos devuelva el mínimo valor podemos usar la funcion min():
Y como mismo podíamos hacer con los array en numpy, podemos obtener el índice que tiene el mínimo valor en cada columna:
Todo esto lo podemos hacer también con los máximos usando la función max():