Introducción a la Librería Pandas de Python – Parte 2

En un nivel muy básico, Pandas puede ser considerado como una versión estructurada de matrices NumPy en donde las filas y columnas son identificadas con etiquetas en vez de simples índices de números, pero también Pandas proporciona herramientas, métodos y funcionalidad para estructuras básicas de datos, pero por su puesto debes entender cómo manejar esta estructura de datos para utilizarla correctamente, por lo que esta entrada se trata específicamente sobre esto.

Como cualquier otra librería en Python deberás importarla dentro de tu programa, en este caso se suele usar el alias pd, mientras que para la librería NumPy se carga como np.

import numpy as np
import pandas as pd

Pandas practica

Como ya vimos en la teoría, Pandas se divide en Series, en donde se manejan matrices unidimensionales, DataFrame, en donde se emplean estructuras bidimensionales y por último Paneles en donde encontramos datos de 3 dimensionales. Como para Machine Learning utilizamos estructuras de datos de 2 dimensiones nos vamos a enfocar en explicar solamente los DataFrame.

Por lo tanto, crear los DataFrames es el primer paso en cualquier proyecto de Machine Learning con Python, por lo que para crear una trama de datos desde una matriz NumPy debes pasarla a la función DataFrame() en el argumento de datos.

data = np.array([['','Col1','Col2'], ['Fila1',11,22], ['Fila2',33,44]])          
print(pd.DataFrame(data = data[1:,1:], index = data[1:,0], columns = data[0,1:]))

Introducción-a-pandas-parte-2-2

Si observamos el resultado de este código, se fragmenta los elementos seleccionados de la matriz NumPy para construir el DataFrame, primero se selecciona los valores que figuran en las listas que comienza con Fila1 y Fila2, luego selecciona el índice o los números de fila Fila1 y Fila2 y luego los nombres de las columnas Col1 y Col2.

La manera en que creamos este DataFrame será la misma para todas las estructuras.

df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6]]))
print('DataFrame:')
print(df)

Introducción-a-pandas-parte-2-3

A su vez crear un serie es sencillo.

series = pd.Series({"Argentina":"Buenos Aires", "Chile":"Santiago de Chile", "Colombia":"Bogotá", "Perú":"Lima"})
print('Series:')
print(series)

Introducción-a-pandas-parte-2-4

Ten en cuenta que el índice de los DataFrame como de las Series, contienen las claves del diccionario original y están ordenas, por lo que el primer índice siempre será 0. Por ejemplo Argentina será el índice en 0, mientras que Perú será el índice en 3.

Una vez creado el DataFrame puedes explorarlo con todas las instrucciones con las que Pandas cuenta.

Comencemos conociendo la forma de los datos para ello utilizamos la instrucción shape. Con esta instrucción podemos conocer las dimensiones del DataFrame, es decir el ancho y altura.

#Forma del DataFrame
print('Forma del DataFrame:')
print(df.shape)
print()

Introducción-a-pandas-parte-2-5

Por otra parte, podemos utilizar la función len() en combinación con la instrucción index para conocer la altura del DataFrame.

#Altura del DataFrame
print('Altura del DataFrame:')
print(len(df.index))

Introducción-a-pandas-parte-2-6

Conociendo las estadísticas del DataFrame 

Un comando muy útil es describe() que muestra estadísticas de resumen para columnas numéricas.

#Estadísticas del DataFrame
print('Estadísticas del DataFrame:')
print(df.describe())

Introducción-a-pandas-parte-2-7

También podemos conocer la media de todas las columnas utilizando mean.

#Media de las columnas DataFrame
print('Media de las columnas DataFrame:')
print(df.mean())

Introducción-a-pandas-parte-2-8

Para conocer la correlación entre las columnas en un DataFrame utilizamos corr.

#Correlación del DataFrame
print('Correlación del DataFrame:')
print(df.corr())

Introducción-a-pandas-parte-2-9

También podemos saber los número de valores no nulos en cada columna del DataFrame.

#Cuenta los datos del DataFrame
print('Conteo de datos del DataFrame:')
print(df.count())

Introducción-a-pandas-parte-2-10

Para conocer el valor más alto en cada columna utilizamos max.

#Valor más alto de cada columna del DataFrame
print('Valor más alto de la columna del DataFrame:')
print(df.max())

Introducción-a-pandas-parte-2-11

Y, por su parte, para conocer el valor más bajo en cada columna utilizamos min.

#Valor mínimo de cada columna del DataFrame
print('Valor mínimo de la columna del DataFrame:')
print(df.min())

Introducción-a-pandas-parte-2-12

También podemos conocer la mediana de cada columna.

#Mediana de cada columna del DataFrame
print('Mediana de la columna del DataFrame:')
print(df.median())

Introducción-a-pandas-parte-2-13

Y por último podemos conocer la desviación estándar de cada columna del DataFrame.

#Desviación estándar de cada columna del DataFrame
print('Desviación estándar de la columna del DataFrame:')
print(df.std())

Introducción-a-pandas-parte-2-14

Seleccionar un índice o columna

Una de las cosas que es mucho más fácil en Pandas es seleccionar los datos que deseas en comparación con seleccionar un valor de una lista o un diccionario. Puedes seleccionar una columna de manera muy fácil, solamente deberás indicar el índice de la misma.

#Seleccionar la primera columna del DataFrame
print('Primera columna del DataFrame:')
print(df[0])

Introducción-a-pandas-parte-2-15

También puedes seleccionar algunas columnas del DataFrame devolviendo estás como un nuevo DataFrame.

#Seleccionar dos columnas del DataFrame
print('Dos columnas del DataFrame:')
print(df[[0, 1]])

Introducción-a-pandas-parte-2-16

También puedes seleccionar un valor utilizando la posición del mismo, tomando en cuenta su fila y columna.

#Seleccionar el valor de la primera fila y última columna del DataFrame
print('Valor de la primera fila y última columna del DataFrame:')
print(df.iloc[0][2])

Introducción-a-pandas-parte-2-17

De igual forma puedes usar los índices del DataFrame para seleccionar los datos.

#Seleccionar los valores de la primera fila del DataFrame
print('Valores de la primera fila del DataFrame:')
print(df.loc[0])

Introducción-a-pandas-parte-2-18

Este mismo procedimiento lo puedes hacer utilizando “iloc” y los dos puntos.

#Seleccionar los valores de la primera fila del DataFrame
print('Valores de la primera fila del DataFrame:')
print(df.iloc[0,:])

Introducción-a-pandas-parte-2-19

Importar y Exportar datos de un archivo

Visto todos los pasos anteriores, que son básicos en el manejo de datos con Pandas, veamos como podemos implementar esta librería especificamente para Machine Learning, comenzando por el primer paso que es el de importar los datos.

Generalmente para obtener los datos de Machine Learning lo vas a hacer de alguna de las siguientes formas:

  • Abrir un archivo local, generalmente un archivo CSV, pero también podría ser un archivo de texto delimitado, excel, entre otros.
  • Abrir un archivo o base de datos de manera remota desde un sitio web a través de una URL.

Para cumplir con estas acciones hay diferentes comandos para cada una de ellas, pero cuando se abre un archivo se verá de la siguiente manera:

pd.read_tipoarchivo()

Hay diferentes tipos de archivos con los que puede trabajar Pandas, por lo que se debe reemplazar “tipoarchivo” con el tipo de archivo real, por ejemplo CSV. Adicionalmente se debe indicar la ruta o el nombre del archivo dentro del paréntesis. Dentro del paréntesis también se puede pasar diferentes argumentos relacionados con la forma de abrir el archivo, para conocerlos es recomendable leer la documentación.

Veamos este procedimiento en un ejemplo, vamos a leer un archivo CSV que tenemos guardado en  nuestro computador llamado “train.csv”.

pd.read_csv('train.csv')

Ahora bien, después que le hemos realizado varias modificaciones a nuestros datos queremos guardarlos en un nuevo archivo, de igual forma podemos utilizar la librería de Pandas, solamente debemos especificar el tipo de archivo en donde se guardará y la ruta y el nombre en donde estará ubicado en nuestro computador.

pd.to_tipoarchivo(nombrearchivo)

Limpieza de datos

Otro procedimiento que podemos hacer con Pandas es limpiar nuestros datos, estos es muy importante en Machine Learning si queremos obtener resultados confiables.

Con Pandas podemos verificar si faltan valores en el conjunto de datos solamente tenemos que implementar pd.isnull(). Implementando esta instrucción nos devuelve una matriz booleana, una matriz de verdadero para valores faltantes y falso para valores no perdidos.

#Verificar si hay datos nulos en el DataFrame
print('Datos nulos en el DataFrame:')
print(df.isnull())

Introducción-a-pandas-parte-2-21

Para obtener una suma de valores nulos o faltantes solamente se debe ejecutar la siguiente instrucción:

#Suma de datos nulos en el DataFrame
print('Suma datos nulos en el DataFrame:')
print(df.isnull().sum())

Introducción-a-pandas-parte-2-22

Después de obtener una lista de valores perdidos, nos podemos deshacerse de ellos usando df.dropna() para eliminar las filas o df.dropna(axis = 1) para eliminar las columnas en donde haya datos perdidos.

En caso de que no querramos eliminar datos también podemos rellenar los valores perdidos con otros valores usando df.fillna(x) que reemplaza los valores perdidos con x, puede ser cualquier valor, inclusive se puede reemplar todos los valores nulos con la media de los datos.

#Reemplaza los valores perdidos por la media
print('Reemplazar los valores perdidos por la media:')
print(df.fillna(df.mean ()))

Introducción-a-pandas-parte-2-23

Estos son los comandos muy básicos de Pandas, pero con esta base puedes empezar a emplearlos en tus proyectos de Machine Learning, existen muchos más pero seguramente los iras aprendiendo en el camino a medida que desarrolles tus proyectos, recuerda que la página web oficial de Pandas sirve de gran ayuda cuando tengas algún inconveniente o duda al respecto de alguna aplicación.

2 thoughts on “Introducción a la Librería Pandas de Python – Parte 2”

  1. Buen día, tus cursos son de gran ayuda, seria bueno que en estos casos de practicas pequeñas agregues el archivo para descargarlo y hacer lo mismo en nuestra maquina.

  2. Hola, muchas gracias por el comentario. En estos videos no lo hago porque la idea es que ustedes vayan desarrollando el código por su cuenta de esa forma van aprendiendo. Saludos.

Deja un comentario

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