Primeros pasos con Pandas

0
3304
Pandas

En este artículo aprenderemos en qué consiste una de las librerías más famosas del lenguaje Python. Trataremos de explicar desde su instalación hasta realizar una pequeña prueba para ir entendiendo como trabajar con esta librería. Este artículo va a ser el inicio de otros con el que iremos profundizando los conocimientos y viendo posibles aplicaciones de Machine Learning, Big Data o Data Science.

Tabla de contenidos

1. Introducción

Pandas es un paquete de Python que proporciona estructuras de datos similares a los dataframes de R. Es importante señalar aquí que, dado que Pandas lleva a cabo tareas importantes, como alinear datos para su comparación, fusionar conjuntos de datos, gestión de datos perdidos, se ha convertido en una librería muy importante para procesar datos a alto nivel en Python (es decir, estadísticas). Fue diseñada originalmente para gestionar datos financieros y como alternativa al uso de hojas de cálculo.

Esta librería depende de Numpy, que añade un potente tipo matricial a Python. Los principales tipos de datos que pueden representarse con pandas son:

  • Datos heterogéneos (o datos tabulares, como son llamados comúnmente)
  • Series temporales.

 

Pandas proporciona herramientas que permiten:

  • Leer y escribir datos en diferentes formatos: CSV, Microsoft Excel, bases SQL y formato HDF5.
  • Seleccionar y filtrar de manera sencilla tablas de datos en función de posición, valor o etiquetas.
  • Fusionar y unir datos.
  • Transformar datos aplicando funciones tanto en global como por ventanas.
  • Manipulación de series temporales.
  • Hacer gráficas por medio de matplotlib o seaborn, entre otros.

 

En pandas existen tres tipos básicos de objetos todos ellos basados a su vez en Numpy:

  • Series (listas, 1D),
  • DataFrame (tablas, 2D) y
  • Panels (tablas 3D).

Nosotros vamos a ver el uso básico de los dos primeros tipos de objetos, para un mayor detalle puedes consultar la documentación oficial.

2. Instalación

La forma más fácil de instalar Pandas es instalarlo como parte de la distribución Anaconda, una distribución multiplataforma para el análisis de datos y la computación científica. Este es el método de instalación recomendado para la mayoría de los usuarios.

En este caso, hemos preferido usar el propio instalador de Python. Antes de nada, como requisito imprescindible, es tener Python3 y Numpy instalados en nuestro equipo. Dicho esto, instalar Pandas es tan sencillo como ejecutar el siguiente comando:

pip3 install pandas

3. DataFrames

Para trabajar con datos tabulares (filas y columnas), Pandas incluye la versátil estructura DataFrame. Un DataFrame o frame se puede entender como una colección de Series (columnas), todas compartiendo un listado de índices únicos. La forma más común de crear un frame es con un diccionario en el que cada clave se asocia a un listado de elementos de igual longitud.

import pandas as pd

diccionario = { "nombre" : ["Marisa","Laura","Manuel"], "edad" : [34,29,11] }
frame = pd.DataFrame(diccionario)

display(frame)
nombre edad
0 Marisa 34
1 Laura 29
2 Manuel 11

Como podemos observar, la clave se utiliza como nombre de cada columna (serie) y cada elemento se asocia a una fila en función del índice.

4. Series

Las Series son estructuras unidimensionales similares a las ndarray de NumPy, en las que cada elemento posee también un índice único. Se pueden crear tanto a partir de listas como de diccionarios. La forma más sencilla de crear una serie es con el constructor pd.Series().

Pandas asume índices de 0 a n-1 (donde n es el tamaño de la de elementos). De manera opcional, podemos especificar una lista con las etiquetas de las filas.

serie = pd.Series(['Barcelona','Madrid','Valencia','Sevilla'])
print(serie, 'n')
serie2 = pd.Series(['Barcelona','Madrid','Valencia','Sevilla'], index=['a','b','c','d'])
print(serie2)
0    Barcelona
1       Madrid
2     Valencia
3      Sevilla
dtype: object 

a    Barcelona
b       Madrid
c     Valencia
d      Sevilla
dtype: object

5. Leer fichero CSV

La lectura de fichero es realmente sencilla con Pandas. Con su método read_csv() le podemos pasar la ruta online para que se lo descargue o si ya tenemos uno en nuestro equipo, solo tendríamos que poner la ruta de este para que pueda leerlo.

Aunque nosotros hemos usado read_csv, tiene muchos más para poder cargar datos que se encuentren en ficheros con distintas extensiones. En la documentación podemos ver el resto de implementaciones.

bills = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv")
display(bills.sample(10))
total_bill tip sex smoker day time size
115 17.31 3.50 Female No Sun Dinner 2
26 13.37 2.00 Male No Sat Dinner 2
24 19.82 3.18 Male No Sat Dinner 2
122 14.26 2.50 Male No Thur Lunch 2
155 29.85 5.14 Female No Sun Dinner 5
32 15.06 3.00 Female No Sat Dinner 2
231 15.69 3.00 Male Yes Sat Dinner 3
79 17.29 2.71 Male No Thur Lunch 2
243 18.78 3.00 Female No Thur Dinner 2
12 15.42 1.57 Male No Sun Dinner 2

Con bills.sample(10) conseguimos obtener del DataFrame 10 valores aleatorios del conjunto de datos para poder echar un vistazo como está estructurada nuestra tabla.

6. Manipulación de datos

Dado que en el paso anterior ya tenemos un conjunto de datos, vamos a proceder a realizar unas operaciones para ver el potencial de esta librería, ya que con pocas líneas de código obtendremos el resultado esperado.

# Saber la media de tips
mean = bills['tip'].mean()
print(f'Media = {mean:.2f}')

# Hacer una máscara para obtener aquellas bills cuyo total es superior a 15
bills = bills[bills['total_bill'] > 15]
display(bills.sample(10))

# Ver cuantos son fumadores y cuantos no y cuyo total es superior a 15 
print(bills['smoker'].value_counts())

# Si solo queremos imprimir las columnas total_bill y day haremos lo siguiente
display(bills.loc[:, ['total_bill', 'day']].sample(5))
Media = 3.46
total_bill tip sex smoker day time size
15 21.58 3.92 Male No Sun Dinner 2
160 21.50 3.50 Male No Sun Dinner 4
3 23.68 3.31 Male No Sun Dinner 2
101 15.38 3.00 Female Yes Fri Dinner 2
134 18.26 3.25 Female No Thur Lunch 2
227 20.45 3.00 Male No Sat Dinner 4
17 16.29 3.71 Male No Sun Dinner 3
20 17.92 4.08 Male No Sat Dinner 2
231 15.69 3.00 Male Yes Sat Dinner 3
93 16.32 4.30 Female Yes Fri Dinner 2
No     100
Yes     64
Name: smoker, dtype: int64
total_bill day
211 25.89 Sat
65 20.08 Sat
243 18.78 Thur
34 17.78 Sat
25 17.81 Sat

La cantidad de operaciones que podemos hacer es realmente grande y por eso no podemos poner todas pero os comparto la documentación en la sección de enlaces y referencias para que podáis investigar por vosotros mismos y buscar aquellas funcionalidades que resuelvan vuestro problema en concreto.

7. Conclusiones

Esto ha sido un artículo introductorio para entender un poco qué es la librería y qué cosas se puede hacer con ella. También hemos visto lo que es una DataFrame y una Serie, y hemos jugueteado un poco con ellos. En el próximo artículo haremos un caso más real y mostraremos otra alternativa a la que dio Juan Antonio, en el siguiente tutorial con R.

Enlaces y referencias

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad