¿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

text
    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

python
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

python
# 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)

python
print("Índices:", df.index)
# Resultado: RangeIndex(start=0, stop=4, step=1)

3. Datos (Values)

Los valores reales en formato de array

python
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

python
# 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)

python
# 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

python
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

python
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

python
# 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

python
# 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

python
# 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

python
# 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

text
Excel:        | Pandas:
- Columnas A,B,C  →  df.columns
- Filas 1,2,3...  →  df.index  
- Celdas         →  df.values

Como una tabla SQL

python
# Similar a una consulta SQL
# SELECT Nombre, Edad FROM tabla WHERE Edad > 28
resultado = df[df['Edad'] > 28][['Nombre', 'Edad']]

🚀 Ventajas de usar DataFrames

  1. ✅ Manejo eficiente de grandes volúmenes de datos

  2. ✅ Operaciones vectorizadas (rápidas)

  3. ✅ Integración con otras bibliotecas (NumPy, Matplotlib)

  4. ✅ Flexibilidad para manipular datos

  5. ✅ Herramientas poderosas para análisis

📊 Ejemplo práctico completo

python
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:

python
# 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

Entradas populares de este blog

¿Qué es un Closure?

4 tipos de colecciones de datos más

Calculadora de edad