¿Qué es un DataFrame en Pandas?
¿Qué es un DataFrame en Pandas?
Un DataFrame es la estructura de datos principal de Pandas. Es una tabla bidimensional (filas y columnas) similar a:
Una hoja de Excel
Una tabla de SQL
Una tabla de una base de datos
Características principales:
📊 Estructura Tabular
Nombre Edad Ciudad Profesión 0 Ana 25 Madrid Ingeniera 1 Juan 30 Barcelona Doctor 2 María 28 Sevilla Profesora 3 Carlos 35 Valencia Arquitecto
🏗️ Componentes de un DataFrame
import pandas as pd # Crear un DataFrame de ejemplo datos = { 'Nombre': ['Ana', 'Juan', 'María', 'Carlos'], 'Edad': [25, 30, 28, 35], 'Ciudad': ['Madrid', 'Barcelona', 'Sevilla', 'Valencia'], 'Salario': [3000, 3500, 3200, 4000] } df = pd.DataFrame(datos)
🔍 Partes importantes de un DataFrame
1. Columnas (Series)
Cada columna es una Series de Pandas
# Las columnas print("Columnas:", df.columns) # Resultado: Index(['Nombre', 'Edad', 'Ciudad', 'Salario'], dtype='object') # Una columna individual es una Series columna_edad = df['Edad'] print(type(columna_edad)) # <class 'pandas.core.series.Series'>
2. Índices (Index)
Etiquetas para las filas (por defecto son números)
print("Índices:", df.index) # Resultado: RangeIndex(start=0, stop=4, step=1)
3. Datos (Values)
Los valores reales en formato de array
print("Valores:") print(df.values) """ [['Ana' 25 'Madrid' 3000] ['Juan' 30 'Barcelona' 3500] ['María' 28 'Sevilla' 3200] ['Carlos' 35 'Valencia' 4000]] """
🎯 Propiedades clave de un DataFrame
# Información básica print("Forma (filas, columnas):", df.shape) # (4, 4) print("Número de dimensiones:", df.ndim) # 2 print("Tamaño total (elementos):", df.size) # 16 # Información detallada print("\nInformación del DataFrame:") df.info()
📝 Formas de crear un DataFrame
1. Desde un diccionario (más común)
# Diccionario donde cada clave es una columna datos_dict = { 'Producto': ['Laptop', 'Mouse', 'Teclado'], 'Precio': [1000, 25, 80], 'Stock': [10, 50, 30] } df = pd.DataFrame(datos_dict)
2. Desde una lista de listas
datos_lista = [ ['Ana', 25, 'Madrid'], ['Juan', 30, 'Barcelona'], ['María', 28, 'Sevilla'] ] df = pd.DataFrame(datos_lista, columns=['Nombre', 'Edad', 'Ciudad'])
3. Desde una lista de diccionarios
datos_diccionarios = [ {'Nombre': 'Ana', 'Edad': 25, 'Ciudad': 'Madrid'}, {'Nombre': 'Juan', 'Edad': 30, 'Ciudad': 'Barcelona'}, {'Nombre': 'María', 'Edad': 28, 'Ciudad': 'Sevilla'} ] df = pd.DataFrame(datos_diccionarios)
🔎 Operaciones básicas con DataFrames
Exploración de datos
# Primeras filas print(df.head(2)) # Últimas filas print(df.tail(2)) # Estadísticas descriptivas print(df.describe()) # Valores únicos en una columna print(df['Ciudad'].unique())
Selección de datos
# Seleccionar columnas nombres = df['Nombre'] varias_columnas = df[['Nombre', 'Edad']] # Seleccionar filas por índice fila_0 = df.iloc[0] # Primera fila filas_1_3 = df.iloc[1:3] # Filas 1 y 2 # Filtrar por condición mayores_28 = df[df['Edad'] > 28] madrid = df[df['Ciudad'] == 'Madrid']
Modificación de datos
# Agregar nueva columna df['Salario Anual'] = df['Salario'] * 12 # Modificar valores df.loc[df['Nombre'] == 'Ana', 'Salario'] = 3200 # Eliminar columnas df = df.drop('Salario Anual', axis=1)
💡 Analogías para entender DataFrames
Como un diccionario de Series
# Cada columna es una Series independiente print("Columna Nombre:", type(df['Nombre'])) # Series print("Columna Edad:", type(df['Edad'])) # Series
Como una hoja de Excel
Excel: | Pandas: - Columnas A,B,C → df.columns - Filas 1,2,3... → df.index - Celdas → df.values
Como una tabla SQL
# Similar a una consulta SQL # SELECT Nombre, Edad FROM tabla WHERE Edad > 28 resultado = df[df['Edad'] > 28][['Nombre', 'Edad']]
🚀 Ventajas de usar DataFrames
✅ Manejo eficiente de grandes volúmenes de datos
✅ Operaciones vectorizadas (rápidas)
✅ Integración con otras bibliotecas (NumPy, Matplotlib)
✅ Flexibilidad para manipular datos
✅ Herramientas poderosas para análisis
📊 Ejemplo práctico completo
import pandas as pd # Crear DataFrame de empleados empleados = { 'ID': [1, 2, 3, 4, 5], 'Nombre': ['Ana García', 'Juan López', 'María Ruiz', 'Carlos Méndez', 'Laura Díaz'], 'Departamento': ['Ventas', 'IT', 'Ventas', 'RH', 'IT'], 'Salario': [3000, 4000, 3200, 2800, 4500], 'Antigüedad': [2, 5, 1, 3, 4] } df_empleados = pd.DataFrame(empleados) # Análisis básico print("=== DATAFRAME ORIGINAL ===") print(df_empleados) print("\n=== INFORMACIÓN ===") print(f"Forma: {df_empleados.shape}") print(f"Columnas: {list(df_empleados.columns)}") print("\n=== ESTADÍSTICAS ===") print(df_empleados.describe()) print("\n=== EMPLEADOS DE VENTAS ===") ventas = df_empleados[df_empleados['Departamento'] == 'Ventas'] print(ventas) print("\n=== SALARIO PROMEDIO POR DEPARTAMENTO ===") salario_promedio = df_empleados.groupby('Departamento')['Salario'].mean() print(salario_promedio)
❓ Preguntas frecuentes
¿En qué se diferencia un DataFrame de una Series?
Series: Una sola columna (1D)
DataFrame: Múltiples columnas (2D)
¿Puedo tener diferentes tipos de datos en un DataFrame?
¡Sí! Cada columna puede tener un tipo de dato diferente:
# Ejemplo con múltiples tipos df_mixto = pd.DataFrame({ 'Texto': ['A', 'B', 'C'], # object (string) 'Enteros': [1, 2, 3], # int64 'Decimales': [1.1, 2.2, 3.3], # float64 'Booleanos': [True, False, True] # bool })
¿Qué tamaño máximo puede tener un DataFrame?
Depende de tu memoria RAM, pero Pandas puede manejar millones de filas eficientemente.
Comentarios
Publicar un comentario