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
¿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:
pip install pandasImportar Pandas
Siempre comenzamos importando la biblioteca:
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.
# 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.
# 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
# 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
# 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
# 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
df = pd.read_excel('datos.xlsx', sheet_name='Hoja1')
Guardar datos
# 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:
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
Practica regularmente: La consistencia es clave
Experimenta con datos reales: Busca datasets en Kaggle
Usa la documentación oficial: Es excelente y tiene muchos ejemplos
No memorices todo: Familiarízate con las operaciones comunes
Aprende a buscar errores: Stack Overflow es tu amigo
Recursos Adicionales
Kaggle para datasets de práctica
¡Feliz aprendizaje! 🐼✨
Comentarios
Publicar un comentario