Curso de introducción a la programación con Python¶

    Autor: Luis Fernando Apáez Álvarez
    -Curso PyM-
    Clase 3: Profundizando en Pandas
    Fecha: 29 de noviembre del 2022

Contenido¶

  • Índice en un dataframe
    • Librería faker
  • loc e iloc

En esta clase continuaremos viendo más conceptos sobre el manejo de dataframes en pandas.

Índice en un dataframe ¶

A lo largo de esta clase trabajaremos con datos falsos disposibles en la siguiente librería

In [1]:
# Lo siguiente hace que no se vean las advertencias al ejecutar
# ciertos codigos
import warnings
warnings.filterwarnings('ignore')

Librería faker¶

In [2]:
# Realizamos la instalacion de las siguientes librerias
!pip install faker
!pip install Dumper
Collecting faker
  Downloading Faker-15.3.3-py3-none-any.whl (1.6 MB)
Requirement already satisfied: python-dateutil>=2.4 in c:\programdata\miniconda3\lib\site-packages (from faker) (2.8.2)
Requirement already satisfied: six>=1.5 in c:\programdata\miniconda3\lib\site-packages (from python-dateutil>=2.4->faker) (1.16.0)
Installing collected packages: faker
Successfully installed faker-15.3.3
Collecting Dumper
  Downloading Dumper-1.2.0-py2.py3-none-any.whl (13 kB)
Installing collected packages: Dumper
Successfully installed Dumper-1.2.0
In [5]:
# importacion necesaria
from faker import Faker
# Instanciamos
fake = Faker()

# con lo siguiente obtenemos informacion
# de manera aleatoria referente a los campos:
# nombre, direccion, email, breve descripcion de la persona
# y pais
print(fake.name())
print(fake.address())
print(fake.email())
print(fake.text())
print(fake.country())
Jessica Brown
1743 Joseph Lodge
Lake Johnstad, IL 69208
barkersarah@example.com
This a foreign speak heavy.
Statement focus together fill store ago media. Woman pretty table sister radio care choose.
Vanuatu

Si volvemos a ejecutar el código obtendremos información diferente

In [6]:
print(fake.name())
print(fake.address())
print(fake.email())
print(fake.text())
print(fake.country())
Gary Turner
9460 Wilson Vista Suite 386
East Sergio, MP 58762
dallen@example.net
Agree development edge same whose. Physical kind eye event. Lead leg wait arrive who left this thing.
Gambia

Podemos obtener también número aleatorios:

In [9]:
# numero aleatorio entero entre el 0 y el 99
fake.random_int(0, 100)
Out[9]:
66
In [16]:
# Podemos obtener numeros decimales utilizando numpy
import numpy as np

print(np.random.rand())
print(np.random.rand())
0.504182924195679
0.27661491275548944

Con base en lo anterior crearemos el siguiente dataframe:

In [64]:
import pandas as pd

# creamos 10000 nombres 
nombres = [fake.name() + fake.last_name() for i in range(10000)]
# 10000 correos electronicos
correos = [fake.email() for i in range(10000)]
# 10000 edades
edades = [fake.random_int(18, 80) for i in range(10000)]
# 10000 salarios
salarios = [np.random.rand() * 10000 for i in range(10000)]

# Creamos un diccionario con la info anterior
dict_info = {'Nombre': nombres, 'Edad': edades, 'Correo': correos, 
             'Salario': salarios}
# Creamos el dataframe
df = pd.DataFrame(dict_info)
df.head()
Out[64]:
Nombre Edad Correo Salario
0 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
1 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
2 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
3 Heather SmithRoss 59 karen37@example.com 3811.456078
4 Regina RiceCruz 24 ccaldwell@example.net 8305.623411
In [22]:
df.tail()
Out[22]:
Nombre Edad Correo Salario
9995 Jennifer CoxNelson 50 ogreene@example.net 9297.110391
9996 Travis PottsRogers 47 danielschristopher@example.com 1352.001969
9997 Jonathan Simmons Jr.Davis 33 williewilliams@example.org 9015.793643
9998 Kathryn RosalesRussell 61 james23@example.net 7281.333227
9999 Daniel KramerSmith 64 gordonchristopher@example.com 222.855406
In [20]:
# tenemos 10000 registros y 4 columnas
df.shape
Out[20]:
(10000, 4)

Notamos que por defecto el índice del dataframe es una numeración del 0 al 9999

In [21]:
# accedemos al atributo de indice
df.index
Out[21]:
RangeIndex(start=0, stop=10000, step=1)

Agregemos una columna nueva al dataframe para colocar un ID identificador único para cada persona. El ID será un número de 5 dígitos:

In [56]:
# Al definir un set garantizaremos elementos unicos
ID = set(np.random.randint(10000,100000) for i in range(11000))
len(ID)
Out[56]:
10342

Convertimos a lista y reducimos a 10000 elementos:

In [57]:
ID = list(ID)
ID = ID[0:10000]
print(len(ID))
print(ID[:20])
10000
[65538, 98311, 32783, 32785, 98327, 32796, 65566, 65571, 98342, 65575, 32808, 65578, 98346, 65581, 65583, 65589, 65590, 32823, 98363, 65596]

Agregamos esa información al dataframe que tenemos

In [65]:
df['ID'] = ID
df.head()
Out[65]:
Nombre Edad Correo Salario ID
0 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336 65538
1 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545 98311
2 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572 32783
3 Heather SmithRoss 59 karen37@example.com 3811.456078 32785
4 Regina RiceCruz 24 ccaldwell@example.net 8305.623411 98327

Corroboramos que en efecto son únicos los ID's utilizando el método unique() de pandas, el cual nos arroja los valores únicos de una columna

In [66]:
df.ID.unique().shape
Out[66]:
(10000,)

Ahora bien, podemos definir la columna ID como el índice de nuestro dataframe mediante el método set_index() como sigue

In [79]:
# configuramos drop=True para que la columna ID sea eliminada
# pero que esta sea considerada como el nuevo indice del
# dataframe
df.set_index('ID', drop=True)
Out[79]:
Nombre Edad Correo Salario
ID
65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
32783 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
32785 Heather SmithRoss 59 karen37@example.com 3811.456078
98327 Regina RiceCruz 24 ccaldwell@example.net 8305.623411
... ... ... ... ...
97176 James BennettLyons 80 vargasstacey@example.org 6703.123603
31644 Julie WalshMoreno 64 cynthiavargas@example.net 9039.089244
97182 Zachary ReyesMartin 54 fwashington@example.net 4490.081988
97185 Kelly KennedyPalmer 20 kshaw@example.com 1548.094240
31651 Kathryn CollierCook 40 dianafields@example.org 3810.610008

10000 rows × 4 columns

Pero vemos que el dataframe mantiene el índice original

In [81]:
df.head()
Out[81]:
Nombre Edad Correo Salario ID
0 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336 65538
1 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545 98311
2 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572 32783
3 Heather SmithRoss 59 karen37@example.com 3811.456078 32785
4 Regina RiceCruz 24 ccaldwell@example.net 8305.623411 98327

La razón es que no hemos guardado los cambios en ese dataframe, lo cual conseguimos sobreescribiendo la variable df

In [82]:
df = df.set_index('ID', drop=True)
df.head()
Out[82]:
Nombre Edad Correo Salario
ID
65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
32783 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
32785 Heather SmithRoss 59 karen37@example.com 3811.456078
98327 Regina RiceCruz 24 ccaldwell@example.net 8305.623411

Podemos regresar al índice del rango numérico que ya conocemos:

In [83]:
df = df.reset_index()
df.head()
Out[83]:
ID Nombre Edad Correo Salario
0 65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
1 98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
2 32783 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
3 32785 Heather SmithRoss 59 karen37@example.com 3811.456078
4 98327 Regina RiceCruz 24 ccaldwell@example.net 8305.623411

Asimismo, podemos definir más de una columna como un índice

In [86]:
df.set_index(['ID', 'Nombre'], drop=True)
Out[86]:
Edad Correo Salario
ID Nombre
65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
32783 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
32785 Heather SmithRoss 59 karen37@example.com 3811.456078
98327 Regina RiceCruz 24 ccaldwell@example.net 8305.623411
... ... ... ... ...
97176 James BennettLyons 80 vargasstacey@example.org 6703.123603
31644 Julie WalshMoreno 64 cynthiavargas@example.net 9039.089244
97182 Zachary ReyesMartin 54 fwashington@example.net 4490.081988
97185 Kelly KennedyPalmer 20 kshaw@example.com 1548.094240
31651 Kathryn CollierCook 40 dianafields@example.org 3810.610008

10000 rows × 3 columns

Donde ahora tenemos un multi-índice.

El índice de un dataframe sirve para identificar de manera única a cada elemento del mismo. Lo anterior nos permitirá que podamos acceder a los elementos de una dataframe conociendo su índice. Por ejemplo, considerando de nuevo que el índice es la columna ID

In [89]:
df = df.set_index('ID', drop=True)
df.head()
Out[89]:
Nombre Edad Correo Salario
ID
65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
32783 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
32785 Heather SmithRoss 59 karen37@example.com 3811.456078
98327 Regina RiceCruz 24 ccaldwell@example.net 8305.623411

Supongamos que queremos saber la información de la persona cuyo índice es 98327, entonces nos gustaría que hubiera un camino en Pandas en el que al colocar el índice anterior nos despliegue la información de dicha persona; o, si al ingresar un índice (ID) nos diga si hay alguna persona o no con ese índice dentro de nuestro dataframe.

Lo anterior lo conseguiremos valiéndonos de loc[]:

In [92]:
# Buscamos la informacion de la persona referente al ID = 98327
df.loc[98327]
Out[92]:
Nombre           Regina RiceCruz
Edad                          24
Correo     ccaldwell@example.net
Salario              8305.623411
Name: 98327, dtype: object
In [ ]:
# Lo siguiente nos marcara error debido a que no existe ese indice
# dentro del dataframe:
# df.loc[100000]

loc e iloc ¶

Estos métodos nos permiten seleccionar elementos dentro de una dataframe. El primero de ellos, el método loc[] nos permite seleccionar filas con base en el índice del dataframe (como vimos antes) y también nos permitirá realizar esa selección mediante condicionales.

Para seleccionar filas con base en el índice, basta con colocar dentro de los corchetes el índice de la información (fila) a la cual queremos acceder. Por ejemplo:

In [99]:
# Buscamos la informacion de la persona referente al ID = 32785
df.loc[32785]
Out[99]:
Nombre       Heather SmithRoss
Edad                        59
Correo     karen37@example.com
Salario            3811.456078
Name: 32785, dtype: object
In [100]:
type(df.loc[32785])
Out[100]:
pandas.core.series.Series

y se nos despliega una serie pandas (una columna) con la información almacenada en la fila cuyo índice es 32785, donde esa información abarca los valores que se toma en esa fila para cada una de las columnas del dataframe df.

Asimismo, podemos seleccionar todos los valores de una columna en específico

In [106]:
# Seleecionamos todos los valores de la columna Nombre
df.loc[:, 'Nombre']
Out[106]:
ID
65538       Lisa BradleyTodd
98311      Robert KirbyLewis
32783     Linda HuynhCabrera
32785      Heather SmithRoss
98327        Regina RiceCruz
                ...         
97176     James BennettLyons
31644      Julie WalshMoreno
97182    Zachary ReyesMartin
97185    Kelly KennedyPalmer
31651    Kathryn CollierCook
Name: Nombre, Length: 10000, dtype: object
In [107]:
# Seleecionamos todos los valores de la columna Nombre y Edad
df.loc[:, ['Nombre', 'Edad'] ]
Out[107]:
Nombre Edad
ID
65538 Lisa BradleyTodd 68
98311 Robert KirbyLewis 55
32783 Linda HuynhCabrera 41
32785 Heather SmithRoss 59
98327 Regina RiceCruz 24
... ... ...
97176 James BennettLyons 80
31644 Julie WalshMoreno 64
97182 Zachary ReyesMartin 54
97185 Kelly KennedyPalmer 20
31651 Kathryn CollierCook 40

10000 rows × 2 columns

donde recordemos que una columna es una serie y más de una columna ya es un dataframe, de ahí la diferencia visual que obtuvimos en las anteriores salidas.

Seleccionemos la columna Edad

In [109]:
df.loc[:, 'Edad']
Out[109]:
ID
65538    68
98311    55
32783    41
32785    59
98327    24
         ..
97176    80
31644    64
97182    54
97185    20
31651    40
Name: Edad, Length: 10000, dtype: int64

Así como podíamos realizar filtrados mediante la implementación de condiciones dentro de los dataframes, por ejemplo

In [110]:
df[df.Edad >= 50]
Out[110]:
Nombre Edad Correo Salario
ID
65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
32785 Heather SmithRoss 59 karen37@example.com 3811.456078
65566 Catherine MortonSchroeder 74 aliciajones@example.net 5065.745673
65571 Daniel SolisSmith 72 kathryn72@example.org 852.137703
... ... ... ... ...
97172 Nicholas WoodCantrell 66 schneiderelizabeth@example.net 5578.358249
64404 Beth SilvaWolf 74 gail24@example.org 3834.933689
97176 James BennettLyons 80 vargasstacey@example.org 6703.123603
31644 Julie WalshMoreno 64 cynthiavargas@example.net 9039.089244
97182 Zachary ReyesMartin 54 fwashington@example.net 4490.081988

4980 rows × 4 columns

también lo podemos hacer con loc[]

In [111]:
df.loc[:, 'Edad'] >= 50
Out[111]:
ID
65538     True
98311     True
32783    False
32785     True
98327    False
         ...  
97176     True
31644     True
97182     True
97185    False
31651    False
Name: Edad, Length: 10000, dtype: bool

lo cual nos devuelve una máscara booleana. Luego

In [112]:
df[df.loc[:, 'Edad'] >= 50]
Out[112]:
Nombre Edad Correo Salario
ID
65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
32785 Heather SmithRoss 59 karen37@example.com 3811.456078
65566 Catherine MortonSchroeder 74 aliciajones@example.net 5065.745673
65571 Daniel SolisSmith 72 kathryn72@example.org 852.137703
... ... ... ... ...
97172 Nicholas WoodCantrell 66 schneiderelizabeth@example.net 5578.358249
64404 Beth SilvaWolf 74 gail24@example.org 3834.933689
97176 James BennettLyons 80 vargasstacey@example.org 6703.123603
31644 Julie WalshMoreno 64 cynthiavargas@example.net 9039.089244
97182 Zachary ReyesMartin 54 fwashington@example.net 4490.081988

4980 rows × 4 columns

con lo cual obtenemos el mismo resultado.

Recordemos que podemos colocar el índice dentro de loc[] para que nos arroje la información, en caso de existir, de la persona referente a ese índice. Así como tenemos el índice, que procedía de la columna ID tenemos ciertas limitantes en cuanto al manejo de loc[], el cual es más versatil si el índice es el rango numérico original. Veamos esto, pra lo cual resetearemos el índice:

In [113]:
df = df.reset_index()
df.head()
Out[113]:
ID Nombre Edad Correo Salario
0 65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
1 98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
2 32783 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
3 32785 Heather SmithRoss 59 karen37@example.com 3811.456078
4 98327 Regina RiceCruz 24 ccaldwell@example.net 8305.623411

Ahora bien, podemos también acceder a la información de la persona colocando el índice dentro del loc[] como ya sabemos

In [114]:
df.loc[4]
Out[114]:
ID                         98327
Nombre           Regina RiceCruz
Edad                          24
Correo     ccaldwell@example.net
Salario              8305.623411
Name: 4, dtype: object
In [115]:
df.loc[7000]
Out[115]:
ID                       23083
Nombre         Tanya MannKnapp
Edad                        59
Correo     ularson@example.com
Salario            7462.090363
Name: 7000, dtype: object

Pero ahora la gran ventaja que tenemos es que podemos obtener varias filas de acuerdo a un rango en el índice, esto es

In [116]:
# Accedemos a la informacion de las personas que se encuentran
# entre el indice 5 y 10
df.loc[5:10]
Out[116]:
ID Nombre Edad Correo Salario
5 32796 Deanna WestCraig 48 hhebert@example.org 1268.823293
6 65566 Catherine MortonSchroeder 74 aliciajones@example.net 5065.745673
7 65571 Daniel SolisSmith 72 kathryn72@example.org 852.137703
8 98342 Marisa BishopFerguson 54 ugarcia@example.com 4800.799213
9 65575 David CarpenterWilson 53 danielcole@example.org 6036.172515
10 32808 Robert JacobsonOrtiz 64 katelyn42@example.com 4723.157451

asimismo, podemos combinar

In [117]:
# Accedemos a la informacion de las personas que se encuentran
# entre el indice 5 y 10, pero unicamente nos interesara
# la informacion de la columna Correo
df.loc[5:10, 'Correo']
Out[117]:
5         hhebert@example.org
6     aliciajones@example.net
7       kathryn72@example.org
8         ugarcia@example.com
9      danielcole@example.org
10      katelyn42@example.com
Name: Correo, dtype: object
In [118]:
# Accedemos a la informacion de las personas que se encuentran
# entre el indice 5 y 10, pero unicamente nos interesara
# la informacion de la columna Correo y Salario
df.loc[5:10, ['Correo', 'Salario']]
Out[118]:
Correo Salario
5 hhebert@example.org 1268.823293
6 aliciajones@example.net 5065.745673
7 kathryn72@example.org 852.137703
8 ugarcia@example.com 4800.799213
9 danielcole@example.org 6036.172515
10 katelyn42@example.com 4723.157451

Con lo cual notamos que el manejo de loc[] se vuelve más versátil con el índice original del dataframe. Conclusiones sobre el método loc[]

  • Nos permite acceder a la información del dataframe a partir del índices;
  • nos permite acceder a todos los elementos de una columna o columnas en específico;
  • si el índice es un rango numérico consecutivo, entonces podemos seleccionar rangos de filas.
  • Notamos que el índice que se coloca si incluye a dicho elemento. Por ejemplo, si consideramos df.loc[5:10] se seleccionaran los elementos del índice 5 hasta el índice 10.

Por otro lado, el método iloc[] nos permite selecionar filas y rangos de filas basándose en la posición, independiente de cómo sea el índice. Por ejemplo, consideremos de nuevo el caso donde el índice es la columna ID

In [122]:
df = df.set_index('ID', drop=True)
df.head()
Out[122]:
Nombre Edad Correo Salario
ID
65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
32783 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
32785 Heather SmithRoss 59 karen37@example.com 3811.456078
98327 Regina RiceCruz 24 ccaldwell@example.net 8305.623411

Nosotros podemos acceder a la información del primer elemento del dataframe anterior escribiendo

In [123]:
# info del primer elemento
df.iloc[0]
Out[123]:
Nombre              Lisa BradleyTodd
Edad                              68
Correo     williamsjames@example.org
Salario                  7606.614336
Name: 65538, dtype: object
In [124]:
# info del decimo elemento
df.iloc[10]
Out[124]:
Nombre      Robert JacobsonOrtiz
Edad                          64
Correo     katelyn42@example.com
Salario              4723.157451
Name: 32808, dtype: object

De modo que para iloc[] el índice del dataframe no interesa, esto es, iloc[] únicamente se basa en las posiciones. De tal manera, podemos obtener rangos de filas

In [125]:
# elementos entre la posicion 5 y 10
df.iloc[5:10]
Out[125]:
Nombre Edad Correo Salario
ID
32796 Deanna WestCraig 48 hhebert@example.org 1268.823293
65566 Catherine MortonSchroeder 74 aliciajones@example.net 5065.745673
65571 Daniel SolisSmith 72 kathryn72@example.org 852.137703
98342 Marisa BishopFerguson 54 ugarcia@example.com 4800.799213
65575 David CarpenterWilson 53 danielcole@example.org 6036.172515

Notemos que el valor final del rango, para iloc[], no se contempla. Esto es, a partir de df.iloc[5:10] se considera el elemento en la posición 5 (índice 4) hasta el elemento de la posición 10 (índice 9). Para ver mejor lo dicho antes resetearemos el índice:

In [126]:
df = df.reset_index()
df.head()
Out[126]:
ID Nombre Edad Correo Salario
0 65538 Lisa BradleyTodd 68 williamsjames@example.org 7606.614336
1 98311 Robert KirbyLewis 55 rebeccarhodes@example.com 4210.782545
2 32783 Linda HuynhCabrera 41 nathanshaffer@example.org 9609.605572
3 32785 Heather SmithRoss 59 karen37@example.com 3811.456078
4 98327 Regina RiceCruz 24 ccaldwell@example.net 8305.623411
In [127]:
# elementos entre la posicion 5 y 10
df.iloc[5:10]
Out[127]:
ID Nombre Edad Correo Salario
5 32796 Deanna WestCraig 48 hhebert@example.org 1268.823293
6 65566 Catherine MortonSchroeder 74 aliciajones@example.net 5065.745673
7 65571 Daniel SolisSmith 72 kathryn72@example.org 852.137703
8 98342 Marisa BishopFerguson 54 ugarcia@example.com 4800.799213
9 65575 David CarpenterWilson 53 danielcole@example.org 6036.172515

vemos que los índices van del 5 al 9. La razón de este desfase de uno viene a que el índice del dataframe comienza en 0.

Por otro lado, podemos seleccionar rangos de filas de columnas en específico, pero para colocar las columnas no usaremos su nombre de columna como lo hacíamos con loc[], en su lugar deberemos colocar un número referente al número columna. Por ejemplo, dado que la columna ID es la primera del dataframe, entonces dicha columna tiene asignado el valor de 0, y así sucesivamente para el resto de columnas:

In [130]:
# 5 filas, consideramos la primer columna (ID)
df.iloc[5:10, 0]
Out[130]:
5    32796
6    65566
7    65571
8    98342
9    65575
Name: ID, dtype: int64
In [132]:
# 5 filas, consideramos la primer columna (ID) y la segunda columna (nombre)
df.iloc[5:10, 0:2]
Out[132]:
ID Nombre
5 32796 Deanna WestCraig
6 65566 Catherine MortonSchroeder
7 65571 Daniel SolisSmith
8 98342 Marisa BishopFerguson
9 65575 David CarpenterWilson
In [133]:
# alternativamente
# 5 filas, consideramos la primer columna (ID) y la segunda columna (nombre)
df.iloc[5:10, [0, 1]]
Out[133]:
ID Nombre
5 32796 Deanna WestCraig
6 65566 Catherine MortonSchroeder
7 65571 Daniel SolisSmith
8 98342 Marisa BishopFerguson
9 65575 David CarpenterWilson
In [134]:
# 5 filas, consideramos la primer columna (ID) y la tercer columna (Edad)
df.iloc[5:10, 0:3:2]
Out[134]:
ID Edad
5 32796 48
6 65566 74
7 65571 72
8 98342 54
9 65575 53
In [135]:
# alternativamente
# 5 filas, consideramos la primer columna (ID) y la tercer columna (Edad)
df.iloc[5:10, [0, 2]]
Out[135]:
ID Edad
5 32796 48
6 65566 74
7 65571 72
8 98342 54
9 65575 53

Con lo cual podemos concluir que en iloc[] nos basamos únicamente de las posiciones de las filas y de las columnas, y no de las etiquetas de éstas.