Python posee una abundancia de bibliotecas, tanto para usos generales como especializados. Hoy toca saber más acerca de Pandas.

Pandas es una biblioteca muy útil en manipulación y análisis de datos. Hoy veremos una de sus estructuras de datos más conocidas, Series.

Series de datos en Pandas.

La definición más formal basada en la documentación oficial sería lo más parecido a lo siguiente:

n-arreglo unidimensional con etiquetas de eje (incluyendo series de tiempo).

De una forma más general: Es un tipo de Arreglo que te permite almacenar información de diversa tipología; sea por medio de cadenas de texto , flotantes o enteros, dtype, entre otros. En un nivel más sutil puedes incluso trabajar con constructores y toda una diversidad de métodos.

En este artículo se introducirán los aspectos generales de las Series en Pandas, mecanismos para trabajar y manipular datos. Así como algunos ejemplos prácticos de utilidad conceptual.

Crear una Series.

Antes de comenzar creando, importamos la biblioteca en cuestión:

import pandas as pd
from pandas import Series

Ahora definamos nuestra primera Series:

#Definimos Series
Series([17,5,7,5,67,84,29,52,12,53,1,10])

#Como vez, en este caso el patrón de sintaxis es el siguiente: 

# Series([valores])

Entre sus ventajas está precisamente la facilidad de creación, podemos almacenar una cantidad significativa de información en forma de arreglo simplemente empleando la forma Series([ ]).  Sin embargo esto solo es el comienzo, ya que la visualización en consola resulta un poco burda:

0     17
1      5
2      7
3      5
4     67
5     84
6     29
7     52
8     12
9     53
10     1
11    10
dtype: int64
Resultado predeterminado en consola cuando se crea una Series.

Indexación en Pandas Series.

Podemos aplicar un elemento índice (index) para caracterizar mejor los valores que almacenamos en nuestro arreglo.

Pasos para aplicar índice.

  1. Define tu Series.
  2. Después del cierre de la lista (la primera que ves en el código), aplica index.
  3. Dentro de la lista de index introducirás nuevamente información. En este caso cadenas de texto. Lo que introduzcas en el índice será lo primero que aparezca en el resultado.
  4. Ten cuidado de cerrar la Series.

Veamos un ejemplo simple, queremos almacenar las notas de un grupo de 10 estudiantes en un examen de Mecánica de Sólidos.

#Notas de la clase
Series([5.7,8.5,9.1,5.5,8.2,9.0,10,7.0,7.7,9.9],index=["Juan","Jenifer","David","Pablo","Armando","Magdalena","Francesca","Rosmery","Vicente","Martin"])
Pandas Series con index. 

Observemos el resultado:

Juan          5.7
Jenifer       8.5
David         9.1
Pablo         5.5
Armando       8.2
Magdalena     9.0
Francesca    10.0
Rosmery       7.0
Vicente       7.7
Martin        9.9
dtype: float64
Pandas Series con index. 
#Notas de la clase
Series([5.7,8.5,9.1,5.5,8.2,9.0,10,7.0,7.7,9.9],index=["Juan","Jenifer","David","Pablo","Armando","Magdalena","Francesca","Rosmery","Vicente","Martin"]).mean()
#Resultado:
8.06

#Una clase muy estudiosa!
media de las diez calificaciones

¿Mucho mejor verdad? Por cierto, en el último ejemplo pudimos obtener la media directamente de estos datos, solo con agregar mean() al final de la Series.

También pudimos haber obtenido el mínimo min(), máximo max() y otra información de índole estadístico. Puedes encontrar muchas opciones relacionadas en la documentación.

¿Y si es una cadena de texto?

Anteriormente mencionamos la posibilidad de almacenar cadenas de texto, flotantes y dtypes en una Series. Veamos un ejemplo de la Liga Española de Futbol (Día 21 de Octubre).

liga_espanola=Series(['Real Sociedad','Real Madrid','Sevilla','Atlético de Madrid','Osasuna'],index=['1°','2°','3°','4°','5°'])
liga_espanola
Pandas Series con cadenas de texto

Observemos el resultado:

1°         Real Sociedad
2°           Real Madrid
3°               Sevilla
4°    Atlético de Madrid
5°               Osasuna
Pandas Series con cadenas de texto

En conclusión, el proceso del índice es casi idéntico, simplemente hemos cambiado el orden de las cosas. Pudiésemos haber hecho esto con un flotante y demás, quedando la estructura general intacta.

Otro punto a recalcar es que en este ejemplo solo trabajamos con los 5 primeros lugares, pero pudimos haber realizado sin problemas los 20 puestos de la liga.

Rango en Pandas Series.

A diferencia de index, puede que necesites almacenar datos, y presentarlos dentro de un rango específico.

Tomemos un ejemplo de una persona que se ha propuesto ahorrar una cantidad fija luego de un depósito inicial en una cuenta bancaria. (Imagine usted la moneda que prefiera).

#Ahorros Mensuales, 25 al mes.
Ahorros_mensuales= Series(['Enero','Febrero','Marzo','Abril','Mayo'],range(200,325,25))
Ahorros_mensuales
Series usando range().

Observemos el resultado:

200      Enero
225    Febrero
250      Marzo
275      Abril
300       Mayo
Series usando range() resultado.

¿Qué se expresa en este rango?

En este caso, enero representa el ahorro inicial, por lo que no debe ser tomado en cuenta. Luego se tienen cuatro meses restantes, la diferencia entre el valor final y el inicial (300-200) equivale a 100, por lo que 100/4 equivale a 25. Es así cómo definimos el rango.  No te preocupes si parece difícil, con la práctica se vuelve más intuitivo.

Explicación del código en Python.

La explicación del código es la siguiente, tenemos la siguiente estructura:

range(primer argumento, segundo argumento, tercer argumento)

El primer argumento: Representa en este caso el valor menor en la serie, dado que la secuencia se encuentra de menor a mayor, representa el valor inicial (O los ahorros iniciales en nuestro ejemplo).  

El segundo argumento: Representa el valor máximo de la serie, en este caso, el valor de nuestros ahorros en el último mes.

El tercer argumento: Es quizás el más flexible, en este caso representa los incrementos que tendrá la serie por cada nueva cadena de texto (en nuestro ejemplo, representa los ahorros que se sumarán cada mes hasta llegar a 300).

Advertencia: Debes tener cuidado sobre todo en el tercer argumento, este debe coincidir con los primeros dos argumentos (los dos extremos del rango) y con el número de elementos que se han definido en la series.

Graficar Series.

Para concluir, se presenta un ejemplo simple de cómo visualizar la información de las Series. Debido a que este artículo es de carácter completamente introductorio, se presentará una de las formas más simple de graficar de las opciones que presenta Matplotlib.

Primero debemos importar Matplotlib y asegurarnos de definir bien las variables que queremos representar para asegurar la coherencia de la gráfica.

Para nuestro ejemplo, tenemos, el Producto Interno Bruto (PIB) de una economía ficticia (Macondo) en intervalos de 5 años.

#Comenzamos importando Matplotlib
import matplotlib.pyplot as plt
#A continuación ponemos en práctica lo aprendido con las Series:

PIB_Macondo=Series([221,242,251,294,285,302,321,385],index=['1985','1990','1995','2000','2005','2010','2015','2020'])

#Simplificando nuestra variable.
PIB=PIB_Macondo
PIB
#Resultado:
1985    221
1990    242
1995    251
2000    294
2005    285
2010    302
2015    321
2020    385

Sin más preámbulos a graficar la economía de Macondo.

#simplemente graficamos la series que ya teníamos definida.
fig, ax = plt.subplots()
plt.bar(['1985','1990','1995','2000','2005','2010','2015','2020'],PIB)
#Definimos al menos el Axis y por cuestión de ornato.
ax.set_ylabel('PIB de Macondo en Miles de reales')
Economía de Macondo.

Observemos el resultado:

Macondo-Economy
Economía de Macondo durante los últimos 35 años.

Una vez se han definido correctamente las series, el proceso de creación de gráfica es bastante simple.

En conclusión

En este artículo, habrás aprendido qué son las Series de Pandas y cómo declarar información en ellas, en el lenguaje de programación Python.

Esta fue una introducción referente a cómo declarar Series simples y organizar datos en ellas mediante índice y rango. Además se mencionaron otros elementos complementarios como obtener medidas de dispersión y graficar Series.

A modo de retrospectiva:

  • Una Series permite almacenar información de diversa tipología; sea por medio de cadena de texto, flotante o enteros, dtype, entre otros.
  • Podemos aplicar un elemento index para caracterizar mejor los valores que almacenamos en nuestro arreglo.
  • Por cierto podemos obtener la media directamente de las Series, e incluso medidas de dispersión.
  • Cuando empleamos el método range() en Series debemos tener precaución de definir bien nuestra secuencia de valores. Su estructura general es: range(primer argumento, segundo argumento, tercer argumento)
  • La información almacenada en las Series es fácil de graficar. Existen diversas formas de mejorar dicha gráfica, sin embargo por razones pedagógicas este artículo intentó presentar una forma más básica e intuitiva.

Si te interesa profundizar más tu aprendizaje de Python, freeCodeCamp ofrece una certificación gratuita de Python.

Espero hayas aprendido algo nuevo con este artículo. Si llegaste hasta aquí, gracias y felicidades. Espero pronto puedas mejorar tus habilidades en Python.

Muchas Gracias por leer y...

¡Feliz aprendizaje!