Introducción a Pandas

Python
code
pandas
Author

Marco Aguirre

Published

August 27, 2025

En este cuaderno veremos los elementos y funciones básicas de la librería Pandas. Los contenidos específicos son:

  1. Que es Pandas.
  2. Dónde encontrar datos.
  3. Carga de Datos.
  4. DataFrames.
  5. Revisando los datos.
  6. Selección de datos por etiqueta.
  7. Selección de datos por posición.

1 ¿Qué es Pandas?

Pandas es una librería de Python con la que puedes trabajar con datos tabulados. Es muy útil para limpiar, analizar y procesar datos.

De acuerdo con Wikipedia: “(…) extensión de NumPy para manipulación y análisis de datos para el lenguaje de programación Python. En particular, ofrece estructuras de datos y operaciones para manipular tablas numéricas y series temporales.”

#immportacion modulos
import pandas as pd
import numpy as np

2 ¿Dónde encontrar datos?

En internet existen repositorios de datos abiertos de los que puedes descargar datasets. Algunos ejemplos:

  1. Kaggle: Sitio web para prácticar y aprender sobre ciencia de datos y machine learning.
  2. UC Irvine Machine Learning Repository: En este repositorio hay más de 500 datasets de diversos temas. Usualmente son útiles para practicar y aprender sobre machine learning.
  3. Catálogo de Datos Abiertos Datos abiertos del Ecuador. . . .

Existe una gran cantidad de datasets disponibles con los que puedes trabajar.

3 Carga de Datos.

Con Pandas puedes cargar datos de archivos externos. por lo general son datos tabulados. Los más comunes son archivos CSV, xlsx (Excel).

# Para importar un archivo csv
datos = pd.read_csv('dataset.csv' , sep=";")
C:\Users\meagu\AppData\Local\Temp\ipykernel_25952\3482028259.py:2: DtypeWarning: Columns (5,7) have mixed types. Specify dtype option on import or set low_memory=False.
  datos = pd.read_csv('dataset.csv' , sep=";")
datos.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 50545 entries, 0 to 50544
Data columns (total 78 columns):
 #   Column                    Non-Null Count  Dtype 
---  ------                    --------------  ----- 
 0   ciclo                     50545 non-null  object
 1   grado                     50545 non-null  int64 
 2   estado_eval               50545 non-null  int64 
 3   codigo                    50545 non-null  object
 4   amie                      50545 non-null  object
 5   nm_regi                   50545 non-null  object
 6   es_regeva                 50545 non-null  int64 
 7   id_zona                   50545 non-null  object
 8   id_dist                   50545 non-null  object
 9   id_prov                   50545 non-null  int64 
 10  id_cant                   50545 non-null  int64 
 11  id_parr                   50545 non-null  int64 
 12  financiamiento            50545 non-null  int64 
 13  sostenimiento             50545 non-null  int64 
 14  tp_sexo                   50545 non-null  int64 
 15  na_eano                   50545 non-null  int64 
 16  tp_area                   50545 non-null  int64 
 17  etnibee                   50545 non-null  object
 18  isec                      50545 non-null  object
 19  quintil                   50545 non-null  object
 20  fex_inev                  50545 non-null  object
 21  inev                      50545 non-null  object
 22  fex_imat                  50545 non-null  object
 23  imat                      50545 non-null  object
 24  fex_ilyl                  50545 non-null  object
 25  ilyl                      50545 non-null  object
 26  fex_icn                   50545 non-null  object
 27  icn                       50545 non-null  object
 28  fex_ifis                  50545 non-null  object
 29  ifis                      50545 non-null  object
 30  fex_iqui                  50545 non-null  object
 31  iqui                      50545 non-null  object
 32  fex_ibio                  50545 non-null  object
 33  ibio                      50545 non-null  object
 34  fex_ies                   50545 non-null  object
 35  ies                       50545 non-null  object
 36  fex_ihis                  50545 non-null  object
 37  ihis                      50545 non-null  object
 38  fex_ifil                  50545 non-null  object
 39  ifil                      50545 non-null  object
 40  fex_ied                   50545 non-null  object
 41  ied                       50545 non-null  object
 42  nl_imat                   50545 non-null  object
 43  nl_ilyl                   50545 non-null  object
 44  nl_icn                    50545 non-null  object
 45  nl_ifis                   50545 non-null  object
 46  nl_iqui                   50545 non-null  object
 47  nl_ibio                   50545 non-null  object
 48  nl_ies                    50545 non-null  object
 49  nl_ihis                   50545 non-null  object
 50  nl_ifil                   50545 non-null  object
 51  nl_ied                    50545 non-null  object
 52  ind_1                     50545 non-null  object
 53  ind_2                     50545 non-null  object
 54  ind_3                     50545 non-null  object
 55  ind_4                     50545 non-null  object
 56  ind_5                     50545 non-null  object
 57  ind_6                     50545 non-null  object
 58  ind_7                     50545 non-null  object
 59  ind_8                     50545 non-null  object
 60  ind_9                     50545 non-null  object
 61  lc_1                      50545 non-null  object
 62  lc_2                      50545 non-null  object
 63  lc_3                      50545 non-null  object
 64  lc_4                      50545 non-null  object
 65  lc_5                      50545 non-null  object
 66  lc_6                      50545 non-null  object
 67  lc_7                      50545 non-null  object
 68  lc_8                      50545 non-null  object
 69  lc_9                      50545 non-null  object
 70  lc_10                     50545 non-null  object
 71  lc_11                     50545 non-null  object
 72  lc_12                     50545 non-null  object
 73  fex_rubrica               50545 non-null  object
 74  estado_rub                50545 non-null  object
 75  fex_lista_cotejo          50545 non-null  object
 76  estado_lc                 50545 non-null  object
 77  fex_honestidad_academica  50545 non-null  object
dtypes: int64(11), object(67)
memory usage: 30.1+ MB
datos.to_excel("excel.xlsx")
# Para importar un archivo de excel
datos_excel = pd.read_excel('excel.xlsx')
# Importamos un archivo 
datos = pd.read_csv('dataset.csv' , sep=";")
# Podemos ver el inicio de un DataFrame con .head()
datos.columns
C:\Users\meagu\AppData\Local\Temp\ipykernel_25952\1594173510.py:2: DtypeWarning: Columns (5,7) have mixed types. Specify dtype option on import or set low_memory=False.
  datos = pd.read_csv('dataset.csv' , sep=";")
Index(['ciclo', 'grado', 'estado_eval', 'codigo', 'amie', 'nm_regi',
       'es_regeva', 'id_zona', 'id_dist', 'id_prov', 'id_cant', 'id_parr',
       'financiamiento', 'sostenimiento', 'tp_sexo', 'na_eano', 'tp_area',
       'etnibee', 'isec', 'quintil', 'fex_inev', 'inev', 'fex_imat', 'imat',
       'fex_ilyl', 'ilyl', 'fex_icn', 'icn', 'fex_ifis', 'ifis', 'fex_iqui',
       'iqui', 'fex_ibio', 'ibio', 'fex_ies', 'ies', 'fex_ihis', 'ihis',
       'fex_ifil', 'ifil', 'fex_ied', 'ied', 'nl_imat', 'nl_ilyl', 'nl_icn',
       'nl_ifis', 'nl_iqui', 'nl_ibio', 'nl_ies', 'nl_ihis', 'nl_ifil',
       'nl_ied', 'ind_1', 'ind_2', 'ind_3', 'ind_4', 'ind_5', 'ind_6', 'ind_7',
       'ind_8', 'ind_9', 'lc_1', 'lc_2', 'lc_3', 'lc_4', 'lc_5', 'lc_6',
       'lc_7', 'lc_8', 'lc_9', 'lc_10', 'lc_11', 'lc_12', 'fex_rubrica',
       'estado_rub', 'fex_lista_cotejo', 'estado_lc',
       'fex_honestidad_academica'],
      dtype='object')

4 DataFrames.

Como ya mencionamos, una Series se puede entender como una tabla con una sola columna, aunque también puedes verla como una lista donde cada elemento tiene una etiqueta, un índice el cual por default es un número entero de la posición del elemento.

Para crear una serie partiendo de una lista:

serie = pd.Series(['caracteres', 3.1416, True])

# Imprimimos la serie que creamos
print(serie)

# Información de la serie
print("\nTipo de dato: ", type(serie))
print("Tamaño: ", serie.size)
0    caracteres
1        3.1416
2          True
dtype: object

Tipo de dato:  <class 'pandas.core.series.Series'>
Tamaño:  3

Observamos cómo cada elemento de la lista ahora tiene un índice. Podemos especificar el índice explícitamente:

serie = pd.Series(data = ['caracteres', 3.1416, True],
                  index = ['1', '2', '3'])

print(serie)

# Podemos obtener un elemento con su índice
print(serie['Elemento 1'])
Elemento 1    caracteres
Elemento 2        3.1416
Elemento 2          True
dtype: object
caracteres

Los DataFrames son más complejos que las Series, ya que ahora tenemos una tabla con varias columnas. En este caso, tendremos índices para cada fila y también etiquetas para las columnas. Los valores default son también enteros que indican la posición.

# Creemos DataFrame con una matriz aleatoria.
df = pd.DataFrame(data = np.random.rand(4, 4))

print("Tipo: ", type(df)) # Tipo de objeto
print("Tamaño: ", df.size)  #El tamaño es igual al número de celdas
print("Tamaño: ", df.info())
df # Visualizamos el DataFrame completo
Tipo:  <class 'pandas.core.frame.DataFrame'>
Tamaño:  16
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   0       4 non-null      float64
 1   1       4 non-null      float64
 2   2       4 non-null      float64
 3   3       4 non-null      float64
dtypes: float64(4)
memory usage: 260.0 bytes
Tamaño:  None
0 1 2 3
0 0.313387 0.897866 0.445509 0.413369
1 0.584700 0.398930 0.613012 0.103134
2 0.201942 0.184334 0.419727 0.610008
3 0.673399 0.149493 0.660942 0.542672
# Podemos crear DataFrames a partir de diccionarios 
df_dict = pd.DataFrame({
    'Nombre':['Marco', 'Esteban', 'Antonio'],
    'Edad':[32, 40, 1534],
    'Altura':[1.82, 1.60, 1.50],},
    index = ['Persona 1', 'Persona 2', 'Persona 3']) # Especificamos índice
df_dict
Nombre Edad Altura
Persona 1 Marco 32 1.82
Persona 2 Esteban 40 1.60
Persona 3 Antonio 1534 1.50

Ejercicio: - Crea un DataFrame con una matriz de unos con dimensión (4, 3) - Asigna números enteros pares como índice. - Asigna letras como columnas.

#
da = [1,1,1]
#ky = { for x in []}
df_dict = pd.DataFrame({
    'a':[1,1,1],
    'b':da,
    'c':da,
    'd':da,
    },
    index = [2,4,6]) # Especificamos índice
df_dict
a b c d
2 1 1 1 1
4 1 1 1 1
6 1 1 1 1

5 Revisando los datos.

Para visualizar los datos de un DataFrame, tenemos dos opciones:

# Mostramos las primeras 7 filas.
df.head(n = 7)

# Mostramos las últimas 4 filas.
df.tail(n = 4)

Si queremos ver un DataFrame completo, lo ponemos solo en una celda.

# Para ver todo el DataFrame
df
data = pd.read_csv("dataset.csv" , sep=";")
C:\Users\meagu\AppData\Local\Temp\ipykernel_25952\1555053127.py:1: DtypeWarning: Columns (5,7) have mixed types. Specify dtype option on import or set low_memory=False.
  data = pd.read_csv("dataset.csv" , sep=";")
data.head(n = 3)
ciclo grado estado_eval codigo amie nm_regi es_regeva id_zona id_dist id_prov ... lc_8 lc_9 lc_10 lc_11 lc_12 fex_rubrica estado_rub fex_lista_cotejo estado_lc fex_honestidad_academica
0 2023-2024 10 2 0BY3566978 01H00655 2 1 6 01D02 1 ... 24,31269711 2 2 20,73730047
1 2023-2024 10 2 0EYB576428 01H00655 2 1 6 01D02 1 ... 24,31269711 2 2 20,73730047
2 2023-2024 10 2 0LXC578175 01H00655 2 1 6 01D02 1 ... 24,31269711 2 2 20,73730047

3 rows × 78 columns

data.tail(n = 4)
ciclo grado estado_eval codigo amie nm_regi es_regeva id_zona id_dist id_prov ... lc_8 lc_9 lc_10 lc_11 lc_12 fex_rubrica estado_rub fex_lista_cotejo estado_lc fex_honestidad_academica
50541 2023-2024 4 2 LQZJ544557 22H00530 3 2 2 22D02 22 ... 0 0 0 0 0 19,12987428 2 15,30389943 2
50542 2023-2024 4 2 P33E565302 22H00530 3 2 2 22D02 22 ... 0 0 0 0 0 19,12987428 2 15,30389943 2
50543 2023-2024 4 2 PLBA561287 22H00530 3 2 2 22D02 22 ... 0 0 0 0 0 19,12987428 2 15,30389943 2
50544 2023-2024 4 2 PS7V552528 22H00530 3 2 2 22D02 22 ... 0 0 0 0 0 19,12987428 2 15,30389943 2

4 rows × 78 columns

Además de consultar partes del DataFrame, también podemos consultar las etiquetas en las filas y las columnas, así como todos los valores del DataFrame.

df = data
columnas = df.columns  # Obtenemos columnas
indice = df.index  # Obtenemos filas
valores = df.values  # Obtenemos valores

Veamos un ejemplo de esto:

columnas = df_dict.columns
filas = df_dict.index
valores = df_dict.values

print('Columnas: ', columnas, '\nFilas: ', filas)
print(valores, type(valores))  # Los valores son una matriz de NumPy!!

df_dict   # Recordamos el DataFrame de donde obtenemos estos valores
Columnas:  Index(['a', 'b', 'c', 'd'], dtype='object') 
Filas:  Index([2, 4, 6], dtype='int64')
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]] <class 'numpy.ndarray'>
a b c d
2 1 1 1 1
4 1 1 1 1
6 1 1 1 1

Finalmente, cuando tenemos un conjunto de datos, nos será útil hacer un análisis inicial (exploratorio) de los datos.

# Describimos en general el DataFrame
df.describe()

Por ejemplo, obtenemos una descripción del DataFrame de la densidad poblacional:

   # Recordamos el DataFrame de donde obtenemos estos valores
data.describe()
grado estado_eval es_regeva id_prov id_cant id_parr financiamiento sostenimiento tp_sexo na_eano tp_area
count 50545.000000 50545.000000 50545.000000 50545.000000 50545.000000 50545.000000 50545.000000 50545.000000 50545.000000 50545.000000 50545.000000
mean 6.034781 1.969275 1.514255 12.869720 1290.180552 129050.093303 1.704541 2.758987 1.501316 2010.339717 1.644653
std 2.728360 0.172574 0.499802 7.191719 718.664646 71870.803082 0.805489 1.230177 0.500003 3.325834 0.478623
min 3.000000 1.000000 1.000000 1.000000 101.000000 10101.000000 1.000000 1.000000 1.000000 2000.000000 1.000000
25% 4.000000 2.000000 1.000000 9.000000 901.000000 90112.000000 1.000000 1.000000 1.000000 2008.000000 1.000000
50% 7.000000 2.000000 2.000000 12.000000 1213.000000 121350.000000 1.000000 3.000000 2.000000 2011.000000 2.000000
75% 10.000000 2.000000 2.000000 17.000000 1701.000000 170155.000000 2.000000 4.000000 2.000000 2013.000000 2.000000
max 10.000000 2.000000 2.000000 90.000000 9004.000000 900451.000000 3.000000 4.000000 2.000000 2016.000000 2.000000
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 50545 entries, 0 to 50544
Data columns (total 78 columns):
 #   Column                    Non-Null Count  Dtype 
---  ------                    --------------  ----- 
 0   ciclo                     50545 non-null  object
 1   grado                     50545 non-null  int64 
 2   estado_eval               50545 non-null  int64 
 3   codigo                    50545 non-null  object
 4   amie                      50545 non-null  object
 5   nm_regi                   50545 non-null  object
 6   es_regeva                 50545 non-null  int64 
 7   id_zona                   50545 non-null  object
 8   id_dist                   50545 non-null  object
 9   id_prov                   50545 non-null  int64 
 10  id_cant                   50545 non-null  int64 
 11  id_parr                   50545 non-null  int64 
 12  financiamiento            50545 non-null  int64 
 13  sostenimiento             50545 non-null  int64 
 14  tp_sexo                   50545 non-null  int64 
 15  na_eano                   50545 non-null  int64 
 16  tp_area                   50545 non-null  int64 
 17  etnibee                   50545 non-null  object
 18  isec                      50545 non-null  object
 19  quintil                   50545 non-null  object
 20  fex_inev                  50545 non-null  object
 21  inev                      50545 non-null  object
 22  fex_imat                  50545 non-null  object
 23  imat                      50545 non-null  object
 24  fex_ilyl                  50545 non-null  object
 25  ilyl                      50545 non-null  object
 26  fex_icn                   50545 non-null  object
 27  icn                       50545 non-null  object
 28  fex_ifis                  50545 non-null  object
 29  ifis                      50545 non-null  object
 30  fex_iqui                  50545 non-null  object
 31  iqui                      50545 non-null  object
 32  fex_ibio                  50545 non-null  object
 33  ibio                      50545 non-null  object
 34  fex_ies                   50545 non-null  object
 35  ies                       50545 non-null  object
 36  fex_ihis                  50545 non-null  object
 37  ihis                      50545 non-null  object
 38  fex_ifil                  50545 non-null  object
 39  ifil                      50545 non-null  object
 40  fex_ied                   50545 non-null  object
 41  ied                       50545 non-null  object
 42  nl_imat                   50545 non-null  object
 43  nl_ilyl                   50545 non-null  object
 44  nl_icn                    50545 non-null  object
 45  nl_ifis                   50545 non-null  object
 46  nl_iqui                   50545 non-null  object
 47  nl_ibio                   50545 non-null  object
 48  nl_ies                    50545 non-null  object
 49  nl_ihis                   50545 non-null  object
 50  nl_ifil                   50545 non-null  object
 51  nl_ied                    50545 non-null  object
 52  ind_1                     50545 non-null  object
 53  ind_2                     50545 non-null  object
 54  ind_3                     50545 non-null  object
 55  ind_4                     50545 non-null  object
 56  ind_5                     50545 non-null  object
 57  ind_6                     50545 non-null  object
 58  ind_7                     50545 non-null  object
 59  ind_8                     50545 non-null  object
 60  ind_9                     50545 non-null  object
 61  lc_1                      50545 non-null  object
 62  lc_2                      50545 non-null  object
 63  lc_3                      50545 non-null  object
 64  lc_4                      50545 non-null  object
 65  lc_5                      50545 non-null  object
 66  lc_6                      50545 non-null  object
 67  lc_7                      50545 non-null  object
 68  lc_8                      50545 non-null  object
 69  lc_9                      50545 non-null  object
 70  lc_10                     50545 non-null  object
 71  lc_11                     50545 non-null  object
 72  lc_12                     50545 non-null  object
 73  fex_rubrica               50545 non-null  object
 74  estado_rub                50545 non-null  object
 75  fex_lista_cotejo          50545 non-null  object
 76  estado_lc                 50545 non-null  object
 77  fex_honestidad_academica  50545 non-null  object
dtypes: int64(11), object(67)
memory usage: 30.1+ MB

6 Selección de datos.

Podemos seleccionar una o varias columnas específicas de un DataFrame utilizando las etiquetas. Se crea un nuevo DataFrame con las columnas especificadas.

De manera similar, podemos seleccionar filas utilizando el índice. Podemos seleccionar una o varias filas y se crea también un nuevo DataFrame

Para seleccionar utilizando las etiquetas (nombres de filas y columnas) usamos el método loc(). Funciona como sigue:

df = data
# Seleccionamos una sola columna.
serie_columna = df.loc[:, ['Columna1']]

# Seleccionamos más de una columna.
df_columnas = df.loc[:, ['Columna1','Columna2']]

# Seleccionamos más de una fila.
df_filas = df.loc[['Indice1', 'Indice2'], :]
data.columns
Index(['ciclo', 'grado', 'estado_eval', 'codigo', 'amie', 'nm_regi',
       'es_regeva', 'id_zona', 'id_dist', 'id_prov', 'id_cant', 'id_parr',
       'financiamiento', 'sostenimiento', 'tp_sexo', 'na_eano', 'tp_area',
       'etnibee', 'isec', 'quintil', 'fex_inev', 'inev', 'fex_imat', 'imat',
       'fex_ilyl', 'ilyl', 'fex_icn', 'icn', 'fex_ifis', 'ifis', 'fex_iqui',
       'iqui', 'fex_ibio', 'ibio', 'fex_ies', 'ies', 'fex_ihis', 'ihis',
       'fex_ifil', 'ifil', 'fex_ied', 'ied', 'nl_imat', 'nl_ilyl', 'nl_icn',
       'nl_ifis', 'nl_iqui', 'nl_ibio', 'nl_ies', 'nl_ihis', 'nl_ifil',
       'nl_ied', 'ind_1', 'ind_2', 'ind_3', 'ind_4', 'ind_5', 'ind_6', 'ind_7',
       'ind_8', 'ind_9', 'lc_1', 'lc_2', 'lc_3', 'lc_4', 'lc_5', 'lc_6',
       'lc_7', 'lc_8', 'lc_9', 'lc_10', 'lc_11', 'lc_12', 'fex_rubrica',
       'estado_rub', 'fex_lista_cotejo', 'estado_lc',
       'fex_honestidad_academica'],
      dtype='object')
# Seleccionamos 
data2 = data[["ciclo","grado"]].copy()
data2["grado"].unique()
array([10,  4,  7,  3], dtype=int64)
data2[data2["grado"].isin([7,3])].head()
ciclo grado
69 2023-2024 7
70 2023-2024 7
71 2023-2024 7
72 2023-2024 7
73 2023-2024 7
Requirement already satisfied: altair[all] in c:\users\meagu\anaconda3\lib\site-packages (5.0.1)
Requirement already satisfied: jinja2 in c:\users\meagu\anaconda3\lib\site-packages (from altair[all]) (3.1.4)
Requirement already satisfied: jsonschema>=3.0 in c:\users\meagu\anaconda3\lib\site-packages (from altair[all]) (4.23.0)
Requirement already satisfied: numpy in c:\users\meagu\anaconda3\lib\site-packages (from altair[all]) (1.26.4)
Requirement already satisfied: pandas>=0.18 in c:\users\meagu\anaconda3\lib\site-packages (from altair[all]) (2.2.3)
Requirement already satisfied: toolz in c:\users\meagu\anaconda3\lib\site-packages (from altair[all]) (0.12.0)
Requirement already satisfied: attrs>=22.2.0 in c:\users\meagu\anaconda3\lib\site-packages (from jsonschema>=3.0->altair[all]) (23.1.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in c:\users\meagu\anaconda3\lib\site-packages (from jsonschema>=3.0->altair[all]) (2023.7.1)
Requirement already satisfied: referencing>=0.28.4 in c:\users\meagu\anaconda3\lib\site-packages (from jsonschema>=3.0->altair[all]) (0.30.2)
Requirement already satisfied: rpds-py>=0.7.1 in c:\users\meagu\anaconda3\lib\site-packages (from jsonschema>=3.0->altair[all]) (0.10.6)
Requirement already satisfied: python-dateutil>=2.8.2 in c:\users\meagu\anaconda3\lib\site-packages (from pandas>=0.18->altair[all]) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in c:\users\meagu\anaconda3\lib\site-packages (from pandas>=0.18->altair[all]) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in c:\users\meagu\anaconda3\lib\site-packages (from pandas>=0.18->altair[all]) (2023.3)
Requirement already satisfied: MarkupSafe>=2.0 in c:\users\meagu\anaconda3\lib\site-packages (from jinja2->altair[all]) (2.0.1)
Requirement already satisfied: six>=1.5 in c:\users\meagu\anaconda3\lib\site-packages (from python-dateutil>=2.8.2->pandas>=0.18->altair[all]) (1.16.0)
Note: you may need to restart the kernel to use updated packages.
WARNING: altair 5.0.1 does not provide the extra 'all'

También puedes seleccionar al mismo tiempo columnas y filas:

Ejercicio: - Del DataFrame de densidad poblacional, filtra las columnas de población y área, y las filas de Singapore, Bangladesh y Lebanon.

#

7 Selección de datos por posición.

En la sección anterior, seleccionamos dado a etiquetas, esto es, con los nombres de las filas y las columnas. Podemos hacer lo mismo pero está vez con la posición. Para esto, en lugar de loc() y at(), usamos iloc() y iat().

# Seleccionamos las primeras 2 columnas.
df_columnas = df.iloc[:, 0:1]

# Seleccionamos las últimas 3 filas
df_filas = df.iloc[-3:, :]

# Elemento unico
dato = df.iat[0, 0]

Retomamos el ejemplo .

Ejercicio: - Del DataFrame del data, filtra y quédate solo con columnas y filas pares.

# To Do