¿Cuál es la diferencia entre loc e iloc en Pandas?
Anote esto como una de las preguntas más comunes que escuchará de los recién llegados a Python y los aspirantes a la ciencia de datos. Existe una alta probabilidad de que encuentre esta pregunta en una entrevista con un científico de datos o un analista de datos.
Honestamente, incluso yo estaba confundido inicialmente cuando comencé a aprender Python hace unos años. ¡Pero no te preocupes! loc vs iloc en Pandas puede ser una pregunta complicada, pero la respuesta es bastante simple una vez que la dominas.
Y eso es lo que pretendo ayudarlo a lograr en este artículo. Confiaremos en Pandas, la biblioteca de Python más popular, para responder la pregunta loc vs. iloc.
La biblioteca de Pandas contiene varios métodos para un filtrado de datos conveniente: loc y iloc entre ellos. Con estos, podemos hacer prácticamente cualquier tarea de selección de datos en los marcos de datos de Pandas.
Consulte nuestros dos cursos populares de Python si es nuevo en la programación de Python. Son gratuitos y son un gran primer paso en su viaje de aprendizaje automático:
Bien, ¡sumergámonos!
loc contra iloc en Pandas
Entonces, ¿qué es loc e iloc en primer lugar? Necesitamos responder esta pregunta antes de que podamos entender dónde usar cada una de estas funciones de Pandas en Python.
loc en pandas
loc está basado en etiquetas, lo que significa que tenemos que especificar el nombre de las filas y columnas que necesitamos filtrar.
Por ejemplo, digamos que buscamos las filas cuyo índiceEl "Índice" es una herramienta fundamental en libros y documentos, que permite ubicar rápidamente la información deseada. Generalmente, se presenta al inicio de una obra y organiza los contenidos de manera jerárquica, incluyendo capítulos y secciones. Su correcta elaboración facilita la navegación y mejora la comprensión del material, convirtiéndolo en un recurso esencial tanto para estudiantes como para profesionales en diversas áreas.... es 1, 2 o 100. No obtendremos la primera, la segunda o la centésima fila aquí. En cambio, obtendremos los resultados solo si el nombre de cualquier índice es 1, 2 o 100.
Entonces, podemos filtrar los datos usando la función loc en Pandas incluso si los índices no son un número entero en nuestro conjunto de datos.
iloc en pandas
Por otro lado, iloc se basa en índices enteros. Entonces aquí, tenemos que especificar filas y columnas por su índice entero.
Digamos que buscamos las filas con índice 1, 2 o 100. Devolverá la primera, segunda y centésima fila, independientemente del nombre o etiquetas que tengamos en el índice en nuestro conjunto de datos.
Veremos varios ejemplos en este artículo sobre cómo usar loc y iloc para el proceso de selección y actualización de datos en Python.
loc e iloc en acción (usando Pandas en Python)
¡Es hora de encender su cuaderno Jupyter! Nos sumergiremos directamente en el código y entenderemos cómo y dónde usar loc frente a iloc en Python.
Crea un conjunto de datos de muestra
Primero, necesitamos un conjunto de datos para aplicar loc e iloc, ¿verdad? Vamos a hacer eso.
Crearemos un conjunto de datos de estudiantes de muestra que consta de 5 columnas: edad, sección, ciudad, sexo y color favorito. Este conjunto de datos contendrá variables tanto numéricas como categóricas:
Encuentre todas las filas en función de cualquier condición en una columna
Una cosa que usamos casi siempre cuando exploramos un conjunto de datos: filtrar los datos en función de una condición determinada. Por ejemplo, es posible que necesitemos encontrar todas las filas en nuestro conjunto de datos donde la edad es más de x años, o la ciudad es Delhi, y así sucesivamente.
Podemos resolver tipos de consultas con una simple línea de código usando pandas.DataFrame.loc[]. Solo necesitamos pasar la condición dentro de la declaración loc.
Intentemos encontrar las filas donde el valor de la edad es mayor o igual que 15:
¡Pruebe el código anterior en la ventana de codificación en vivo a continuación!
Encuentra todas las filas con más de una condición
De manera similar, también podemos usar múltiples condiciones para filtrar nuestros datos, como encontrar todas las filas donde la edad es mayor o igual a 12 y el género también es masculino:
Seleccione un rango de filas usando loc
Usando loc, también podemos cortar el Pandas marco de datos sobre una variedad de índices. Si los índices no están ordenados, seleccionará solo las filas con los índices 1 y 3 (como verá en el siguiente ejemplo). Y si los índices no son números, entonces no podemos dividir nuestro marco de datos.
En ese caso, necesitamos usar el iloc función para cortar nuestro marco de datos Pandas.
Seleccione solo las columnas requeridas con una condición
También podemos seleccionar las columnas que se requieren de las filas que satisfacen nuestra condición.
Por ejemplo, si nuestro conjunto de datos contiene cientos de columnas y queremos ver solo algunas de ellas, podemos agregar una lista de columnas después de la condición dentro de la declaración loc:
Actualizar los valores de una columna en particular en filas seleccionadas
¡Este es uno de mis trucos favoritos en Python Pandas!
A menudo tenemos que actualizar los valores de nuestro conjunto de datos en función de una determinada condición. Por ejemplo, si los valores en la edad son mayores que iguales a 12, entonces queremos actualizar los valores de la sección de la columna para que sean «M».
Podemos hacer esto ejecutando un en bucle también, pero si nuestro conjunto de datos es de gran tamaño, llevaría una eternidad completar la tarea. Usando loc en Pandas, podemos hacer esto en segundos, ¡incluso en conjuntos de datos más grandes!
Solo necesitamos especificar la condición seguida de la columna de destino y luego asignar el valor con el que queremos actualizar:
Actualizar los valores de varias columnas en filas seleccionadas
Si queremos actualizar varias columnas con diferentes valores, podemos usar la siguiente sintaxis.
En este ejemplo, si el valor de la columna la edad es mayor que 20, entonces la función loc actualizará los valores en la columna sección con «S«Y los valores de la columna ciudad con Pune:
Seleccionar filas con índices usando iloc
Cuando usamos iloc, necesitamos especificar las filas y columnas por su índice entero. Si queremos seleccionar solo la primera y la tercera fila, simplemente necesitamos poner esto en una lista en la declaración iloc con nuestro marco de datos:
Seleccionar filas con índices particulares y columnas particulares
Anteriormente, seleccionamos algunas columnas del conjunto de datos usando la función loc. Podemos hacer esto usando la función iloc. Tenga en cuenta que debemos proporcionar el número de índice de la columna en lugar del nombre de la columna:
Seleccione un rango de filas usando iloc
También podemos cortar un marco de datos usando iloc. Necesitamos proporcionar el Índice de comienzo y end_index + 1 para cortar un marco de datos determinado. Si los índices no son los números ordenados, entonces seleccionará el índice_inicial número de fila hasta el end_index:
Seleccione un rango de filas y columnas usando iloc
Corte el marco de datos en filas y columnas. En el siguiente ejemplo, seleccionamos las filas de (1-2) y las columnas de (2-3).
loc e iloc son dos funciones súper útiles en Pandas en las que he llegado a confiar mucho. Estoy seguro de que también los usará en su viaje de aprendizaje automático. Y si es un usuario de R que se cambia a Python, estoy seguro de que encontrará loc e iloc bastante intuitivos.
Recomiendo encarecidamente tomar nuestro Python para la ciencia de datos y Pandas para análisis de datos en los cursos de Python si es nuevo en la programación de Python. Son gratuitos y un gran primer paso en su viaje de aprendizaje automático.