Los DataFrames de Pandas son esenciales para la manipulación de datos en Python. El acceso eficiente a valores de celdas individuales es una tarea común. Este artículo explora varios métodos para recuperar estos valores, destacando sus fortalezas y debilidades.
Tabla de contenido
- Indexación basada en enteros:
iloc
iat
yat
para acceso a una sola celda- Acceso a través de columna e índice:
df['col_name'].iloc[]
Indexación basada en enteros: iloc
.iloc
proporciona una indexación basada en enteros versátil. Utiliza indexación basada en cero para filas y columnas.
import pandas as pd
data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)
# Accede al valor en la fila 1, columna 0 (segunda fila, primera columna)
value = df.iloc[1, 0]
print(f"Valor usando iloc: {value}") # Salida: 20
# Accede al valor en la fila 0, columna 1 (primera fila, segunda columna)
value = df.iloc[0, 1]
print(f"Valor usando iloc: {value}") # Salida: 40
.iloc
es eficiente, especialmente para DataFrames grandes, y ofrece un control preciso sobre la selección de celdas usando índices numéricos.
iat
y at
para acceso a una sola celda
.iat
y .at
ofrecen un acceso conciso a una sola celda. .iat
usa indexación basada en enteros, mientras que .at
usa indexación basada en etiquetas (nombres de columna).
import pandas as pd
data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)
# Obtiene el valor en la fila 1, columna 0 usando iat
value = df.iat[1, 0]
print(f"Valor usando iat: {value}") # Salida: 20
# Obtiene el valor en la fila 0, columna 'col2' usando at
value = df.at[0, 'col2']
print(f"Valor usando at: {value}") # Salida: 40
Estos métodos son más rápidos para el acceso a una sola celda que .iloc
porque devuelven un valor escalar, no una Serie o DataFrame.
Acceso a través de columna e índice: df['col_name'].iloc[]
Este enfoque selecciona una columna y luego accede a una fila específica dentro del array NumPy subyacente de esa columna. Es menos flexible y eficiente que los métodos anteriores.
import pandas as pd
data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)
# Accede al valor en la fila 1 de 'col1'
value = df['col1'].iloc[1] #Más eficiente que .values[]
print(f"Valor usando iloc en columna: {value}") # Salida: 20
Si bien esto puede parecer conveniente, usar .iloc
directamente en la selección de columna generalmente se prefiere por eficiencia y claridad.
En resumen, .iloc
, .iat
y .at
proporcionan maneras eficientes y legibles de acceder a las celdas de un DataFrame. El enfoque basado en columnas usando .iloc
en la columna seleccionada generalmente se prefiere sobre el uso de .values[]
. Elija el método que mejor se adapte a sus necesidades y estilo de codificación.