Autor: Luis Fernando Apáez Álvarez
-Curso PyM-
Clase 3: Profundizando en Pandas
Fecha: 29 de noviembre del 2022
En esta clase continuaremos viendo más conceptos sobre el manejo de dataframes en pandas.
A lo largo de esta clase trabajaremos con datos falsos disposibles en la siguiente librería
# Lo siguiente hace que no se vean las advertencias al ejecutar
# ciertos codigos
import warnings
warnings.filterwarnings('ignore')
# 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
# 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
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:
# numero aleatorio entero entre el 0 y el 99
fake.random_int(0, 100)
66
# 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:
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()
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 |
df.tail()
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 |
# tenemos 10000 registros y 4 columnas
df.shape
(10000, 4)
Notamos que por defecto el índice del dataframe es una numeración del 0 al 9999
# accedemos al atributo de indice
df.index
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:
# Al definir un set garantizaremos elementos unicos
ID = set(np.random.randint(10000,100000) for i in range(11000))
len(ID)
10342
Convertimos a lista y reducimos a 10000 elementos:
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
df['ID'] = ID
df.head()
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
df.ID.unique().shape
(10000,)
Ahora bien, podemos definir la columna ID
como el índice de nuestro dataframe mediante el método set_index()
como sigue
# 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)
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
df.head()
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
df = df.set_index('ID', drop=True)
df.head()
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:
df = df.reset_index()
df.head()
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
df.set_index(['ID', 'Nombre'], drop=True)
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
df = df.set_index('ID', drop=True)
df.head()
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[]
:
# Buscamos la informacion de la persona referente al ID = 98327
df.loc[98327]
Nombre Regina RiceCruz Edad 24 Correo ccaldwell@example.net Salario 8305.623411 Name: 98327, dtype: object
# Lo siguiente nos marcara error debido a que no existe ese indice
# dentro del dataframe:
# df.loc[100000]
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:
# Buscamos la informacion de la persona referente al ID = 32785
df.loc[32785]
Nombre Heather SmithRoss Edad 59 Correo karen37@example.com Salario 3811.456078 Name: 32785, dtype: object
type(df.loc[32785])
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
# Seleecionamos todos los valores de la columna Nombre
df.loc[:, 'Nombre']
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
# Seleecionamos todos los valores de la columna Nombre y Edad
df.loc[:, ['Nombre', 'Edad'] ]
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
df.loc[:, 'Edad']
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
df[df.Edad >= 50]
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[]
df.loc[:, 'Edad'] >= 50
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
df[df.loc[:, 'Edad'] >= 50]
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:
df = df.reset_index()
df.head()
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
df.loc[4]
ID 98327 Nombre Regina RiceCruz Edad 24 Correo ccaldwell@example.net Salario 8305.623411 Name: 4, dtype: object
df.loc[7000]
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
# Accedemos a la informacion de las personas que se encuentran
# entre el indice 5 y 10
df.loc[5:10]
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
# 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']
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
# 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']]
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[]
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
df = df.set_index('ID', drop=True)
df.head()
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
# info del primer elemento
df.iloc[0]
Nombre Lisa BradleyTodd Edad 68 Correo williamsjames@example.org Salario 7606.614336 Name: 65538, dtype: object
# info del decimo elemento
df.iloc[10]
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
# elementos entre la posicion 5 y 10
df.iloc[5:10]
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:
df = df.reset_index()
df.head()
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 |
# elementos entre la posicion 5 y 10
df.iloc[5:10]
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:
# 5 filas, consideramos la primer columna (ID)
df.iloc[5:10, 0]
5 32796 6 65566 7 65571 8 98342 9 65575 Name: ID, dtype: int64
# 5 filas, consideramos la primer columna (ID) y la segunda columna (nombre)
df.iloc[5:10, 0:2]
ID | Nombre | |
---|---|---|
5 | 32796 | Deanna WestCraig |
6 | 65566 | Catherine MortonSchroeder |
7 | 65571 | Daniel SolisSmith |
8 | 98342 | Marisa BishopFerguson |
9 | 65575 | David CarpenterWilson |
# alternativamente
# 5 filas, consideramos la primer columna (ID) y la segunda columna (nombre)
df.iloc[5:10, [0, 1]]
ID | Nombre | |
---|---|---|
5 | 32796 | Deanna WestCraig |
6 | 65566 | Catherine MortonSchroeder |
7 | 65571 | Daniel SolisSmith |
8 | 98342 | Marisa BishopFerguson |
9 | 65575 | David CarpenterWilson |
# 5 filas, consideramos la primer columna (ID) y la tercer columna (Edad)
df.iloc[5:10, 0:3:2]
ID | Edad | |
---|---|---|
5 | 32796 | 48 |
6 | 65566 | 74 |
7 | 65571 | 72 |
8 | 98342 | 54 |
9 | 65575 | 53 |
# alternativamente
# 5 filas, consideramos la primer columna (ID) y la tercer columna (Edad)
df.iloc[5:10, [0, 2]]
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.