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
import pandas as pdda al paquete su alias convencionalpd.- 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
RangeIndexpredeterminado con0,1y2. sales["units"] >= 10produce una Series booleana alineada con ese índice. Pasar la máscara de vuelta asales[...]conserva solo las filas cuyo valor esTrue.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ón | Runtime en frío | Runtime cálido en la misma página |
|---|---|---|
| Requests | 0 | 0 |
| Paquetes recién disponibles | pandas 1.5.3, numpy 1.26.1, python-dateutil 2.8.2, six 1.16.0, pytz 2023.3 | 0 |
| Qué cambió | pandas y sus dependencias quedaron disponibles | el 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
| Elija | Cuándo encaja |
|---|---|
| DataFrame | Varias columnas etiquetadas necesitan indexación booleana, operaciones de columna o análisis tabular |
| Series | Una dimensión etiquetada es suficiente |
| Lista de diccionarios | Una pequeña colección de registros necesita iteración pero no operaciones de columna |
| Array de NumPy | Datos 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.