Tutorial de Pandas para Principiantes

 

Tutorial de Pandas para Principiantes

¡Hola! Bienvenido/a a este tutorial de Pandas, la biblioteca más popular de Python para el análisis y manipulación de datos.

📋 Tabla de Contenidos

  1. ¿Qué es Pandas?

  2. Instalación

  3. Estructuras de Datos Básicas

  4. Crear DataFrames

  5. Leer y Guardar Datos

  6. Explorar Datos

  7. Selección de Datos

  8. Manipulación de Datos

  9. Ejercicios Prácticos

¿Qué es Pandas?

Pandas es una biblioteca de Python especializada en el manejo y análisis de datos. Su nombre viene de "Panel Data" y es especialmente útil para trabajar con:

  • Datos en formato de tablas (como Excel)

  • Series temporales

  • Datos estructurados

Instalación

Si no tienes Pandas instalado, puedes instalarlo con:

bash
pip install pandas

Importar Pandas

Siempre comenzamos importando la biblioteca:

python
import pandas as pd

La convención es usar pd como alias para pandas.

Estructuras de Datos Básicas

Pandas tiene dos estructuras principales:

1. Series

Es como una columna de una tabla, un array unidimensional.

python
# Crear una Serie
frutas = pd.Series(['manzana', 'banana', 'naranja', 'uva'])
print(frutas)

2. DataFrame

Es una tabla bidimensional (filas y columnas), similar a una hoja de Excel.

python
# Crear un DataFrame
datos = {
    'Nombre': ['Ana', 'Juan', 'María', 'Carlos'],
    'Edad': [25, 30, 35, 28],
    'Ciudad': ['Madrid', 'Barcelona', 'Sevilla', 'Valencia']
}

df = pd.DataFrame(datos)
print(df)

Crear DataFrames

Desde un diccionario

python
# Ejemplo más completo
estudiantes = {
    'Nombre': ['Ana', 'Luis', 'Marta', 'Pedro', 'Sofia'],
    'Matemáticas': [85, 78, 92, 64, 90],
    'Historia': [88, 76, 95, 70, 85],
    'Ciencia': [90, 82, 88, 75, 92]
}

df_estudiantes = pd.DataFrame(estudiantes)
print(df_estudiantes)

Desde una lista de listas

python
# Con columnas personalizadas
datos = [
    ['Ana', 25, 'Ingeniera'],
    ['Juan', 30, 'Doctor'],
    ['María', 28, 'Profesora']
]

df_profesiones = pd.DataFrame(datos, columns=['Nombre', 'Edad', 'Profesión'])
print(df_profesiones)

Leer y Guardar Datos

Leer desde CSV

python
# Leer un archivo CSV
df = pd.read_csv('datos.csv')

# Si el archivo tiene separador diferente
df = pd.read_csv('datos.csv', sep=';')

# Leer solo algunas columnas
df = pd.read_csv('datos.csv', usecols=['Nombre', 'Edad'])

Leer desde Excel

python
df = pd.read_excel('datos.xlsx', sheet_name='Hoja1')

Guardar datos

python
# Guardar como CSV
df.to_csv('nuevos_datos.csv', index=False)

# Guardar como Excel
df.to_excel('nuevos_datos.xlsx', index=False)

Explorar Datos

Una vez que tenemos nuestros datos, es importante explorarlos:

python
# Ver las primeras filas
print(df.head())  # Primeras 5 filas
print(df.head(3)) # Primeras 3 filas

# Ver las últimas filas
print(df.tail())  # Últimas 5 filas

# Información del DataFrame
print(df.info())  # Tipos de datos y valores no nulos

# Estadísticas descriptivas
print(df.describe())  # Solo para columnas numéricas

# Forma del DataFrame (filas, columnas)
print(df.shape)

# Nombres de las columnas
print(df.columns)

# Ver valores únicos en una columna
print(df['Ciudad'].unique())

Selección de Datos

Seleccionar columnas

python
# Seleccionar una columna (devuelve Series)
nombres = df['Nombre']

# Seleccionar múltiples columnas
subset = df[['Nombre', 'Edad']]

# Usar punto (solo si el nombre no tiene espacios)
edades = df.Edad

Seleccionar filas

python
# Por índice
fila_0 = df.iloc[0]        # Primera fila
primeras_3 = df.iloc[0:3]  # Primeras 3 filas

# Por etiqueta (si tenemos índices personalizados)
fila_ana = df.loc[0]       # Si el índice es numérico

# Filtrar por condición
mayores_30 = df[df['Edad'] > 30]
madrid = df[df['Ciudad'] == 'Madrid']

Combinar condiciones

python
# Y lógico (and)
condicion = (df['Edad'] > 25) & (df['Ciudad'] == 'Madrid')
resultado = df[condicion]

# O lógico (or)
condicion = (df['Edad'] > 30) | (df['Ciudad'] == 'Barcelona')
resultado = df[condicion]

Manipulación de Datos

Agregar nuevas columnas

python
# Crear columna basada en otras
df['Promedio'] = (df['Matemáticas'] + df['Historia'] + df['Ciencia']) / 3

# Columna con valor constante
df['Activo'] = True

# Columna condicional
df['Aprobado'] = df['Promedio'] >= 80

Modificar datos existentes

python
# Cambiar valores específicos
df.loc[df['Nombre'] == 'Ana', 'Edad'] = 26

# Aplicar función a columna
df['Nombre_Mayus'] = df['Nombre'].str.upper()

Ordenar datos

python
# Ordenar por una columna
df_ordenado = df.sort_values('Edad')

# Orden descendente
df_ordenado = df.sort_values('Edad', ascending=False)

# Ordenar por múltiples columnas
df_ordenado = df.sort_values(['Ciudad', 'Edad'])

Manejar valores faltantes

python
# Verificar valores nulos
print(df.isnull().sum())

# Eliminar filas con valores nulos
df_limpio = df.dropna()

# Llenar valores nulos
df_lleno = df.fillna(0)  # Con cero
df_lleno = df.fillna(df.mean())  # Con la media

Agrupar datos

python
# Agrupar por ciudad y calcular promedios
grupo_ciudad = df.groupby('Ciudad')['Edad'].mean()

# Múltiples agregaciones
resumen = df.groupby('Ciudad').agg({
    'Edad': ['mean', 'min', 'max', 'count'],
    'Matemáticas': 'mean'
})

Ejercicios Prácticos

Ejercicio 1: Crear y explorar datos

python
# Crea un DataFrame de productos
productos = {
    'Producto': ['Laptop', 'Mouse', 'Teclado', 'Monitor', 'Tablet'],
    'Precio': [1200, 25, 80, 300, 450],
    'Stock': [15, 50, 30, 20, 25],
    'Categoría': ['Electrónica', 'Accesorio', 'Accesorio', 'Electrónica', 'Electrónica']
}

df_productos = pd.DataFrame(productos)

# Explora los datos
print("Primeras filas:")
print(df_productos.head())

print("\nEstadísticas:")
print(df_productos.describe())

print("\nValores únicos en categoría:")
print(df_productos['Categoría'].unique())

Ejercicio 2: Análisis básico

python
# 1. Productos con precio mayor a 100
caros = df_productos[df_productos['Precio'] > 100]
print("Productos caros:")
print(caros)

# 2. Agregar columna de valor total en stock
df_productos['Valor_Stock'] = df_productos['Precio'] * df_productos['Stock']

# 3. Valor total por categoría
valor_categoria = df_productos.groupby('Categoría')['Valor_Stock'].sum()
print("\nValor total por categoría:")
print(valor_categoria)

Ejercicio 3: Datos más complejos

python
# Crear datos de ventas
ventas = {
    'Fecha': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02', '2024-01-03'],
    'Producto': ['Laptop', 'Mouse', 'Teclado', 'Monitor', 'Tablet'],
    'Cantidad': [2, 5, 3, 1, 4],
    'Vendedor': ['Ana', 'Juan', 'Ana', 'María', 'Juan']
}

df_ventas = pd.DataFrame(ventas)

# Convertir fecha a datetime
df_ventas['Fecha'] = pd.to_datetime(df_ventas['Fecha'])

# Ventas por vendedor
ventas_vendedor = df_ventas.groupby('Vendedor')['Cantidad'].sum()
print("Ventas por vendedor:")
print(ventas_vendedor)

Consejos para Principiantes

  1. Practica regularmente: La consistencia es clave

  2. Experimenta con datos reales: Busca datasets en Kaggle

  3. Usa la documentación oficial: Es excelente y tiene muchos ejemplos

  4. No memorices todo: Familiarízate con las operaciones comunes

  5. Aprende a buscar errores: Stack Overflow es tu amigo

Recursos Adicionales

¡Feliz aprendizaje! 🐼✨

Comentarios

Entradas populares de este blog

¿Qué es un Closure?

4 tipos de colecciones de datos más

Calculadora de edad