Skip to content

Introducción

En esta sección aprenderemos acerca de cómo leer datos en python, así como el manejo de datos con python.

Para manejar datos en python se usan librerías especiales. En particular se usará la librería pandas para realizar estas operaciones.

El primer paso es llamar las librerías que se utilizarán en la sesión.

1
2
3
import pandas as pd
import numpy as np
import os

La librería pandas es la que nos permite manejar objetos de tipo dataframe que es la estructura de datos usada en python para almacenar la información. La librería numpy nos permitirá crear arreglos y manipularlos de forma más fácil. La librería os nos ayudará a usar funciones y otras utilidades del sistema operativo.

Los códigos mostrados se realizaron en un cuaderno interactivo de python (archivo ipynb) usando Visual Studio Code.

Para una referencia completa, visite la documentación de pandas.

Creando un objeto DataFrame

La forma más sencilla de crear un dataframe es mediante la definición de un diccionario con las listas definidas y posteriormente se usa la función DataFrame del paquete pandas para crear un objeto DataFrame en donde se almacenará la información. El objeto creado hereda las claves del diccionario y los valores se escriben en el dataset.

Para introducir datos de manera manual, se puede usar la siguiente sintaxis:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import pandas as pd

nombres = ["ANGELICA","BRENDA","LILIANA","MARCO","FABIAN","MAURICIO"]
gpo = ["A","A","B","B","C","C"]
puntajes = [10,9,8,8,9,7]

dic = {"nombre":nombres,"grupo":gpo,"puntaje":puntajes}

mi_base = pd.DataFrame(dic)
print(mi_base)

La siguiente imagen muestra el dataframe definido.

Resultado del dataset

Note que el objeto creado es un objeto especial. Si escribimos en la consola el comando type(mi_base), obtenemos la siguiente información.

pandas.core.frame.DataFrame

Como tal, este objeto va a tener diversos métodos para manipularlo o conocer sus propiedades. Consulte la referencia de DataFrame para saber más de sus propiedades.

Lectura de archivos externos

Para leer archivos externos, por ejemplo de tipo csv, se usa la función read_csv de la librería pandas para leer los datos.

El siguiente código muestra cómo leer un archivo que está almacenado en la misma carpeta del directorio de trabajo.

1
2
3
import pandas as pd

datos = pd.read_csv("census.csv")

Como puede observarse, datos es un objeto DataFrame que se define gracias a la función read_csv() de pandas. En este caso, el archivo estaba en la misma carpeta que el directorio de trabajo.

Para conocer cual es el directorio de trabajo, se puede usar el siguiente comando:

1
2
root=os.getcwd()
print(root)

El resultado devolverá la ruta del directorio de trabajo, por ejemplo:

‘c:\Users\Usuario\Documents\proyectos\python\src’

Para modificar el directorio de trabajo, se puede usar el siguiente código:

1
os.chdir("C:\\Users\\Usuario\\Documents\\proyectos\\python\\datos")

Por lo que solo basta copiar los archivos a esta carpeta para poder importarlos sin problema.

Si el archivo se encuentra almacenado en la web, únicamente se debe escribir la dirección entre comillas dentro de la función read_csv() y automáticamente será leido y almacenado en un objeto DataFrame.

El siguiente código ejemplifica su uso:

1
2
3
4
5
import pandas as pa

covid = pa.read_csv("https://covid.ourworldindata.org/data/owid-covid-data.csv")

covid.info()

Exploración de la base

Para conocer la dimensión de un objeto DataFrame, se puede usar el método shape().

1
datos.shape()

Se puede obtener información más detallada de un objeto DataFrame usando el siguiente comando.

1
datos.info()

La siguiente imagen muestra el resultado obtenido de la consola.

Salida del objeto dataframe

Para ver un análisis descriptivo de las variables numéricas datos se puede usar el método describe.

1
datos.describe()

El resultado se muestra a continuación

Análisis descriptivo

Métodos sin argumentos

Note que los métodos anteriores no requieren ningún argumento, porlo que solo se ponen los paréntesis vacíos.

Para visualizar los primeros 5 datos se puede usar este código

1
datos.head(n=5)

La siguiente imagen muestra las primeras 5 observaciones

Primeros 5 datos

De manera similar, los últimos 5 registros se pueden ver con este código

1
datos.tail(n=5)

La siguiente imagen muestra las últimas 5 observaciones

Últimos 5 datos

Argumentos opcionales

Algunos métodos no requieren argumentos, mientras que en otros son opcionales. Los métodos head() y tail() tienen un valor predeterminado de 5.

Al igual que otros lenguajes de programación, es posible acceder a los elementos de un dataframe. Para ello se puede hacer uso del método iloc.

El siguiente código muestra cómo acceder al segundo renglón de un dataframe y el resultado que se obtiene.

1
mi_base.iloc[1,]

El resultado se muestra a continuación

Segundo elemento

Método sin paréntesis

Note que el método iloc no usa paréntesis.

Transformación y manipulación de un dataframe

Al igual que en otros lenguajes de programación, es posible modifcar las tablas en python a través de los métodos de los objetos dataframe proporcionados por el paquete pandas.

En esta sección se abordarán temas acerca de como manipular y transformar bases que estén almacenadas en un objeto dataframe, tales como realizar filtros, unir tablas, agrupar datos, entre otras operaciones.

Filtrado de base

Para filtrar una base, se puede usar el método query() para filtrar una base usando condicionales. A diferencia de otros métodos, se requiere de una expresión entrecomillada con una expresión lógica a evaluarse.

El siguiente ejemplo muestra cómo seleccionar a alumnos del grupo A.

1
2
filtro = mi_base.query('grupo == "A"')
print(filtro)

El resultado se muestra a continuación

Resultado del filtro

Para saber más, consulte la documentación del método query().

Ordenando una base

Para ordenar una base, se usa el método sort.values() en donde se le pasa una lista con los nombres de las variables a ordenar.

El siguiente código muestra su uso. Note que el método requiere al menos el argumento by y se pide que guarde la base ordenada en un nuevo objeto dataframe.

1
2
base_ord = mi_base.sort_values(by=["nombre"])
print(datos_ord)

La siguiente imagen muestra el resultado, note que la base se ha guardado en un nuevo objeto.

Base ordenada

Para más información acerca del método sort.values() consulte la documentación del método sort_values.

Datos agrupados

En el paquete pandas también se incluye un método para crear datos agrupados por una o más variables.

El siguiente código muestra su uso

1
mi_base_agrupada = mi_base.groupby(by=["grupo"])

objeto retornado

El método groupby regresa un objeto DataFrameGroupBy, por lo que no podría ser visualizado. Este objeto se suele utilizar para realizar agregados por cada grupo.

Los datos agrupados son útiles para obtener estadísticas descriptivas por grupos. El siguiente ejemplo ejemplifica su uso mediante el método aggregate().

1
mi_base_agrupada.aggregate(["mean"])

Datos agregados

Para más información visite la documentación del método groupby y cómo realizar agregados.

Uniones de bases

Para realizar una unión de dos o más bases, se usar el método merge() de un dataframe para unirlo con otro. Se puede guardar el nuevo objeto en un nuevo dataframe.

El siguiente ejemplo muestra cómo unir 2 bases que tienen la misma llave.

Alumnos:

nombre grupo puntaje
ANGELICA A 10
BRENDA A 9
FABIAN C 9
LILIANA B 8
MARCO B 8
MAURICIO C 7

Información:

nombre sexo edad
ANGELICA F 19
BRENDA F 29
LILIANA F 28
MARCO M 30
FABIAN M 29
MAURICIO M 30

El siguiente código muestra la unión de las dos bases.

1
2
base = alumnos.merge(informacion,on=["nombre"])
print(base)

En la siguiente imagen se ilustra el resultado.

Resultado del merge

Para saber más sobre cómo unir 2 o más bases o realizar otro tipo de uniones, visite la documentación del método merge.