Función Pandas df.iloc[]

Pandas 常用函数Funciones comunes de Pandas


iloc[]Es el método de indexación basado en la posición entera (Integer Location) en Pandas, utilizado para seleccionar datos mediante números de fila y columna. Y estoloc[]es diferente,iloc[]Se basa completamente en la posición de los datos (índice entero comenzando desde 0), sin considerar las etiquetas establecidas por los propios datos.

Cuando necesitas seleccionar datos por posición, o seleccionar datos sin conocer las etiquetas de índice específicas,iloc[]es la mejor opción. Su forma de funcionar es muy similar a la indexación de listas de Python, lo que es muy intuitivo para los usuarios de Python.


Sintaxis básica y parámetros

iloc[]Es el indexador de DataFrame, mediante corchetes[]para acceder. Solo acepta enteros, listas de enteros, slices de enteros o matrices booleanas como parámetros.

Formato de sintaxis

# 选择单行(返回 Series)
DataFrame.iloc[行号]

# 选择多行(返回 DataFrame)
DataFrame.iloc[[行号1, 行号2, ...]]

# 使用切片选择连续行
DataFrame.iloc[起始行:结束行]

# 选择行和列
DataFrame.iloc[行号, 列号]
DataFrame.iloc[行切片, 列切片]
DataFrame.iloc[行列表, 列列表]

Descripción de parámetros

Posición del parámetro Tipo de parámetro Descripción
Primer parámetro (filas) Entero, lista de enteros, slice de enteros, matriz booleana Se utiliza para seleccionar filas, basado en la posición (desde 0).
Segundo parámetro (columnas) Entero, lista de enteros, slice de enteros Opcional, se utiliza para seleccionar columnas, también basado en la posición.

Descripción del valor de retorno

  • Elemento único: Devuelve un valor escalar.
  • Una sola fila: Devuelve un Series.
  • Múltiples filas: Devuelve un DataFrame.
  • Combinación de filas y columnas: Según el resultado de la selección, devuelve un Series o un DataFrame.

Ejemplos

Vamos a dominar completamente con abundantes ejemplosiloc[]el uso de.

Ejemplo 1: Uso básico - Seleccionar filas

iloc[]Utiliza la indexación basada en posición, muy similar a la forma de indexación de las listas de Python.

Ejemplo

import pandas as pd

# Crear un DataFrame de ejemplo
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'age': [18, 19, 17, 18, 20],
    'score': [85, 92, 78, 90, 88],
    'grade': ['A', 'A', 'B', 'A', 'B']
}
df = pd.DataFrame(data)

print("DataFrame original:")
print(df)
print()

# Seleccionar la primera fila (índice 0)
print("Seleccionar la primera fila (posición 0):")
print(df.iloc[0])
print()

# Seleccionar múltiples filas
print("Seleccionar las filas 1, 3 y 4:")
print(df.iloc[[1, 3, 4]])
print()

# Usar slices para seleccionar filas consecutivas (nota: el slice de iloc es cerrado por la izquierda y abierto por la derecha, igual que en Python)
print("Seleccionar las filas 1 a 3 (posiciones 1, 2, 3):")
print(df.iloc[1:4])
print()

# Seleccionar las primeras 3 filas
print("Las primeras 3 filas:")
print(df.iloc[:3])

Resultado de la ejecución:

原始 DataFrame:
      name  age  score grade
0    Alice   18     85     A
1      Bob   19     92     A
2  Charlie   17     78     B
3    David   18     90     A
4      Eve   20     88     B

选择第一行(位置 0):
name      Alice
age          18
score        85
grade         A
Name: 0, dtype: object

选择第 1、3、4 行:
    name  age  score grade
1      Bob   19     92     A
3    David   18     90     A
4      Eve   20     88     B

选择第 1 行到第 3 行(位置 1、2、3):
      name  age  score grade
1      Bob   19     92     A
2  Charlie   17     78     B
3    David   18     90     A

前 3 行:
      name  age  score grade
0    Alice   18     85     A
1      Bob   19     92     A
2  Charlie   17     78     B

Análisis del código:

  1. df.iloc[0]Selecciona la primera fila (posición 0) y devuelve un Series.
  2. iloc[]El slice es cerrado por la izquierda y abierto por la derecha; incluye las posiciones 1, 2, 3 y no incluye la posición 4.
  3. df.iloc[[1, 3, 4]]Selecciona filas en varias posiciones específicas.
  4. df.iloc[:3]Omitir la posición inicial indica que se comienza desde 0.

Ejemplo 2: Seleccionar filas y columnas específicas

iloc[]Puede seleccionar filas y columnas a la vez, localizando con precisión mediante números de posición.

Ejemplo

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'age': [18, 19, 17, 18, 20],
    'score': [85, 92, 78, 90, 88],
    'grade': ['A', 'A', 'B', 'A', 'B']
}
df = pd.DataFrame(data)

# Seleccionar una sola celda (segunda fila, tercera columna)
print("Seleccionar la celda en la posición [1, 2]:")
print(df.iloc[1, 2])  # Devuelve 92
print()

# Seleccionar columnas específicas de filas específicas
print("Seleccionar las columnas 1 y 3 de la fila 0:")
print(df.iloc[0, [1, 3]])
print()

# Seleccionar múltiples filas y múltiples columnas
print("Seleccionar las columnas 0 y 2 de las filas 0, 2 y 4:")
print(df.iloc[[0, 2, 4], [0, 2]])
print()

# Seleccionar columnas específicas de todas las filas
print("Columnas 0 y 2 de todas las filas:")
print(df.iloc[:, [0, 2]])
print()

# Combinar slice de filas y slice de columnas
print("Columnas de la 0 a la 2 (sin incluir) de las filas 1 a 3:")
print(df.iloc[1:4, :3])

Resultado de la ejecución:

选择位置 [1, 2] 的单元格:
92

选择第 0 行的第 1 和第 3 列:
age      19
grade     A
Name: 0, dtype: object

选择第 0、2、4 行的第 0、2 列:
      name  score
0    Alice     85
2  Charlie   78
4      Eve    88

所有行的第 0 和第 2 列:
      name  score
0    Alice     85
1      Bob    92
2  Charlie   78
3    David   90
4     Eve    88

第 1 到 3 行的第 0 到第 2 列(不含):
      name  age
1      Bob   19
2  Charlie 17
3    David   18

Análisis del código:

  1. df.iloc[1, 2]Selecciona una sola celda y devuelve un valor escalar.
  2. df.iloc[0, [1, 3]]Selecciona múltiples columnas de una fila específica.
  3. df.iloc[:, [0, 2]]Los dos puntos indican que se seleccionan todas las filas.
  4. iloc[]El slice sigue la convención de Python: cerrado por la izquierda y abierto por la derecha (sin incluir la posición final).

Ejemplo 3: Uso combinado con índices personalizados

Cuando el DataFrame tiene un índice personalizado,iloc[]sigue seleccionando datos por posición, independientemente de las etiquetas de índice.

Ejemplo

import pandas as pd

# Crear un DataFrame con índice personalizado
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'age': [18, 19, 17, 18, 20],
    'score': [85, 92, 78, 90, 88]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

print("DataFrame con índice personalizado:")
print(df)
print()

# iloc sigue seleccionando por posición, no se ve afectado por el índice personalizado
print("iloc)
print(df.iloc[0])
print()

print("iloc[1:3] selecciona las filas 2 y 3 (posiciones 1, 2):")
print(df.iloc[1:3])
print()

# Usar índices negativos (contando desde el final)
print("Última fila (posición -1):")
print(df.iloc[-1])
print()

print("Las 3 últimas filas:")
print(df.iloc[-3:])

Resultado de la ejecución:

带自定义索引的 DataFrame:
   name  age  score
a  Alice   18     85
b    Bob   19     92
c  Charlie 17     78
d  David   18     90
e    Eve   20     88

iloc[0] 选择第一行(位置 0),与标签 'a', 'b', 'c' 无关:
name      Alice
age          18
score        85
Name: a, dtype: object

iloc[1:3] 选择第 2、3 行(位置 1、2):
      name  age  score
b    Bob   19     92
c  Charlie 17     78

最后一行(位置 -1):
name     Eve
age       20
score     88
Name: e, dtype: object

倒数 3 行:
      name  age  score
c  Charlie   17     78
d    David   18     90
e      Eve   20     88

Análisis del código:

  • Aunque el DataFrame use un índice personalizado ('a', 'b', 'c', 'd', 'e'),iloc[]sigue seleccionando por posición.
  • iloc[0]Siempre selecciona la primera fila (posición física), sin importar cuál sea la etiqueta de índice.
  • ilocAdmite índices negativos: -1 indica la última fila, -2 la penúltima, y así sucesivamente.

Ejemplo 4: Selección con matrices booleanas

iloc[]También admite la selección con matrices booleanas, lo cual es útil en el filtrado por condiciones.

Ejemplo

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'age': [18, 19, 17, 18, 20],
    'score': [85, 92, 78, 90, 88],
    'grade': ['A', 'A', 'B', 'A', 'B']
}
df = pd.DataFrame(data)

# Seleccionar usando una matriz booleana
bool_array = [True, False, True, False, True]
print("Filas seleccionadas usando la matriz booleana [True, False, True, False, True]:")
print(df.iloc[bool_array])
print()

# Usar combinado con condiciones (primero calcular la matriz booleana y luego usarla en iloc)
# Seleccionar las filas con puntuación mayor que 85
condition = df['score'] > 85
print("Filas con puntuación mayor que 85:")
print(df.iloc[condition.values])  # Obtener la matriz booleana
print()

# Después de seleccionar filas en posiciones específicas, seleccionar columnas específicas
print("Columnas 1 y 2 de las filas 1 y 3:")
print(df.iloc[[1, 3], 1:3])

Resultado de la ejecución:

使用布尔数组 [True, False, True, False, True] 选择的行:
      name  age  score grade
0    Alice   18     85     A
2  Charlie   17     78     B
4      Eve   20     88     B

分数大于 85 的行:
      name  age  score grade
1      Bob   19     92     A
3    David   18     90     A
4      Eve   20     88     B

第 1、3 行的第 1、2 列:
      age  score
1     19     92
3     18     90

Análisis del código:

  1. La longitud de la matriz booleana debe ser igual al número de filas (para la selección de filas) o de columnas (para la selección de columnas).
  2. ilocAl usar matrices booleanas, a diferencia delloc[]filtrado condicional, selecciona directamente por posición.
  3. Se pueden seleccionar patrones específicos mediante el paso del slice, por ejemplo, seleccionar una fila sí y una no.

Notas

  • iloc[]Se utiliza indexación posicional; el slice sigue la convención de Python (cerrado por la izquierda y abierto por la derecha).
  • Si la posición pasada está fuera de rango, se lanzará un error IndexError.
  • Admite índices negativos; -1 indica la última fila, -2 la penúltima.
  • yloc[]A diferencia de,iloc[]no admite el filtrado directo con expresiones condicionales; es necesario calcular primero una matriz booleana.

Importante:loc[]yiloc[]La diferencia entre ambos es un punto clave en el aprendizaje de Pandas.loc[]Basado en etiquetas,iloc[]Basado en posición. Se recomienda distinguir claramente entre ambos durante el desarrollo para evitar errores causados por confusión.


Resumen

iloc[]Es un selector de datos basado en la posición entera en Pandas; proporciona una experiencia de indexación similar a la de las listas de Python. Su principal característica es que se basa completamente en la posición de los datos (desde 0) y no se ve afectado por las etiquetas de índice personalizadas.

En el uso práctico,iloc[]es especialmente adecuado para los siguientes escenarios: cuando se necesita seleccionar datos por posición, cuando se necesitan índices negativos, cuando se necesita usar el paso en los slices, y cuando se seleccionan datos sin conocer las etiquetas de índice. Combinado conloc[]yiloc[], puede responder con flexibilidad a diversas necesidades de selección de datos.

Pandas 常用函数Funciones comunes de Pandas

Otras extensiones