Cuando importamos un dataset en un Pandas DataFrame, lo primero es explorarlo. Así obtenemos una idea general de la estructura, los tipos de datos, los valores faltantes y las estadísticas descriptivas antes de avanzar hacia la limpieza o el modelado en Python.
.head()
, .tail()
, .info()
, .describe()
Pandas ofrece funciones muy útiles para observar rápidamente nuestros datos:
head()
: muestra las primeras filas.tail()
: muestra las últimas filas.info()
: informa tipos de datos y valores no nulos.describe()
: genera estadísticas descriptivas.Ejemplo práctico
import pandas as pd
# Ejemplo de DataFrame
datos = {
"Nombre": ["Ana", "Luis", "Carla", "Pedro", "María"],
"Edad": [23, 35, 29, 42, 31],
"Ciudad": ["Córdoba", "Buenos Aires", "Rosario", "Mendoza", "Salta"],
"Salario": [55000, 72000, 61000, 83000, 59000]
}
df = pd.DataFrame(datos)
print(df.head(3)) # primeras 3 filas
print(df.tail(2)) # últimas 2 filas
print(df.info())
print(df.describe())
Salida resumida:
Nombre Edad Ciudad Salario
0 Ana 23 Córdoba 55000
1 Luis 35 Buenos Aires 72000
2 Carla 29 Rosario 61000
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Nombre 5 non-null object
1 Edad 5 non-null int64
2 Ciudad 5 non-null object
3 Salario 5 non-null int64
dtypes: int64(2), object(2)
memory usage: 288.0 bytes
Edad Salario
count 5.000000 5.000000
mean 32.000000 66000.000000
std 7.141428 11180.339887
min 23.000000 55000.000000
25% 29.000000 59000.000000
50% 31.000000 61000.000000
75% 35.000000 72000.000000
max 42.000000 83000.000000
👉 Con estas salidas sabemos cuántas filas y columnas existen, los tipos de datos, los valores no nulos y un resumen estadístico. También podés incluir columnas de texto en describe()
con df.describe(include="object")
.
astype()
Cada columna de un DataFrame tiene un tipo de dato:
int64
: enteros.float64
: números decimales.object
: texto.datetime64
: fechas.Ver tipos de datos
print(df.dtypes)
Salida:
Nombre object
Edad int64
Ciudad object
Salario int64
dtype: object
Convertir tipos con astype
# Convertir Edad a float
df["Edad"] = df["Edad"].astype(float)
# Convertir Salario a string
df["Salario"] = df["Salario"].astype(str)
print(df.dtypes)
👉 Resulta muy útil para preparar datos antes de un modelo de Machine Learning o cuando una columna se cargó con el tipo incorrecto.
Conversión a fechas
# Ejemplo de columna con fechas en texto
df_fechas = pd.DataFrame({"Fecha": ["2025-01-01", "2025-02-15", "2025-03-20"]})
# Convertir a tipo datetime
df_fechas["Fecha"] = pd.to_datetime(df_fechas["Fecha"])
print(df_fechas.dtypes)
Salida:
Fecha datetime64[ns]
dtype: object
El índice identifica cada fila. Por defecto es un entero secuencial, pero se puede personalizar para mejorar la lectura.
Ver índices actuales
print(df.index)
Salida:
RangeIndex(start=0, stop=5, step=1)
Asignar un índice personalizado
df_personalizado = df.set_index("Nombre")
print(df_personalizado)
Salida:
Edad Ciudad Salario
Nombre
Ana 23 Córdoba 55000
Luis 35 Buenos Aires 72000
Carla 29 Rosario 61000
Pedro 42 Mendoza 83000
María 31 Salta 59000
👉 Ahora la columna Nombre
actúa como identificador de cada fila.
Resetear índices y renombrar columnas
df_reset = df_personalizado.reset_index()
print(df_reset.head())
df.rename(columns={"Nombre": "Empleado", "Ciudad": "Localidad"}, inplace=True)
print(df.head())
👉 Manejar bien los índices y etiquetas facilita un análisis claro y reproducible.
head()
, tail()
, info()
, describe()
: inspección rápida.dtypes
y astype()
: conocer y cambiar tipos de datos.set_index()
, reset_index()
, rename()
: control de índices y etiquetas.Con estas herramientas obtenés una primera radiografía de cualquier dataset antes de profundizar en limpieza y análisis.