Está en la página 1de 32

Análisis de datos con Pandas

© ADR Infor SL
Indice
Competencias y Resultados de Aprendizaje desarrollados en esta unidad 3
Análisis de datos con Pandas 4
Introducción a la librería Pandas ¿qué es un dataframe? 4
Creación de un dataframe a partir de un diccionario 4
Cómo importar datos desde un fichero de texto plano (txt, csv...) 5
Selección de datos en un dataframe Pandas 6
Métodos útiles de un dataframe Pandas 8
Eliminar duplicados, valores erróneos y columnas de un dataframe Pandas 10
Interpolación de datos 11
Filtrar datos en un dataframe Pandas 12
Ordenación valores en un dataframe Pandas 13
Crear columnas en un dataframe para cadenas de texto 15
Crear columnas en un dataframe a partir de un diccionario con map 16
Crear columnas en un dataframe a partir de funciones lambda 18
Crear columnas en un dataframe a partir de funciones condicionales 19
Renombrar y reordenar columnas de un dataframe Pandas 20
Cómo crear pivot tables en Pandas 21
Uso de groupby en Pandas 22
Concatenación de dataframes (union) 26
Combinación de dataframes 27
Combinación con Pandas Merge 29
Resumen 31
Recursos 32
Glosario. 32

2/32
Análisis de datos con Pandas

Competencias y Resultados de Aprendizaje desarrollados


en esta unidad
Competencia:
Aprender el lenguaje Python para Data Science con las librerías Numpy y Pandas.
Resultados de Aprendizaje:

Realizar cálculos sobre los datos importados


Transformar grandes volúmenes de datos
Creación de estructuras de dataframes para el análisis de información.
Interpolar los datos y crear columnas calculadas.
Agrupar y concatenar diferentes dataframes para análisis global con todas las fuentes de datos.

3/32
Análisis de datos con Pandas

Análisis de datos con Pandas


En esta unidad veremos en detalle la librería Pandas con toda la versatilidad que nos ofrece para la manipulación y
transformación de datos.

Al finalizar esta unidad conseguirá tener limpios y transformados sus datos con las agregaciones y segmentaciones
necesarias para futuros análisis.

Introducción a la librería Pandas ¿qué es un dataframe?


Pandas es una librería de análisis de datos con las siguientes características:

Base numérica

Construida sobre Numpy aprovechando todo su potencial de cálculo.

BigData

Permite manipular gran cantidad de datos de fuentes heterogéneas (BigData).

Estructura de datos

El elemento clave que contendrá nuestros datos tras importarlos será el dataframe.

Múltiples tipos de datos

A diferencia de un array de Numpy 2D que solo podía contener 1 tipo de dato, un dataframe puede contener
diferentes tipos de datos en sus columnas.

Importación

Por convención, para importar Pandas en nuestro script de Python se utiliza: import pandas as pd

La estructura de un dataframe es la siguiente:

En este vídeo se explica estas características de Pandas en detalle:

Introducción a la librería Pandas ¿qué es un dataframe?

Creación de un dataframe a partir de un diccionario

4/32
Análisis de datos con Pandas

Podemos crear dataframes a partir de un diccionario. Imaginemos que queremos construir el siguiente dataframe:

Para ello es necesario crear un diccionario donde las claves serán las columnas y los valores serán los datos
columna a columna que forman la observación (registro):

En el siguiente vídeo se muestra cómo crear dataframes a partir de diccionarios paso a paso:

Creación de un dataframe a partir de un diccionario

Cómo importar datos desde un fichero de texto plano (txt,


csv...)
Un fichero en texto plano es una fuente de datos donde los diferentes valores están separados por algún carácter
como espacio, coma o punto y coma.

5/32
Análisis de datos con Pandas

Importar fichero CSV

La sintaxis es la siguiente: df = pd.read_csv(r'file.csv', delimiter=";", encoding = "ISO-8859-1", index_col = 0,


nrows=5, header=None)

file.csv sería la ruta completa donde se tiene el fichero seguida del nombre del fichero y su extensión csv.

Importar fichero TXT

En el caso de un fichero txt separado por espacios, la sintaxis para importar sería: df_data =
pd.read_csv("nombre_fichero.txt', delimiter=" ", header=None)

nombre_fichero.txt sería la ruta completa donde se tiene el fichero seguida del nombre del fichero y su extensión
txt.

En el siguiente vídeo se explica paso a paso cómo importar estas fuentes de datos, cuáles son sus parámetros
obligatorios y por defecto y haremos un ejercicio para poner a prueba sus conocimientos:

Cómo importar datos desde un fichero de texto plano (txt, csv...)

Importación CSV

Cargar los primeros 10.000 registros del fichero CSV de tráfico de peatones (delimitador “;”) indicando como
índice del Dataframe la columna “IDENTIFICADOR” (2).

Adjuntos

PEATONES_2020.csv
35851.51kb

1. Cree un script con las sentencias necesarias en Jupyter.

Selección de datos en un dataframe Pandas

6/32
Análisis de datos con Pandas

La selección de datos en un dataframe es muy intuitiva y se puede realizar a través de 2 vías. Vamos a partir del
siguiente dataframe como ejemplo:

Método Convencional

Selección de columnas: df[["nombre_columna_1","nombre_columna_2"]]

Selección de filas: df[ind_inicial : ind_final(excluido)]

7/32
Análisis de datos con Pandas

LOC (basada en etiquetas) / ILOC (basado en índices de posición)

Sintaxis LOC: df.loc["lista_nombres_filas","lista_nombres_columnas"]

Sintaxis ILOC: df.iloc["lista_índices_filas","lista_índices_columnas"]

Es muy importante que visualice el siguiente vídeo para ver estos conceptos paso a paso y entienda las
limitaciones del método convencional para determinadas selecciones:

Selección de datos en un dataframe Pandas

Métodos útiles de un dataframe Pandas


Al igual que sucedía con Numpy, Pandas dispone de multitud de métodos que podemos aplicar sobre un dataframe
y que nos serán muy útiles para poder obtener información de nuestros datos.

En las siguientes tablas se muestran los métodos típicos a la hora de explorar un dataframe.

Vamos a partir del siguiente dataframe para entender cada ejemplo indicado:

8/32
Análisis de datos con Pandas

Información básica Dataframe

Información estadística Dataframe

En el siguiente vídeo se explican todos estos métodos en detalle y además realizará un ejercicio para dar
respuesta a las preguntas planteadas sobre el dataframe cargado.

Tiene todas las fuentes de datos y los scripts de solución en la pestaña "Recursos":

Métodos útiles de un dataframe Pandas

Métodos útiles de un dataframe Pandas

9/32
Análisis de datos con Pandas

A partir del dataframe con la información de tráfico peatonal adjunto, obtener la información básica del dataframe y
la información estadística:

¿Cuántos valores erróneos tiene la columna “PEATONES”?


¿Cuál es la mediana de la variable “PEATONES”?
¿Cuál es el rango de fechas de nuestros datos?
Crear una columna acumulativa del número de peatones (método cumsum)

Adjuntos

PEATONES_2020_mod.csv
35589.4kb

1. Cree las sentencias necesarias en Jupyter para solucionar el enunciado.

Eliminar duplicados, valores erróneos y columnas de un


dataframe Pandas
En este apartado veremos la limpieza básica de datos sobre un dataframe de Pandas.

Remover Duplicados en todas las columnas

La sintaxis es df = df.drop_duplicates()

Remover Duplicados en 1 columna

La sintaxis es df = df.drop_duplicates("nombre_columna")

10/32
Análisis de datos con Pandas

Eliminar nan

Para eliminar valores erróneos (Not a number) la sintaxis es la siguiente teniendo en cuenta eliminar NaN en
todo el dataframe o bien en 1 columna: df.dropna() / df["nombre_columna"].dropna():

Eliminar columna

Para eliminar una columna debemos utilizar la siguientes sintaxis df.drop("nombre_columna', axis=1 ,

inplace=True)

Es importante poner en práctica todos estos conceptos puesto que son muy utilizados a la hora de tratar nuestras
fuentes de datos.

En el siguiente vídeo se explica en detalle y se propone un ejercicio práctico:

Eliminar duplicados, valores erróneos y columnas de un dataframe Pandas

Interpolación de datos
La interpolación de datos significa obtener un nuevo valor a partir del conjunto de datos disponibles.

Es muy utilizada en los siguientes casos:

Granularidad

Si necesitamos mayor granularidad en nuestros datos, por ejemplo, tenemos datos a nivel diario y necesitamos
interpolar para obtener datos a nivel horario.

11/32
Análisis de datos con Pandas

No descartar registros

Si existen valores erróneos y NO queremos descartar el registro, puesto que es probable que la información del
resto de columnas del registro sea de interés para los futuros análisis.

Para interpolar tenemos 2 estrategias:

Fillna

Completamos los valores NaN con un valor concreto. La sintaxis sería df["nombre_columna"].fillna(valor, inplace
= True). "Valor" puede ser por ejemplo la mediana de esa columna del dataframe.

Interpolate

Realizamos una interpolación teniendo en cuenta los datos colindantes. La sintaxis sería df.interpolate(method
='linear', limit_direction ='forward')

En el siguiente vídeo visualizará estos conceptos con un ejemplo práctico para que vea las diferencias de utilizar
ambas estrategias:

Interpolación de datos

Filtrar datos en un dataframe Pandas


Probablemente, el filtrado de datos en un dataframe es la acción de transformación y manipulación de datos más
utilizada.

Pandas nos permite realizar el filtrado de datos en base a determinadas condiciones de una manera muy sencilla
con la siguiente sintaxis:

df[df["column_name"] <--> condición]

Para ilustrar el filtrado de datos, vamos a partir del siguiente dataframe:

12/32
Análisis de datos con Pandas

Existen multitud de tipos de filtrado:

Condición en una columna numérica

Ejemplo "Filtrar registros con Temperatura > 22":

Condición en una columna string

Ejemplo "Filtrar registros del país "España"":

Condición en una columna fecha

Ejemplo "Filtrar registros del día 02/01/2021":

Condición no nulo (NaN)

Ejemplo "Filtrar registros cuyo valor de temperatura sea no nulo":

Múltiples condiciones

Ejemplo "Filtrar registros del país "México" que sean no nulos":

Visualice el siguiente vídeo para ver estos ejemplos en detalle y realizar un ejercicio práctico que le será muy útil:

Filtrar datos en un dataframe Pandas

Ordenación valores en un dataframe Pandas

13/32
Análisis de datos con Pandas

En numerosas ocasiones nos enfrentamos con la necesidad de ordenar un dataframe en base a los valores de una
determinada columna. Esto es muy sencillo utilizando el método de Pandas "sort_values" que tiene la siguiente
sintaxis:

df.sort_values(by="nombre_columna",ascending =True/False)

Podemos ordenar nuestros datos basándonos en 2 tipos de datos, partiremos del siguiente dataframe para
ilustrarlo:

Ordenación en base a columna numérica

14/32
Análisis de datos con Pandas

Ordenación en base a columna de texto (alfabéticamente)

En el siguiente vídeo se muestran estas 2 vías para ordenar datos y además cómo poder combinar esta
funcionalidad con los conceptos de selección de datos para por ejemplo obtener un TOP de nuestros datos:

Ordenación valores en un dataframe Pandas

Crear columnas en un dataframe para cadenas de texto


En un dataframe no solo tendremos las columnas con los datos originales, sino que también podremos crear
nuevas columnas de interés tal y como iremos viendo en los siguientes apartados.

En primer lugar, podemos crear columnas basándonos en columnas previas de tal manera que el resultado sea una
columna de tipo texto.

A continuación se muestran 3 modos de crear columnas basadas en texto partiendo de un dataframe ya conocido:

Concatenación columnas de tipo string

Ejemplo "Crear columna con la concatenación de país - capital":

15/32
Análisis de datos con Pandas

Concatenación de columnas string + int/float

Ejemplo "Crear columna con la concatenación de país - superficie":

Extracción izquierda / derecha / central

Ejemplo "Crear columna etiqueta del país con las 2 primeras letras":

En el siguiente vídeo se explican cada uno de estos modos para crear columnas basadas en texto:

Crear columnas en un dataframe para cadenas de texto

Crear columnas en un dataframe a partir de un diccionario


con map
Ya conocemos qué son los diccionarios en Python y hemos indicado que son muy utilizados para el análisis de
datos.

Un diccionario lo podemos utilizar para mapear una columna del dataframe con las claves del diccionario
retornando en una nueva columna del dataframe los valores del diccionario.

Podríamos partir del siguiente dataframe y del diccionario con nombre "dic_pc":

16/32
Análisis de datos con Pandas

La pregunta sería: ¿Podemos crear una columna en el dataframe con el continente asociado a partir del
diccionario? Sí que es posible utilizando la función map:

df["nueva_columna"] = df["nombre_columna"].map(diccionario)

Por tanto, podríamos obtener una columna con los continentes asociados a cada país a partir de la siguiente
expresión:

En este vídeo se explica en detalle este uso de map para crear nuevas columnas en base a un diccionario:

Crear columnas en un dataframe a partir de un diccionario con map

17/32
Análisis de datos con Pandas

Crear columnas en un dataframe a partir de funciones


lambda
Ya hemos aprendido a crear funciones lambda y cómo nos pueden servir para, de una manera sintetizada, crear
una lógica a aplicar a nuestras variables.

Las funciones lambda también las podemos utilizar para crear nuevas columnas en el dataframe siguiente la lógica
que definamos usando el método "apply". La sintaxis sería:

objeto.apply(lambda arg : código lógico)

A continuación se muestran varios ejemplo de uso de funciones lambda para crear columnas:

Funciones lambda sobre 1 columna numérica

Funciones lambda sobre 1 columna string

Funciones lambda con múltiples columnas

En el siguiente vídeo verá estos conceptos y además se propone un ejercicio práctico donde tendrá que importar
una fuente de datos y creará una nueva columna con función lambda además de calcular diferentes datos
estadísticos:

Crear columnas en un dataframe a partir de funciones lambda

Función lambda

18/32
Análisis de datos con Pandas

Crear el dataframe (df) a partir del fichero iris adjunto.

Calcular el área del pétalo para todos los registros considerando cada pétalo como una elipse (puede usar la
constante pi = 3.14 o bien importar numpy y usar np.pi)

¿Cuál es la mediana del área del pétalo?


¿Qué valor de área solo es superado por el 10 % de los pétalos?
¿Existe correlación entre la longitud y anchura del pétalo? (Nota: Usar método corr() sobre el dataframe)

Adjuntos

iris_dataset.csv
4.66kb

1. Cree las sentencias en Jupyter para dar respuestas a las preguntas del enunciado.

Crear columnas en un dataframe a partir de funciones


condicionales
En determinadas ocasiones vamos a necesitar crear columnas basándonos en una determinada condición.

Ya sabemos cómo crear bucles condicionales IF, por tanto, pueden ser utilizados para crear nuevas columnas de
un dataframe. Sin embargo, también existen métodos propios de Numpy que podemos utilizar dentro de Pandas.

Vamos a ver las 2 maneras de poder crear columnas basándonos en condiciones. Partiremos del siguiente
dataframe con una distribución de valores de media 3 y desviación estándar 1:

19/32
Análisis de datos con Pandas

El objetivo será "Crear una columna "Chequeo" que indique si el registro está por encima o por debajo de
la media":

MÉTODO 1: A PARTIR DE LA DEFINICIÓN DE UNA FUNCIÓN + MÉTODO APPLY

Podemos crear una función lógica que utilice un bucle IF y después usamos el método apply sobre la columna

en cuestión:

MÉTODO 2: A PARTIR DE MÉTODO "WHERE" DE NUMPY

Podemos aplicar el método WHERE de la librería Numpy que tiene la siguiente sintaxis: np.where(condición,
valor_si_verdadero, valor_si_falso)

El método 2 nos ofrece una mayor síntesis de código además de ser más eficiente computacionalmente puesto
que realiza un cálculo vectorial.

En el siguiente vídeo se muestra estos conceptos paso a paso:

Crear columnas en un dataframe a partir de funciones condicionales

Renombrar y reordenar columnas de un dataframe Pandas


En este apartado vamos a aprender a renombrar columnas además de reordenarlas conforme necesitemos en un
nuestro dataframe.

Estas 2 transformaciones probablemente son menos utilizadas, puesto que podemos seleccionar columnas
independientemente de su orden y de su nombre, pero pueden ser muy útiles cuando queremos exportar nuestros
datos y necesitamos que mantengan una estructura y nombres concretos.

20/32
Análisis de datos con Pandas

Vamos a partir del siguiente dataframe para ilustrar el ejemplo:

Renombrar columnas

Reordenar columnas

En el siguiente vídeo se explica en detalle estos conceptos:

Renombrar y reordenar columnas de un dataframe Pandas

Cómo crear pivot tables en Pandas


Como data scientist, es vital que aprenda a crear diferentes agregaciones de los datos para poder resumir la
información para analizar y obtener conclusiones.

21/32
Análisis de datos con Pandas

Una vía para agregar nuestros datos es a través de pivot tables con Pandas, donde podemos seleccionar las
columnas de nuestro dataframe por las que agregaremos en las filas y las columnas de la pivot table además de la
columna del dataframe que representará los valores de cada intersección y el método de agregación. La sintaxis es
la siguiente:

df.pivot_table(index="nombre_columna", columns="nombre_columna", values="


nombre_columna ", aggfunc="método_agregación"))

Para visualizar su uso, partamos de un dataframe con un registro por cada venta de nuestros clientes donde se
indica además el "País" y la "Línea de Producto":

Podríamos crear una pivot table resumiendo las ventas totales de cada "Línea de Producto" por cada "País" de la
siguiente manera:

En el siguiente vídeo se explica en detalle el proceso a seguir para la creación de pivot tables y los argumentos
necesarios:

Cómo crear pivot tables en Pandas

Uso de groupby en Pandas


Groupby es una de las funciones más importantes de Pandas puesto que nos permite agregar información con
una versatilidad mucho mayor que las pivot tables, por eso interiorizar el uso de esta función es fundamental para
cualquier científico de datos.

Su sintaxis es la siguiente:

22/32
Análisis de datos con Pandas

df.groupby("lista_columnas_agrupación").["columna_valores"].agg("lista_agregaciones")

La mejor manera de ver sus posibilidades es a partir de un ejemplo. Supongamos que tenemos el mismo
dataframe de ventas que ya hemos presentado anteriormente, vamos a crear varios casos de uso de la función
groupby:

Agregar la suma de ventas por cada país

Agregar la suma de ventas por cada país y territorio

23/32
Análisis de datos con Pandas

Agregar la cuenta, el máximo, el mínimo y la suma de ventas por cada país y territorio

24/32
Análisis de datos con Pandas

Agregar la cuenta, el máximo, el mínimo, la suma y la diferencia entre el máximo y el mínimo de ventas
por cada país

Todos estos conceptos se explicarán paso a paso en el siguiente vídeo para que le sea más sencillo adquirirlos.
Además, se propone un ejercicio práctico que le ayudarán a asentar los conocimientos:

Uso de groupby en Pandas

Uso de Groupby

Crear el dataframe (df_peatones) a partir del fichero con la información de tráfico peatonal
(PEATONES_2020_mod.csv). Además

Calcular el número de peatones promedio por cada uno de los distritos.


Obtener el mínimo y el promedio de peatones en cada distrito en cada uno de los días ("FECHA").
Calcular cuál ha sido el tráfico de peatones máximo total considerando que hay que añadir un 10 % de factor
de crecimiento por transeúntes motorizados (usar función lambda)

Adjuntos

PEATONES_2020_mod_1.csv
35589.4kb

25/32
Análisis de datos con Pandas

1. Cree el script en Jupyter con las sentencias necesarias para responder al enunciado.

Groupby suma beneficios por país

Concatenación de dataframes (union)


En numerosas situaciones nos enfrentamos a tener 2 tablas de datos o dataframes que mantienen una misma
estructura y que nos interesa unir en uno solo, por ejemplo:

Tenemos información de nuestras ventas diarias y tenemos que unir los dataframes diarios que vamos
obteniendo.
Se añaden nuevas categorías a nuestros datos manteniendo la misma estructura de tabla.

La clave es que las 2 tablas a unir deben tener la misma estructura:

Para ejecutar la unión de dataframes en Python, la sintaxis es la siguiente utilizando el método "concat":

df_concatenado = pd.concat("lista_dataframes_union", ignore_index = True)

26/32
Análisis de datos con Pandas

Por ejemplo:

En el siguiente vídeo se profundiza en este concepto:

Concatenación de dataframes (union)

Combinación de dataframes
Este apartado es de suma importancia puesto que nos va a permitir relacionar y combinar dataframes en base a
una columna común que tengan ambos.

Para combinar (o juntar) tablas, existen varios métodos. Vamos a partir de las siguientes tablas para entender
mejor el resultado de cada tipo de combinación (la columna "X" es la común):

27/32
Análisis de datos con Pandas

Inner Join

Nos quedamos con la intersección de ambas tablas, es decir, únicamente los registros que coincidan en la
columna común en ambas tablas:

Outer Join

Nos quedamos con todos los registros de ambas tablas y en los que no se encuentre el valor en la otra tabla se

insertará N/A:

28/32
Análisis de datos con Pandas

Left Outer Join

Nos quedamos con todos los registros de la primera tabla (izquierda) y en los que no exista el valor en la
segunda tabla (derecha) se insertará N/A:

Right Outer Join

Nos quedamos con todos los registros de la segunda tabla (derecha) y en los que no exista el valor en la primera
tabla (izquierda) se insertará N/A:

Combinación con Pandas Merge


Para poder combinar tablas con Python, utilizaremos el método "Merge" con la siguiente sintaxis (suponemos que
queremos combinar df1 con df2):

df_combinado = df1.merge(df2, on="columna_clave", how="método_combinación")

En la siguiente figura se muestra un ejemplo del uso de merge con 2 tipos de combinación diferentes:

29/32
Análisis de datos con Pandas

En el siguiente vídeo se explica en detalle el uso de merge y los diferentes tipos de combinación. Así mismo
realizará un ejercicio práctico para consolidar el conocimiento adquirido:

Combinación de dataframes (merge)

Combinación de dataframes (merge)

Crear el dataframe (df_peatones) a partir del fichero con la información de tráfico peatonal
(PEATONES_2020_mod.csv). Además, crear un dataframe adicional (df_pob) con la población en cada uno de los
distritos de Madrid.

Realizar una combinación de tipo inner de ambos dataframes creando el df_combinado resultado de utilizar
merge.
De cara a analizar cuál es el movimiento de personas entre los diferentes distritos de la ciudad, ¿cuál es el
distrito que tiene mayor número de peatones en el momento máximo en comparación con su población?
Siga los siguientes pasos:
Crear un KPI = PEATONES / Población_distrito
Realizar un groupby para verificar el valor máximo del KPI en cada distrito

Adjuntos

PEATONES_2020_mod_2.csv Distrito_poblacion.csv
35589.4kb 0.12kb

1. Cree las sentencias necesarias para responder a las preguntas del enunciado.

30/32
Análisis de datos con Pandas

Resumen

Pandas es una librería que nos permite gran versatilidad en cuanto a la transformación
de datos.
El elemento clave de Pandas es el dataframe.
Podemos crear dataframes a partir de diccionarios o a partir de fuentes de datos
externas.
Podemos utilizar la selección de datos y diversos métodos sobre un dataframe.
La limpieza de datos es muy sencilla con Pandas pudiendo eliminar duplicados,
valores erróneos, interpolar datos, ordenar en base a una columna, reordenar columnas,
filtrar en base a condiciones...
Podemos crear nuevas columnas en nuestro dataframe a partir de un diccionario, con
funciones lambda o bien con funciones condicionales.
Para resumir nuestra información y poder realizar análisis, son muy útiles los
métodos pivot_table y groupby.
Podemos unir y combinar dataframes de una manera muy sencilla con Pandas.

31/32
Análisis de datos con Pandas

Recursos

Glosario.
Duplicados: Registros en una tabla que contienen los mismos valores en una o todas las columnas.

Filtrado: Es la capacidad de quedarnos con una porción de los datos basándonos en una serie de
condiciones lógicas establecidas.

Granularidad: Es el tamaño de nuestra muestra de datos, muy utilizado con intervalos temporales. A mayor
granularidad (más fina), el intervalo es más corto y viceversa.

Pivot tables: Tablas dinámicas que permiten resumir información desagregada de tal manera que en base
a las categorías indicadas podamos agregar esos datos.

Scripts: Fichero de código que permite ejecutar una serie de instrucciones a partir de la lógica
programada.

32/32

También podría gustarte