pandas

Pandas

Tutorial Pandas: Integración de Pandas con Matplotlib

Pandas y Matplotlib: aprende a integrar estas dos poderosas bibliotecas de Python para realizar visualizaciones de datos eficientes y de alta calidad.

¿Qué es Matplotlib en Python?

Matplotlib es una biblioteca de visualización de datos en Python que permite generar gráficos de alta calidad de manera sencilla y flexible. Es una herramienta fundamental para los científicos de datos y analistas, ya que facilita la creación de una amplia variedad de gráficos, desde simples líneas hasta complejas visualizaciones en 3D. 

Matplotlib es altamente compatible con otras bibliotecas del ecosistema científico de Python, como NumPy y Pandas, lo que permite integraciones eficientes y efectivas.

Matplotlib se basa en una jerarquía de objetos que permite un control detallado sobre todos los aspectos de un gráfico. Los elementos principales de esta jerarquía incluyen:

  • Figure: el contenedor principal de un gráfico.
  • Axes: el área donde se dibuja el gráfico, que puede contener múltiples subgráficos.
  • Axis: las escalas y los ticks de los ejes.

Para utilizar Matplotlib, se suele importar el módulo pyplot que proporciona una interfaz similar a MATLAB, simplificando la creación de gráficos de manera imperativa.

import matplotlib.pyplot as plt
import numpy as np

# Ejemplo básico de un gráfico de línea
x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y)
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
plt.title('Gráfico de Línea Senoidal')
plt.show()

Matplotlib permite personalizar casi todos los aspectos de un gráfico, incluyendo colores, tipos de línea, estilos de marcador, etiquetas, títulos y leyendas. También soporta anotaciones, subgráficos y gráficos en 3D.

# Personalización de un gráfico
plt.plot(x, y, label='Seno', color='blue', linestyle='--', marker='o')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
plt.title('Gráfico Personalizado')
plt.legend()
plt.grid(True)
plt.show()

Además de pyplot, Matplotlib ofrece una API orientada a objetos que proporciona un mayor control y flexibilidad para crear gráficos más complejos. Esta API permite trabajar directamente con los objetos Figure y Axes.

fig, ax = plt.subplots()
ax.plot(x, y, label='Seno')
ax.set_xlabel('Eje X')
ax.set_ylabel('Eje Y')
ax.set_title('Gráfico usando la API orientada a objetos')
ax.legend()
plt.show()

La integración de Matplotlib con Pandas es especialmente útil, ya que Pandas proporciona métodos de visualización que utilizan Matplotlib internamente. Esto permite crear gráficos directamente desde DataFrames y Series de Pandas, facilitando el análisis exploratorio de datos.

¿Qué relación existe entre Pandas y Matplotlib?

Pandas y Matplotlib están estrechamente relacionados en el ecosistema de Python para la manipulación y visualización de datos. Pandas es una biblioteca de análisis de datos que proporciona estructuras de datos y herramientas de manipulación de datos flexibles y eficientes. Matplotlib, por otro lado, es una biblioteca de visualización de datos que permite crear gráficos de alta calidad. La integración de ambas bibliotecas facilita el proceso de análisis y visualización de datos, permitiendo a los usuarios crear gráficos directamente desde estructuras de datos de Pandas como DataFrames y Series.

Pandas incluye métodos de visualización que utilizan Matplotlib como backend. Estos métodos permiten crear gráficos directamente desde los objetos de Pandas sin necesidad de llamar explícitamente a funciones de Matplotlib. Algunos de los métodos más comunes son plot(), hist(), boxplot(), scatter_matrix(), entre otros. Estos métodos simplifican la creación de gráficos y permiten una integración fluida entre el análisis y la visualización de datos.

En resumen, la relación entre Pandas y Matplotlib permite a los usuarios aprovechar las capacidades de manipulación de datos de Pandas junto con las capacidades de visualización de Matplotlib. Esta integración facilita el análisis exploratorio de datos y la creación de gráficos de alta calidad de manera eficiente.

Principales gráficas de Matplotlib usando Pandas

Pandas facilita la creación de diferentes tipos de gráficos utilizando la funcionalidad de Matplotlib como backend. A continuación se detallan las principales gráficas que se pueden generar directamente desde un DataFrame o una Serie de Pandas, junto con ejemplos de código actualizados.

Gráfico de líneas

El gráfico de líneas es uno de los tipos más comunes y se utiliza para mostrar tendencias a lo largo del tiempo. Pandas permite crear gráficos de líneas de manera sencilla utilizando el método plot().

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con un seed para reproducibilidad
seed = 42
rng = np.random.default_rng(seed)
valor = rng.normal(loc=50, scale=10, size=100).cumsum()

# Generar un rango de fechas
fechas = pd.date_range(start='2023-01-01', periods=100, freq='D')

# Crear un DataFrame con las fechas y los valores
df = pd.DataFrame({'Fecha': fechas, 'Valores': valor})

# Establecer la columna 'Fecha' como índice
df.set_index('Fecha', inplace=True)

# Gráfico de líneas
df.plot(title='Gráfico de Líneas')
plt.xlabel('Fecha')
plt.ylabel('Valor')
plt.show()

Gráfico de barras

El gráfico de barras es útil para comparar diferentes categorías. Pandas ofrece la posibilidad de crear gráficos de barras verticales y horizontales.

import pandas as pd
import matplotlib.pyplot as plt

# Crear un DataFrame de ejemplo
data = {
    'Categoría': ['A', 'B', 'C', 'D'],
    'Valores': [23, 45, 56, 78]
}
df = pd.DataFrame(data)

# Gráfico de barras verticales
df.plot(kind='bar', x='Categoría', y='Valores', title='Gráfico de Barras')
plt.xlabel('Categoría')
plt.ylabel('Valores')
plt.show()

# Gráfico de barras horizontales
df.plot(kind='barh', x='Categoría', y='Valores', title='Gráfico de Barras Horizontales')
plt.xlabel('Valores')
plt.ylabel('Categoría')
plt.show()

Histograma

El histograma es útil para mostrar la distribución de un conjunto de datos. El método hist() de Pandas permite crear histogramas fácilmente.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con un seed para reproducibilidad
seed = 42
rng = np.random.default_rng(seed)

# Crear un DataFrame de ejemplo utilizando el nuevo generador
data = {
    'Valores': rng.standard_normal(1000)
}
df = pd.DataFrame(data)

# Histograma
df['Valores'].hist(bins=30)
plt.title('Histograma')
plt.xlabel('Valores')
plt.ylabel('Frecuencia')
plt.show()

Gráfico de dispersión

El gráfico de dispersión es útil para mostrar la relación entre dos variables. Pandas permite crear gráficos de dispersión utilizando el método plot() con el parámetro kind='scatter'.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con un seed para reproducibilidad
seed = 42
rng = np.random.default_rng(seed)

# Crear un DataFrame de ejemplo utilizando el nuevo generador
data = {
    'A': rng.standard_normal(100),
    'B': rng.standard_normal(100)
}
df = pd.DataFrame(data)

# Gráfico de dispersión
df.plot(kind='scatter', x='A', y='B')
plt.title('Gráfico de Dispersión')
plt.xlabel('A')
plt.ylabel('B')
plt.show()

Gráfico de caja

El gráfico de caja es útil para mostrar la distribución de un conjunto de datos y resaltar los valores atípicos. Pandas permite crear gráficos de caja utilizando el método boxplot().

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con un seed para reproducibilidad
seed = 42
rng = np.random.default_rng(seed)

# Crear un DataFrame de ejemplo utilizando el nuevo generador
data = {
    'Grupo': ['A']*50 + ['B']*50,
    'Valores': np.concatenate([rng.standard_normal(50), rng.standard_normal(50) + 2])
}
df = pd.DataFrame(data)

# Gráfico de caja
df.boxplot(column='Valores', by='Grupo', grid=False)
plt.title('Gráfico de Caja')
plt.suptitle('')
plt.xlabel('Grupo')
plt.ylabel('Valores')
plt.show()

Gráfico de área

El gráfico de área es útil para mostrar la evolución de diferentes variables a lo largo del tiempo. Pandas permite crear gráficos de área utilizando el método plot() con el parámetro kind='area'.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Crear un generador de números aleatorios con un seed para reproducibilidad
seed = 42
rng = np.random.default_rng(seed)

# Crear un DataFrame de ejemplo utilizando el nuevo generador
data = {
    'Fecha': pd.date_range(start='2023-01-01', periods=100, freq='D'),
    'A': rng.standard_normal(100).cumsum(),
    'B': rng.standard_normal(100).cumsum()
}
df = pd.DataFrame(data)

# Establecer la columna 'Fecha' como índice
df.set_index('Fecha', inplace=True)

# Gráfico de área sin apilamiento
df.plot(kind='area', stacked=False, title='Gráfico de Área')
plt.xlabel('Fecha')
plt.ylabel('Valor')
plt.show()

Estos ejemplos muestran cómo utilizar Pandas para generar diversos tipos de gráficos con Matplotlib. La integración entre Pandas y Matplotlib permite a los ingenieros de software crear visualizaciones de datos de manera eficiente y efectiva, aprovechando las capacidades de ambos frameworks.

Certifícate en Pandas con CertiDevs PLUS

Ejercicios de esta lección Integración de Pandas con Matplotlib

Evalúa tus conocimientos de esta lección Integración de Pandas con Matplotlib con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Pandas

Accede a todas las lecciones de Pandas y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Pandas

Supera todos los ejercicios de programación del curso de Pandas y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender la relación entre Pandas y Matplotlib.

  • Utilizar métodos de visualización de Pandas con Matplotlib como backend.

  • Crear gráficos de líneas, barras, histogramas, dispersión, caja y área.

  • Personalizar gráficos utilizando Matplotlib.

  • Aplicar la API orientada a objetos de Matplotlib para un mayor control.