Abrir en Colab

Graficar tus datos#

Este archivo de plantilla muestra cómo crear distintos tipos de gráficos: histogramas, gráficos de dispersión, gráficos de líneas, gráficos circulares, gráficos de barras y diagramas de caja.

Para ejecutar el código:

Asegúrate de tener este cuaderno abierto en Google Colab. Si comenzaste desde el libro de texto digital, haz clic en Abrir en Colab.

Cada bloque de código se llama celda. Para ejecutar una celda, coloca el cursor sobre ella y haz clic en la flecha de la esquina superior izquierda. También puedes hacer clic dentro de la celda y presionar Shift + Enter.

Nota: La primera vez que ejecutes un bloque de código, Google Colab mostrará el mensaje Warning: This notebook was not authored by Google. Haz clic en Run Anyway.

Una de las ventajas de Google Colab es que permite escribir código en Python y ver los resultados directamente en el navegador. A continuación, repasaremos los conceptos básicos.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import geopandas as gpd
import seaborn as sns

Cargar tus datos#

En Google Colab, haz clic en el ícono de carpeta ubicado a la izquierda de la pantalla. Si aparece el mensaje Connecting to a runtime to enable file browsing, espera algunos segundos mientras Google Colab se conecta y carga.

Haz clic en el ícono Upload, que es el primero de izquierda a derecha, y selecciona el archivo en tu computadora.

Aparecerá el mensaje Warning: Ensure that your files are saved elsewhere. This runtime's files will be deleted when this runtime is terminated. Esto ocurre porque Google Colab crea una copia temporal de los datos en tu navegador. Esa copia se eliminará cuando cierres el navegador o finalice la sesión. El archivo original de tu computadora no cambiará, aunque modifiques los datos dentro de Google Colab.

A continuación se muestran ejemplos para cargar distintos tipos de archivos.

  1. Archivo CSV (.csv):

data = pd.read_csv("nombre_de_tu_archivo.csv")
  1. Archivo de Excel (.xlsx o .xls). Consulta más información aquí:

data = pd.read_excel(
    "nombre_de_tu_archivo.xlsx",
    index_col=0,
    sheet_name="nombre de la hoja"
)
  1. Shapefile (.shp):

Si subiste un shapefile comprimido:

data = gpd.read_file("nombre_de_tu_archivo.zip")

Si subiste por separado los archivos del shapefile (.SHP, .DBF, .SHX, entre otros):

data = gpd.read_file("nombre_de_tu_archivo.shp")
  1. GeoJSON (.geojson):

data = gpd.read_file("nombre_de_tu_archivo.geojson")
# Escribe aquí el código para cargar tus datos
data = None

# Por ejemplo:
# data = pd.read_csv("nombre_de_tu_archivo.csv")
# Mostrar las primeras cinco filas de la tabla
if data is None:
    raise ValueError(
        "Primero carga tus datos en la celda anterior."
    )

data.head()
# Mostrar estadísticas como el promedio, mínimo y máximo
# de cada columna numérica
if data is None:
    raise ValueError(
        "Primero carga tus datos en la celda anterior."
    )

data.describe()

Histograma#

Un histograma muestra la distribución de los datos. Puedes crear uno mediante el siguiente código.

# Histograma con datos de ejemplo
ex_data = [
    1, 3, 4, 4, 5, 5, 5, 5, 6, 6,
    6, 7, 7, 8, 8, 9, 9, 9, 10
]

plt.hist(
    ex_data,
    bins=10
)
plt.show()
number_of_bins = 20  # Cantidad de intervalos o barras
column_name = ""      # Nombre de la columna que deseas graficar

if data is None:
    raise ValueError(
        "Primero carga tus datos."
    )
if not column_name:
    raise ValueError(
        "Escribe el nombre de una columna en column_name."
    )

plt.hist(
    data[column_name],
    bins=number_of_bins
)
plt.show()

Gráfico de dispersión#

Un gráfico de dispersión muestra puntos a partir de dos variables: una para el eje x y otra para el eje y.

# Gráfico de dispersión con datos de ejemplo
x = [1, 2, 3, 4, 5]
y = [1, 4, 8, 16, 32]

plt.scatter(
    x,
    y
)
plt.show()
xaxis_column = ""  # Columna que deseas utilizar en el eje x
yaxis_column = ""  # Columna que deseas utilizar en el eje y

if data is None:
    raise ValueError(
        "Primero carga tus datos."
    )
if not xaxis_column or not yaxis_column:
    raise ValueError(
        "Escribe los nombres de las columnas para ambos ejes."
    )

plt.scatter(
    x=data[xaxis_column],
    y=data[yaxis_column]
)
plt.show()

Gráfico de líneas#

Un gráfico de líneas muestra una línea que conecta valores definidos por dos variables: una para el eje x y otra para el eje y.

# Gráfico de líneas con datos de ejemplo
years = [
    2018, 2019, 2020, 2021, 2022, 2023
]  # Eje x

value = [
    1, 2, 4, 8, 16, 32
]  # Eje y. Debe contener la misma cantidad de valores que el eje x

plt.plot(
    years,
    value
)
plt.show()
xaxis_column = ""  # Columna que deseas utilizar en el eje x
yaxis_column = ""  # Columna que deseas utilizar en el eje y

if data is None:
    raise ValueError(
        "Primero carga tus datos."
    )
if not xaxis_column or not yaxis_column:
    raise ValueError(
        "Escribe los nombres de las columnas para ambos ejes."
    )

plt.plot(
    data[xaxis_column],
    data[yaxis_column]
)
plt.show()

Gráfico circular#

Un gráfico circular muestra valores correspondientes a distintas categorías.

Si tus datos ya están agrupados y contienen una columna con las categorías, que se utilizará como las etiquetas del gráfico, y otra columna con el valor de cada categoría, que determinará el tamaño de cada sección, puedes visualizar los datos directamente con el siguiente código.

# Estas son algunas opciones de paletas de colores
display(
    sns.color_palette(
        palette="Set2"
    )
)

display(
    sns.color_palette(
        palette="twilight_shifted"
    )
)

display(
    sns.color_palette(
        palette="tab20"
    )
)
# Gráfico circular con datos de ejemplo

wedge_sizes = [
    10, 50, 20, 30, 60
]  # Tamaño o porcentaje de cada categoría

labels = [
    "A", "B", "C", "D", "E"
]  # Nombres de las categorías. Debe haber una etiqueta por cada valor

plt.pie(
    wedge_sizes,
    labels=labels,
    colors=sns.color_palette("Set2")
)  # Puedes personalizar la paleta de colores

plt.show()
wedge_sizes_column = ""  # Columna numérica que define cada sección
labels_column = ""  # Columna categórica con las etiquetas

if data is None:
    raise ValueError(
        "Primero carga tus datos."
    )
if not wedge_sizes_column or not labels_column:
    raise ValueError(
        "Escribe los nombres de las columnas requeridas."
    )

plt.pie(
    data[wedge_sizes_column],
    labels=data[labels_column]
)
plt.show()

Si tus datos no están agrupados de esta manera, primero debes agruparlos antes de crear el gráfico circular. Puedes utilizar el siguiente código.

wedge_sizes_column = ""
labels_column = ""

if data is None:
    raise ValueError(
        "Primero carga tus datos."
    )
if not wedge_sizes_column or not labels_column:
    raise ValueError(
        "Escribe los nombres de las columnas requeridas."
    )

data_grouped = (
    data.groupby(
        by=[labels_column],
        as_index=False
    )
    .sum(numeric_only=True)
)

plt.pie(
    data_grouped[wedge_sizes_column],
    labels=data_grouped[labels_column]
)
plt.show()

Puedes utilizar .sum(), .count(), .mean(), .median() y otras funciones para resumir los valores agrupados.

El argumento as_index=False hace que los valores agrupados y las etiquetas permanezcan como columnas separadas. Esto facilita su uso en el gráfico circular.

Gráfico de barras#

Un gráfico de barras muestra valores basados en conteos u otras estadísticas de distintas categorías.

Utiliza .bar para crear barras verticales y .barh para crear barras horizontales.

# Gráfico de barras con datos de ejemplo
# Se utilizan los mismos datos del gráfico circular
bar_heights = [
    10, 50, 20, 30, 60
]  # Altura correspondiente a cada categoría

labels = [
    "A", "B", "C", "D", "E"
]  # Nombres de las categorías. Debe haber una etiqueta por cada valor

plt.bar(
    labels,
    bar_heights
)
plt.show()
category_column = ""
height_column = ""

if data is None:
    raise ValueError(
        "Primero carga tus datos."
    )
if not category_column or not height_column:
    raise ValueError(
        "Escribe los nombres de las columnas requeridas."
    )

plt.bar(
    data[category_column],
    data[height_column]
)
plt.show()

Diagrama de caja#

Un diagrama de caja y bigotes ayuda a observar la distribución general de los datos.

La caja se extiende desde el primer cuartil hasta el tercer cuartil e incluye una línea en la mediana. Los bigotes se extienden hasta 1.5 veces el rango intercuartílico por debajo y por encima de la caja. Los puntos ubicados fuera de los bigotes se consideran valores atípicos, porque son mucho menores o mayores que el resto de los datos.

     Q1-1.5IQR   Q1   mediana  Q3   Q3+1.5IQR
                  |-----:-----|
  o      |--------|     :     |--------|    o  o
                  |-----:-----|
valor atípico     <----------->       valores atípicos
                       IQR

Diagrama adaptado de Matplotlib.

# Diagrama de caja con datos de ejemplo
ex_data = [
    1, 2, 6, 8, 12, 15, 16,
    19, 20, 21, 26, 30, 45, 70
]

plt.boxplot(
    ex_data
)
plt.show()
name_of_column = ""  # Columna numérica de tu conjunto de datos

if data is None:
    raise ValueError(
        "Primero carga tus datos."
    )
if not name_of_column:
    raise ValueError(
        "Escribe el nombre de una columna en name_of_column."
    )

plt.boxplot(
    data[name_of_column]
)
plt.show()

Estos recursos ofrecen más información sobre cómo crear gráficos con Python: