¿Cómo veo las filas, columnas y tipos de una tabla en pandas?
Mide la tabla en tres líneas: cuántas filas y columnas tiene, de qué tipo es cada columna y qué fechas cubre.
Curso gratis. Tu Maestro, una IA, .
Ya sabes qué es una fila. La segunda pregunta mide la tabla: cuántas filas y columnas tiene, de qué tipo es cada columna y qué periodo cubren sus fechas. Son tres líneas de código y te ahorran sorpresas después, cuando ya calculaste algo con la columna equivocada.
Corre el ejercicio. data.shape responde con dos números: primero filas, luego columnas. data.dtypes dice qué tipo de dato cree pandas que tiene cada columna.
Tu turno
Corre la celda y lee los tipos de cada columna. Después reemplaza data.dtypes por data.info(), que además cuenta cuántos valores no vacíos tiene cada columna. Ya terminaste cuando puedas decir qué columnas tienen menos de 311 valores.
Datos: viajes-rueda, 311 filas
| Fila | Quitar | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 4 | ||||||||||
| 5 | ||||||||||
| 6 | ||||||||||
| 7 | ||||||||||
| 8 | ||||||||||
| 9 | ||||||||||
| 10 | ||||||||||
| 11 | ||||||||||
| 12 | ||||||||||
| 13 | ||||||||||
| 14 | ||||||||||
| 15 | ||||||||||
| 16 | ||||||||||
| 17 | ||||||||||
| 18 | ||||||||||
| 19 | ||||||||||
| 20 |
Enter guarda; Esc deshace; vacía es un valor faltante
Tab agrega sangría; Esc y Tab para salir
La tabla tiene 311 filas y 9 columnas. Los tipos que reporta pandas se leen así:
| Tipo | Qué guarda | Columnas de Rueda |
|---|---|---|
int64 | números enteros | viaje_id |
float64 | números con decimales | duracion_min, distancia_km |
str | texto | estaciones, tipo_usuario, bici_id |
datetime64[us] | fecha y hora | inicio |
Int64 | enteros que admiten vacíos | anio_nacimiento |
Esa última, con I mayúscula, es el tipo de pandas para enteros que pueden tener huecos. Ese tipo permite valores ausentes; su presencia no prueba que los haya. data.info() lo confirma con su columna Non-Null Count: tres columnas tienen 303 valores y anio_nacimiento solo 238. El siguiente módulo se dedica a eso.
Números que miden y números que etiquetan
Que una columna sea numérica no quiere decir que sea una cantidad. Antes de seguir, decide.
Comprueba lo que sabes: Las tres columnas son numéricas. ¿Cuál no tiene sentido promediar?
Pandas te calcula el promedio de viaje_id sin quejarse: 40,365. No significa nada. Es como promediar números de teléfono. La computadora no sabe qué representa cada columna; tú sí, o se lo tienes que preguntar a alguien.
Al revisar los tipos, separa las columnas en dos grupos:
- Miden algo:
duracion_min(minutos) ydistancia_km(kilómetros). Tiene sentido ver su mínimo, su máximo, su mediana y cómo se reparten. - Etiquetan algo:
viaje_idybici_id. Lo útil es contar: cuántos distintos hay, cuáles se repiten.
anio_nacimiento está en medio. Es un número que mide algo, pero lo que te interesa casi siempre es la edad, y un año promedio de 1983 dice menos que "la mitad tiene entre 30 y 54 años". Lo vas a revisar en el módulo 3.
A veces el problema va al revés: una etiqueta se lee como número y se daña. Un código postal como 03100 leído como número se vuelve 3100. Ese tipo de problema al leer un archivo es el tema del curso gratuito Tu CSV se ve raro; aquí basta con notarlo y anotarlo.
Si tu tabla tiene una columna que no sabes si mide o etiqueta, pregúntale a tu Maestro.
Qué periodo cubre
Si la tabla tiene fechas, lo siguiente es saber de cuándo a cuándo va. Un reporte "del mes" hecho con una tabla de dos semanas no compara con nada.
Tu turno
Corre la celda para ver la primera y la última fecha. Después agrega al final data["inicio"].dt.date.value_counts().sort_index() para contar los viajes de cada día. Ya terminaste cuando sepas si hay algún día sin viajes.
Datos: viajes-rueda, 311 filas
| Fila | Quitar | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 4 | ||||||||||
| 5 | ||||||||||
| 6 | ||||||||||
| 7 | ||||||||||
| 8 | ||||||||||
| 9 | ||||||||||
| 10 | ||||||||||
| 11 | ||||||||||
| 12 | ||||||||||
| 13 | ||||||||||
| 14 | ||||||||||
| 15 | ||||||||||
| 16 | ||||||||||
| 17 | ||||||||||
| 18 | ||||||||||
| 19 | ||||||||||
| 20 |
Enter guarda; Esc deshace; vacía es un valor faltante
Tab agrega sangría; Esc y Tab para salir
La tabla va del lunes 2 de marzo de 2026 a las 8:11 al domingo 15 de marzo a las 23:51: hay registros en cada fecha del 2 al 15 (entre 14 y 32 por día). Eso no prueba que estén todos los viajes ni que el extracto cubra días completos. Un día sin filas podría ser ausencia de actividad, un recorte o un problema de registro: pediríamos la cobertura esperada.
Hay un detalle más. El último viaje empieza a las 23:51 del último día, casi a medianoche. Si la tabla se exportó justo a esa hora, los viajes de esa noche quizá no habían terminado. Es una sospecha, no un hecho, y para eso es la bitácora:
Observación: hay registros del 2 al 15 de marzo; el último viaje empieza a las 23:51 del 15. Evidencia:
min()ymax()deinicio. Pregunta: ¿a qué hora se exportó? ¿Los viajes de esa noche ya habían terminado?
En el siguiente módulo vas a ver que la sospecha tenía fundamento.
Si no estás seguro de qué anotar en tu bitácora, pídele a tu Maestro que revise tu entrada.
Consejo: Todo en una línea
data.info() te da de una vez el número de filas, el tipo de cada columna y cuántos valores no vacíos tiene. Es buena primera línea para cualquier tabla nueva.
Inténtalo
Una pregunta de otra tabla, para ver si el criterio se te queda.
Comprueba lo que sabes: En la tabla de clientes de una farmacia, la columna codigo_postal aparece como int64 y el código 03100 se ve como 3100. ¿Qué anotas en tu bitácora?