Skip to content

Cómo crear un DataFrame vacío en Pandas

Updated on

Trabajar con conjuntos de datos es una parte central de cualquier flujo de trabajo de análisis de datos. Tanto si tus datos provienen de un archivo CSV, una base de datos SQL, una respuesta JSON o una API externa, Pandas ofrece una interfaz potente e intuitiva para limpiarlos, transformarlos y explorarlos.

En esta guía, veremos varias formas prácticas de crear un DataFrame vacío en Pandas, explicaremos cuándo usar cada enfoque e introduciremos buenas prácticas modernas (incluyendo cómo crear DataFrames vacíos con tipos de columna).


🚀 ¿Quieres convertir tu DataFrame en una herramienta de visualización interactiva al instante?

PyGWalker es una biblioteca de Python de código abierto que agrega una interfaz de arrastrar y soltar para la exploración de datos, directamente dentro de tu Jupyter Notebook.

Pruébalo con:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

Puedes probar PyGWalker al instante usando estos notebooks online:

Run PyGWalker in Kaggle Notebook (opens in a new tab)Run PyGWalker in Google Colab (opens in a new tab)Give PyGWalker a ⭐️ (opens in a new tab)
KaggleColabGitHub

¿Qué es un DataFrame?

Un DataFrame es una estructura de datos bidimensional y tabular en Pandas donde cada columna puede contener distintos tipos de datos. Puedes imaginarlo como una hoja de cálculo o una tabla SQL. Los DataFrames permiten operaciones potentes, entre ellas:

  • filtrado y segmentación (slicing)
  • combinación y unión (merge / join)
  • agregación
  • reestructuración (reshaping)
  • visualización

¿Por qué crear un DataFrame vacío?

Los DataFrames vacíos son útiles cuando necesitas:

  • definir un esquema antes de cargar datos
  • agregar filas de forma programática
  • inicializar una tabla de resultados para bucles o agregaciones
  • preparar una estructura para actualizaciones incrementales

Ejemplo: preparar una tabla con información de productos antes de ingerir datos.


⭐ Comparación rápida de métodos

MétodoMejor caso de uso
pd.DataFrame()Crear una “cáscara” completamente vacía
pd.DataFrame(columns=[...])Definir solo los nombres de las columnas
pd.DataFrame({col: []})Definir columnas usando listas vacías
pd.Series(dtype=...)Definir tanto nombres de columna como dtypes (recomendado para flujos profesionales)
pd.DataFrame.from_dict()Igual que el método con dict; principalmente cuestión de estilo

Cómo crear un DataFrame vacío (3 métodos clásicos + 1 buena práctica moderna)

Método 1: Usar el constructor DataFrame()

La forma más simple:

import pandas as pd
 
df = pd.DataFrame()
print(df)

Salida:

Empty DataFrame
Columns: []
Index: []

Para añadir columnas después:

df.columns = ['ProductID', 'ProductName', 'Description', 'Price']
df

Método 2: Usar un dict() de listas vacías

Este método define los nombres de las columnas mientras mantiene el DataFrame vacío:

import pandas as pd
 
data = dict(ProductID=[], ProductName=[], Description=[], Price=[])
df = pd.DataFrame(data)
df

Método 3: Usar from_dict()

Equivalente al método 2 — principalmente una cuestión de estilo:

import pandas as pd
 
data = {
    'ProductID': [],
    'ProductName': [],
    'Description': [],
    'Price': []
}
 
df = pd.DataFrame.from_dict(data)
df

⭐ Método moderno (recomendado)

Crear un DataFrame vacío con nombres de columna y tipos de datos

En Pandas 2.x, es buena práctica definir los tipos de columna desde el inicio:

import pandas as pd
 
df = pd.DataFrame({
    "ProductID": pd.Series(dtype="int"),
    "ProductName": pd.Series(dtype="string"),
    "Description": pd.Series(dtype="string"),
    "Price": pd.Series(dtype="float"),
})
 
df

Este enfoque es ideal cuando:

✔ Estás cargando datos desde APIs
✔ Quieres tipos predecibles
✔ Estás construyendo pipelines ETL
✔ Quieres evitar advertencias de dtype más adelante


Cómo comprobar si un DataFrame está vacío

Usa el atributo .empty:

df = pd.DataFrame()
print(df.empty)   # True
 
non_empty = pd.DataFrame({"A": [1]})
print(non_empty.empty)  # False

Conclusión

Crear un DataFrame vacío es una tarea fundamental en Pandas. Según tu flujo de trabajo, puedes:

  • crear una cáscara simple vacía
  • inicializar columnas con nombres
  • definir dtypes explícitos (recomendado para pipelines limpios)
  • usar esquemas basados en dict por legibilidad

Ahora puedes elegir con confianza el mejor método para tu proyecto y construir flujos de trabajo con Pandas más limpios y predecibles.