LOC vs ILOC en Pandas: Diferencia entre LOC e ILOC en Pandas

Publicado: 2020-08-01

Tabla de contenido

Loc e iloc en Pandas

Una causa común de confusión entre los nuevos desarrolladores de Python es loc vs. iloc. Ambos parecen muy similares y realizan tareas similares. Así que esto puede desconcertar a cualquier estudiante.

Si desea averiguar la diferencia entre iloc y loc, ha venido al lugar correcto, porque en este artículo discutiremos este tema en detalle. Descubrirá cuál es la diferencia clave entre estas funciones y luego las verá en acción para comprender mejor el concepto. Consulte nuestros cursos de ciencia de datos para obtener más información sobre Pandas.

Empecemos.

Diferencia entre loc e iloc

1. iloc en Python

Puede usar iloc en Python para la selección. Se basa en la ubicación de enteros y le ayuda a seleccionar por posición. Entonces, si desea encontrar la fila con el índice 5, iloc le mostrará la quinta fila del marco de datos, independientemente de su nombre o etiqueta.

Aquí hay un ejemplo de iloc en Python:

>>> midict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},

… {'a': 100, 'b': 200, 'c': 300, 'd': 400},

… {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]

>>> df = pd.DataFrame(mydict)

>>> df

a B C D

0 1 2 3 4

1 100 200 300 400

2 1000 2000 3000 4000

Indexaremos las filas con un entero escalar usando la función iloc para el marco de datos anterior:

>>> tipo(df.iloc[0])

<clase 'pandas.core.series.Series'>

>>> df.iloc[0]

un 1

segundo 2

do 3

re 4

Nombre: 0, tipo de d: int64

2. ubicación en Pandas

Puede usar loc en Pandas para acceder a múltiples filas y columnas usando etiquetas; sin embargo, también puede usarlo con una matriz booleana.

Si usa loc para encontrar una fila con el índice 5, no obtendrá la quinta fila con ella. En cambio, solo obtendrá la fila que tiene el nombre '5'.

Aquí hay un ejemplo de loc en Pandas:

>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],

… index=['cobra', 'víbora', 'sidewinder'],

… columnas=['max_speed', 'escudo'])

>>> df

escudo max_speed

cobra 1 2

víbora 4 5

viento lateral 7 8

Lo anterior fue la tabla de la que extraeremos la fila:

>>> df.loc['víbora']

velocidad_máxima 4

escudo 5

Nombre: viper, dtype: int64

Ejemplo detallado de loc vs iloc

Aunque usamos ambas funciones para la selección, sería mejor si analizáramos un ejemplo detallado para comprender sus distinciones.

En nuestro ejemplo, usaremos el conjunto de datos de clientes de telecomunicaciones, que está disponible en kaggle. Lo agregaremos a un marco de datos:

df = pd.read_csv(“Proyectos/churn_prediction/Telco-Customer-Churn.csv”)

df.cabeza ()

IDENTIFICACIÓN género Sr.Ciudadano Compañero dependientes tenencia Teléfono MultipleLines Internet Seguridad
0 7590-VHVEG Mujer 0 No 1 No Sin teléfono ADSL No
1 5575-GNVDE Masculino 0 No No 34 No ADSL
2 3668-QPYBK Masculino 0 No No 2 No ADSL

Este conjunto de datos tiene 21 columnas; solo hemos mostrado algunos con fines de demostración. Como ya hemos discutido, usamos loc para seleccionar datos por la etiqueta. Aquí, los nombres de las columnas son sus etiquetas de columna, como género, tenencia, OnlineSecurity; todos ellos son los nombres de las columnas, así como las etiquetas.

Como no hemos asignado ningún índice específico, pandas crearía un índice entero para las filas de forma predeterminada. Las etiquetas de las filas son números enteros, que comienzan en 0 y van hacia arriba. En este ejemplo, veremos cómo loc e iloc se comportan de manera diferente.

  • Seleccione la fila "1" y la columna "Socio"

df.loc[1, 'Socio']

Salida: 'No'

Muestra el valor presente en la columna 'Socio' de la fila '1'.

  • Seleccione las etiquetas de fila '4' y las columnas 'ID de cliente' y 'género'

df.loc[:4, ['ID de cliente', 'género']]

Identificación del cliente

género

0

7590-VHVEG

Mujer

1

5575-GNVDE

Masculino

2

3668-QPYBK

Masculino

3

7795-CFOCW

Masculino

4

9237-HQITU

Mujer

  • Seleccione las etiquetas de fila "1", "2", "3" y la columna "Dependientes"

df.loc[[1,2,3], 'Dependientes']

1 No

2 No

3 No

Nombre: Dependientes, dtype: objeto

Esta vez, filtraremos el marco de datos y aplicaremos iloc o loc:

  • Seleccione etiquetas de fila para las columnas "10" y "PhoneService" e "InternetService" de un cliente que tiene un socio (el socio debe ser 'sí')

df [df.Socio == 'Sí'].loc:10, ['ServicioTeléfono', 'ServicioInternet']]

En el caso anterior, aplicamos un filtro a la base de datos pero no cambiamos el índice, por lo que nuestra salida omitió varias etiquetas de las filas que requería nuestro filtro. Entonces, al usar loc[:10] aquí, seleccionamos las filas que tenían etiquetas hasta "10".

Si, por otro lado, usamos iloc aquí y aplicamos el filtro, obtendremos 10 filas ya que iloc selecciona por posición independientemente de las etiquetas. Este es el resultado que obtendremos si aplicamos iloc[:10]:

df[df.Socio == 'Sí'].iloc[:10, [6,8]]

Servicio telefónico Servicio de Internet
0 No ADSL
8 Fibra óptica
10 ADSL
12 Fibra óptica
15 Fibra óptica
18 ADSL
21 No
23 ADSL
24 ADSL
26 Fibra óptica

Debes haber notado que tenemos que cambiar nuestro método para seleccionar columnas.

Leer: Tutorial de Python Pandas

  • Seleccione las primeras 5 columnas y las primeras 5 filas con iloc

df.iloc[:4, :4]

Identificación del cliente género Ciudadano mayor Compañero
0 7590-VHVEG Mujer 0
1 5575-GNVDE Masculino 0 No
2 3668-QPYBK Masculino 0 No
3 7795-CFOCW Masculino 0 No

Podemos usar iloc para seleccionar posiciones desde el final. Para eso, simplemente tendremos que usar números enteros negativos (-1, -2, etc.) y comenzar con ellos.

  • Seleccione las últimas 5 columnas y las últimas 5 filas

df.iloc[-5:, -5:]

Facturación sin papel Método de pago Cargos mensuales Cargos totales Batir
7038 Cheque enviado por correo 84.80 1990.5 No
7039 Tarjeta de crédito 103.20 7362.9 No
7040 cheque electronico 29.60 346.45 No
7041 cheque enviado por correo 74.40 306.6
7042 Transferencia bancaria 105.65 6844.5 No

También puede usar la función lambda con iloc. (Una función lambda es una pequeña función anónima en Python que puede tener una sola expresión pero cualquier número de argumentos)

  • Seleccione cada tercera fila hasta la 15 y solo muestre las columnas "servicio de Internet" y "Socio"

df.iloc[ lambda x: (x.index x 3 == 0) & (x.index <= 150]['Socio', 'InternetService' ]]

Compañero Servicio de Internet
0 ADSL
3 No ADSL
6 No Fibra óptica
9 No ADSL
12 Fibra óptica
15 Fibra óptica

También podemos seleccionar etiquetas o posiciones presentes en el medio.

  • Seleccione las posiciones de columna entre 4 y 6, y las posiciones de fila entre 20 y 25

df.iloc[20:25, 4:6]

dependientes tenencia
20 No 1
21 No 12
22 No 1
23 No 58
24 No 49

Ahora, si intenta pasar etiquetas a iloc, Pandas le mostrará el siguiente mensaje de error:

ValueError: la indexación basada en la ubicación solo puede tener tipos [entero, porción de entero (el punto de INICIO está INCLUIDO, el punto de FINALIZACIÓN está EXCLUIDO), tipo de lista de enteros, matriz booleana]

Obtendrá un error similar si pasa posiciones a loc.

Lea también: Preguntas de la entrevista de Pandas

Más información sobre Python

Un estudiante debe hacer preguntas y encontrar sus respuestas. Esperamos que este artículo haya respondido a sus preguntas sobre loc en Pandas (o iloc en Python). Sería mejor si probara estas funciones usted mismo en diferentes conjuntos de datos para comprender cómo funcionan.

Si desea obtener más información sobre Python, Pandas y temas relevantes, debe dirigirse a nuestro blog. Nuestros expertos agregan múltiples recursos detallados allí.

Si tiene curiosidad por aprender sobre ciencia de datos, consulte el Programa ejecutivo PG en ciencia de datos de IIIT-B y upGrad, creado para profesionales que trabajan y ofrece más de 10 estudios de casos y proyectos, talleres prácticos, tutoría con expertos de la industria, 1 -on-1 con mentores de la industria, más de 400 horas de aprendizaje y asistencia laboral con las mejores empresas.

¿Cómo podemos agregar filas de Pandas DataFrame?

Para insertar filas en el DataFrame, podemos usar los comandos loc, iloc e ix.

1. La ubicación se usa principalmente para las etiquetas de nuestro índice. Puede entenderse como cuando insertamos en loc 4, lo que indica que estamos buscando entradas de DataFrame con un índice de 4.
2. El iloc se usa principalmente para buscar ubicaciones en el índice. Es como si insertáramos en iloc 4, lo que indica que estamos buscando entradas de DataFrame que están presentes en el índice 4.
3. El caso ix es complicado porque le pasamos una etiqueta a ix si el índice está basado en números enteros. El ix 4 indica que estamos buscando en el DataFrame valores con un índice de 4.

¿Qué es la reindexación en el contexto de Pandas en Python?

Las etiquetas de fila y columna de un DataFrame se modifican cuando lo reindexamos. El término 'reindexar' se refiere al proceso de alinear datos a un conjunto específico de etiquetas a lo largo de un solo eje. En Pandas, la reindexación se puede usar para modificar el índice de las filas y columnas de un DataFrame. Muchas estructuras de datos de índice conectadas con muchas series de pandas o pandas DataFrame se pueden utilizar con índices.

¿Cuáles son algunas operaciones de datos en Pandas?

Hay varias operaciones de datos importantes para DataFrame en Pandas, que son las siguientes:

1. Selección de filas y columnas: al pasar los nombres de las filas y columnas, podemos seleccionar cualquier fila y columna en el DataFrame. Se vuelve unidimensional y se considera como una serie cuando lo selecciona del DataFrame.
2. Filtrado de datos: al usar algunas de las expresiones booleanas en DataFrame, podemos filtrar los datos.
3. Valores nulos: cuando no se proporcionan datos a los elementos, reciben un valor nulo. No puede haber valores en las diferentes columnas, que generalmente se representan como NaN.