¡Hola! Entender la diferencia entre una Serie y un DataFrame es el paso más importante para dominar la librería Pandas en Python. Para que nunca lo olvides, usaremos una analogía muy sencilla de la vida real: imagina una hoja de cálculo de Excel.
El Concepto Fundamental: Serie vs. DataFrame
1. ¿Qué es una Serie (pd.Series)?
Una Serie es una estructura de datos de una sola dimensión. Piensa en ella como una única columna en tu hoja de Excel.
- Contiene una secuencia de valores (todos del mismo tipo de datos, por lo general).
- Tiene etiquetas asociadas a cada fila llamadas índice (
index).
2. ¿Qué es un DataFrame (pd.DataFrame)?
Un DataFrame es una estructura de datos de dos dimensiones (filas y columnas). Piensa en él como la tabla completa de Excel.
- Es esencialmente un contenedor de múltiples Series alineadas una al lado de la otra, donde cada Serie comparte el mismo índice y representa una columna diferente.
Tutorial Paso a Paso en Código
Primero, asegúrate de importar la librería en tu script:
import pandas as pd
Paso 1: Creando una Serie
Creemos una Serie que represente las edades de un grupo de personas:
edades = pd.Series([30, 25, 40], name="Edad") print(edades)
Salida en consola:
0 30 1 25 2 40 Name: Edad, dtype: int64
Nota que a la izquierda aparece automáticamente un índice numérico (0, 1, 2).
Paso 2: Creando un DataFrame
Ahora, unamos nombres y edades en una estructura tabular completa usando un diccionario:
datos = {
"Nombre": ["Ana", "Luis", "Carlos"],
"Edad": [30, 25, 40]
}
df = pd.DataFrame(datos)
print(df)
Salida en consola:
Nombre Edad 0 Ana 30 1 Luis 25 2 Carlos 40
La conexión oculta: Si extraes una sola columna de este DataFrame (por ejemplo, df["Edad"]), lo que Pandas te devolverá es exactamente una Serie.
Métodos y Atributos más Comunes
A continuación, veremos las herramientas esenciales divididas por su categoría de uso.
1. Exploración Inicial (Inspección del terreno)
.head(n)/.tail(n): Te muestran las primeras o últimas n filas de tus datos. Es lo primero que debes ejecutar para verificar qué pinta tiene tu estructura..shape: Un atributo que te devuelve una tupla con las dimensiones. Para un DataFrame te dirá(filas, columnas); para una Serie, solo(filas,)..columns: Atributo exclusivo del DataFrame que te lista los nombres de todas las cabeceras..info(): Muestra un resumen del DataFrame: tipos de datos, cantidad de valores no nulos y uso de memoria..describe(): Genera estadísticas descriptivas rápidas (promedio, desviación estándar, valores mínimos, máximos, etc.) tanto para Series numéricas como para el DataFrame entero.
2. Limpieza y Manejo de Nulos
.isnull()(o.isna()): Crea una máscara de tipo Verdadero/Falso (True/False) sobre tus celdas, colocando unTruedonde hay un dato faltante (NaNoNone)..isnull().sum()encadenado: Cuenta exactamente cuántas celdas vacías hay por cada columna..dropna(): Elimina automáticamente cualquier fila que contenga valores nulos..fillna(valor): Reemplaza las celdas vacías por el valor estático o calculado que tú decidas (como un 0 o el promedio de la columna).
3. Gestión de Duplicados
.drop_duplicates(): Sumamente potente para limpiar registros repetidos que surgen por errores de sistema. Puedes indicarle mediante parámetros si deseas evaluar todo el DataFrame o usar columnas específicas como referencia.
4. Selección y Filtrado Avanzado
.loce.iloc: Se utilizan para seleccionar filas y columnas específicas.loc: Busca por etiquetas (nombres de las filas o columnas).iloc: Busca por posiciones numéricas (índices enteros basados en cero).
Resumen para llevar a casa
| Característica / Método | Serie (pd.Series) | DataFrame (pd.DataFrame) |
| Dimensiones | 1D (Una sola columna) | 2D (Tabla completa con filas y columnas) |
Atributo .columns | ❌ No tiene (tiene .name) | Tiene la lista de nombres de columnas |
| Manejo de nulos / duplicados | Soporta .isnull(), .fillna(), etc. | Soporta los mismos métodos aplicados a toda la tabla de manera masiva. |
| Uso Principal | Representar variables aisladas o vectores. | Representar bases de datos y matrices relacionales estructuradas. |