Documentos de Académico
Documentos de Profesional
Documentos de Cultura
© 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
3/32
Análisis de datos con Pandas
Al finalizar esta unidad conseguirá tener limpios y transformados sus datos con las agregaciones y segmentaciones
necesarias para futuros análisis.
Base numérica
BigData
Estructura de datos
El elemento clave que contendrá nuestros datos tras importarlos será el dataframe.
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
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:
5/32
Análisis de datos con Pandas
file.csv sería la ruta completa donde se tiene el fichero seguida del nombre del fichero y su extensión csv.
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:
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
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
7/32
Análisis de datos con Pandas
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:
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
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":
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:
Adjuntos
PEATONES_2020_mod.csv
35589.4kb
La sintaxis es df = df.drop_duplicates()
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.
Interpolación de datos
La interpolación de datos significa obtener un nuevo valor a partir del conjunto de datos disponibles.
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.
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
Pandas nos permite realizar el filtrado de datos en base a determinadas condiciones de una manera muy sencilla
con la siguiente sintaxis:
12/32
Análisis de datos con Pandas
Múltiples condiciones
Visualice el siguiente vídeo para ver estos ejemplos en detalle y realizar un ejercicio práctico que le será muy útil:
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:
14/32
Análisis de datos con Pandas
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:
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:
15/32
Análisis de datos con Pandas
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:
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:
17/32
Análisis de datos con Pandas
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:
A continuación se muestran varios ejemplo de uso de funciones lambda para crear 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:
Función lambda
18/32
Análisis de datos con Pandas
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)
Adjuntos
iris_dataset.csv
4.66kb
1. Cree las sentencias en Jupyter para dar respuestas a las preguntas del enunciado.
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":
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:
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.
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
Renombrar columnas
Reordenar columnas
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:
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:
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:
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
Crear el dataframe (df_peatones) a partir del fichero con la información de tráfico peatonal
(PEATONES_2020_mod.csv). Además
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.
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.
Para ejecutar la unión de dataframes en Python, la sintaxis es la siguiente utilizando el método "concat":
26/32
Análisis de datos con Pandas
Por ejemplo:
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
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:
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:
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:
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