Librería PANDAS en Python para analizar datos

Cuando uno empieza a trabajar con Python para analítica de datos, comienza a programar con la librería Numpy, que está pensada en principio para datos de tablas numéricos con tipos homogéneos.

Sin embargo, la ventaja de la librería PANDAS frente a Numpy es que la primera está pensada desde un comienzo en datos tabulares heterogéneos.

Pandas es un proyecto de código abierto y gestionado por su comunidad de desarrolladores.

Vamos a ver un pequeño ejemplo de PANDAS, donde todas las funciones están pensadas en tablas, sin la utilización de bucles for … esto es fundamental!!!

Para dicho ejemplo utilizaremos el objeto #DataFrame, que tiene un índice de fila y otro de columna, a modo de un diccionario de objetos #Series que tienen todos idéntico el índice.

Por convención, usaremos el la siguiente codificación para importar Numpy y Pandas. Y será el comienzo de nuestro script con un montón de prints para que podamos ver los resultados por pantalla a modo de traza:

print(«# Método pandas.DataFrame.reindex»)
print(«# Trabajando con Pandas»)
import numpy as np
import pandas as pd

A continuación con DataFrame generaremos una matriz de 4×4 con valores correlativos del 1 al 16:

print(«# Generando valores correlativos en la matriz de 4×4:»)
data = pd.DataFrame(np.arange(16).reshape((4,4)), index=[«a», «b», «c», «d»], columns=[«A», «B», «C», «D»])
print(data)

En nuestro ejemplo, para manejo de datos con PANDAS crearemos una nueva fila (una 5ª fila) donde pondremos todos los valores a CERO:

print(«# Poniendo un índice más, una fila más con sus valores a cero:»)
datos_conCeros = data.reindex(index=[«a», «b», «c», «d», «e»], fill_value=0)
print(datos_conCeros)

El resultado sería:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

0 0 0 0 0

Con la función describe() generamos distintos estadísticos de la última matriz de 5×4:

print(«# Generando estadísticos de la matrix:»)
print(datos_conCeros.describe())

A continuación creamos una matriz con datos aleatorios generados automáticamente, con índices provincias españolas y columnas dos años separados por 10 años (2021 y 2011):

print(«# Creando valores aleatorios en la matrix:»)
datos_aleatorios=pd.DataFrame(np.random.standard_normal((6,2)), index=[«Badajoz», «Baleares», «Barcelona», «Bizkaia», «Burgos», «Cáceres»],
columns=[«2021», «2011»])
print(datos_aleatorios)

Generando así una matrix de 7×3

Ya esa misma matrix con datos reales de número de habitantes (población) de dichas provincias:

print(«# Valores reales de población en la matrix:»)
datos_reales=pd.DataFrame([[669.943, 693.921], [1173.008, 1113.114], [5714.730, 5529.099], [1154.334, 1155.772], [356.055, 375.657], [389.558, 415.446]],
index=[«Badajoz», «Baleares», «Barcelona», «Bizkaia», «Burgos», «Cáceres»], columns=[«2021», «2011»])
print(datos_reales)

Y ya sobre esos valores puedo filtrar las dos provincias extremeñas con la función reindex (REINDEXACIÓN):

print(«# Quedándome sólo con las dos filas de Extremadura:»)
datos_extremadura=datos_reales.reindex(index=[«Cáceres», «Badajoz»])
print(datos_extremadura)

Y a partir de ahí puedo hacer las operaciones que considere a modo de estadísticos. Por ejemplo aquí sumamos valores por provincias para Cáceres y Badajoz en cuanto a su población en los años 2021 y 2011:

print(«# Sumando valores de filas y columnas:»)
suma_filas = datos_extremadura.sum()
suma_columnas = datos_extremadura.sum(axis=»index»)
print(«Suma de valores por filas:»)
print(suma_filas)
print(«Suma de valores por columnas:»)
print(suma_columnas)

Bueno es un ejemplo muy muy sencillo, pero da una idea bastante ilustrativa de la cantidad de posibilidades que tiene la librería PANDAS para INDEXAR Y FILTRAR. Espero que este trozo de código haya conseguido explicarlo un poco aunque sea así por encima …

Aquí tenéis el script de Python al completo con el editor de texto TextMate:

Y finalmente el resultado de dicho script mostrando por pantalla lo que hemos obtenido con los distintos prints:

pablogarguez

@pablogarguez es actualmente #Investigador y Profesor Titular de Ingeniería Informática de la Escuela Politécnica en la Universidad de Extremadura en Cáceres. Ha sido Director General de Agenda Digital de la Consejería de Economía, Ciencia y Agenda Digital de la Junta de Extremadura, desde septiembre de 2019 a agosto de 2023. Fue Director de la Escuela Politécnica de Cáceres (School of Technology) de la Universidad de Extremadura durante 3 años (2017-2019), con titulaciones de grado, máster y doctorado en los campos de Ingeniería Civil, Edificación, Informática y Telecomunicaciones. Su trayectoria docente comienza en 1997 básicamente en asignaturas de Programación y de Bases de Datos. Su actividad investigadora se ha centrado en el Reconocimiento de Patrones y la Ciberseguridad. Fruto de esta labor de investigación, resaltar que es coautor de más de veinte artículos publicados en revistas internacionales indexadas en JCR, con un índice H de 12 en cuanto a las citas conseguidas por estos artículos. Actualmente tiene 3 sexenios de investigación a nivel nacional, y el último de ellos es un sexenio vivo (activo). También posee un sexenio de transferencia en la única convocatoria abierta hasta ahora por el Ministerio (2019).

Deja una respuesta

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