Pandas DataFrame en Python: Crear y Filtrar Filas

Cree un pandas DataFrame en Python con pd.DataFrame(data), usando un diccionario de listas de igual longitud para las columnas y valores. Use un DataFrame cuando los registros necesiten filas y columnas etiquetadas, selección de columnas o filtrado vectorizado. Una máscara booleana filtra datos tabulares sin escribir un bucle Python. El resultado mantiene las etiquetas de índice originales a menos que las restablezca explícitamente.

Ejemplo Python Pandas DataFrame Para Filtrar Filas

Salida:

La salida aparecerá aquí...

Salida:

product  units
Keyboard     12
 Monitor     15

Cómo Funciona Este Ejemplo

  1. import pandas as pd da al paquete su alias convencional pd.
  2. El constructor de pandas DataFrame convierte cada clave de diccionario en una etiqueta de columna. Como ambas listas contienen tres valores, pandas crea tres filas y asigna un RangeIndex predeterminado con 0, 1 y 2.
  3. sales["units"] >= 10 produce una Series booleana alineada con ese índice. Pasar la máscara de vuelta a sales[...] conserva solo las filas cuyo valor es True.
  4. to_string(index=False) oculta el índice en la tabla impresa; no elimina ni renumera las etiquetas almacenadas.

Demostrar Lo que la Ejecución del DataFrame Realmente Hizo

Ejecute el programa dos veces en la misma página, abriendo Run Details después de cada finalización. Esto convierte el panel en un experimento de dependencias en lugar de tomar la duración de la ejecución en frío como un benchmark de DataFrame.

ObservaciónRuntime en fríoRuntime cálido en la misma página
Requests00
Paquetes recién disponiblespandas 1.5.3, numpy 1.26.1, python-dateutil 2.8.2, six 1.16.0, pytz 2023.30
Qué cambiópandas y sus dependencias quedaron disponiblesel runtime ya los tenía

web.run detecta import pandas y carga los paquetes compatibles antes de que empiece el Python del usuario. Run Details reporta la diferencia entre los paquetes disponibles antes y después de esa ejecución, por lo que una lista de Packages vacía en la ejecución cálida significa “nada cargado de nuevo”, no “pandas no se usó.”

La duración total de la primera ejecución incluye el arranque de paquetes y la ejecución de Python. Compárela con la ejecución cálida antes de culpar a pd.DataFrame(...); los tiempos varían según la máquina y el estado de caché, así que use la lista de Packages para identificar el trabajo de arranque.

Ambas ejecuciones reportan cero solicitudes de usuario porque el diccionario y el filtrado son locales. La ejecución en frío igualmente descarga archivos de paquetes como actividad de runtime. Por eso “sin solicitudes de usuario” prueba que el fragmento no hizo solicitudes externas, no que el navegador transfirió cero bytes.

La Trampa del Índice Filtrado: loc No Es iloc

Filtrar preserva las etiquetas. Aquí ready.index.tolist() es [0, 2], aunque index=False hace que la salida parezca una tabla fresca de dos filas. El código que trata la segunda fila mostrada como la etiqueta 1 falla:

Incorrecto:

second_product = ready.loc[1, "product"]  # KeyError: 1

Correcto para la segunda fila por posición:

second_product = ready.iloc[1]["product"]

Correcto cuando el código posterior necesita etiquetas secuenciales:

ready = ready.reset_index(drop=True)
second_product = ready.loc[1, "product"]

Use .loc para etiquetas de índice y .iloc para posiciones con base cero. Restablezca el índice solo cuando las nuevas etiquetas sean parte del resultado deseado; de lo contrario, conservar las etiquetas fuente ayuda a rastrear las filas filtradas de vuelta a los datos originales.

Errores de Longitud en el Constructor DataFrame

Un diccionario de listas debe describir una tabla rectangular. pandas lanza ValueError: All arrays must be of the same length en lugar de adivinar cómo rellenar una columna corta.

Incorrecto:

pd.DataFrame({"product": ["Keyboard", "Mouse"], "units": [12]})

Correcto:

pd.DataFrame({"product": ["Keyboard", "Mouse"], "units": [12, None]})

Añada un valor faltante explícito solo cuando represente los datos honestamente; de lo contrario, corrija los registros fuente antes de construir la tabla.

Cuándo un DataFrame Es el Contenedor Correcto

ElijaCuándo encaja
DataFrameVarias columnas etiquetadas necesitan indexación booleana, operaciones de columna o análisis tabular
SeriesUna dimensión etiquetada es suficiente
Lista de diccionariosUna pequeña colección de registros necesita iteración pero no operaciones de columna
Array de NumPyDatos numéricos homogéneos necesitan operaciones matriciales sin etiquetas de fila o columna

Un DataFrame justifica su coste en paquete y memoria cuando las etiquetas y las operaciones vectorizadas simplifican transformaciones reales. Use una lista de diccionarios cuando los registros son pequeños y solo necesitan iteración ordinaria de Python.