¿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?

Calculadora de edad

Funciones en Python: con y sin paréntesis