Clase 6 - Introducción A La Manipulación de Datos Con Pandas (Parte II)
Clase 6 - Introducción A La Manipulación de Datos Con Pandas (Parte II)
grabada
Clase 06. DATA SCIENCE
Introducción a la
manipulación de datos con
Pandas (Parte II)
Temario
05 06 07
Introducción a la
Programación con manipulación de datos Visualizaciones y
arrays: Introducción a con Pandas (Parte II) primeros pasos con
Numpy DS I
✓ Estructura de datos ✓ Fuentes de datos
Series
Estructuras de datos
de Pandas
Data Frames Lectura desde archivos
Selección de elementos
Manipulación de Tratamiento de datos
datos con Pandas ausentes
Operaciones
Agregaciones
print(Numeros_serie[2]) 👉
Pandas Series (Resumen)
Ajedrez_64 = np.arange(1,65).reshape(8,8)
Ajedrez_df = pd.DataFrame(
Ajedrez_64,
columns=range(1,9), 👉
index=['A','B','C','D','E','F','G','H']
)
Ajedrez_df
Pandas DataFrames (Resumen)
Para poder manejar estos datos, en general, se ✔ Reemplazar por un valor seleccionado
usan las siguientes estrategias: al azar de los otros registros:
○ Usar la media, mediana o moda
✔ Introducir un valor constante para los
para rellenar el valor
nulos o una categoría llamada
○ Valor estimado usando un
Desconocido en variables categóricas
modelo
0 1 2 3 4 5 6 7 8
# reemplazar con la media 0 6.00 148.0 72.0 35.00 155.55 33.6 0.63 50 1.0
1 1.00 85.0 66.0 29.00 155.55 26.6 0.35 31 1.0
df.fillna(df.mean(), inplace=True)
print(df.shape)
👉 2 8.00 183.0 64.0 29.15 155.55 23.3 0.67 32 1.0
3 1.00 89.0 66.0 23.00 94.00 28.1 0.17 21 1.0
4 4.49 137.0 40.0 35.00 168.00 43.1 2.29 33 1.0
Manejo de datos nulos:
SimpleImputer
Si queremos reemplazar las columnas numéricas por
media podemos hacer esto
0 1 2 3 4 5 6 7 8
0 6.0 148.0 72.0 35.0 NaN 33.6 0.627 50 1.0
1 1.0 85.0 66.0 29.0 NaN 26.6 0.351 31 NaN
url='https://raw.githubusercontent.com/jbrownlee/
Datasets/master/pima-indians-diabetes.csv'
👉 2
3
8.0 183.0 64.0 NaN NaN 23.3 0.672 32 1.0
1.0 89.0 66.0 23.0 94.0 28.1 0.167 21 NaN
4 NaN 137.0 40.0 35.0 168.0 43.1 2.288 33 1.0
df= pd.read_csv(url,sep=',', header=None)
print(df.shape)
transformados = imputador.fit_transform(valores)
transformados=pd.DataFrame(transformados)
print(transformados.head().round(2))
Manejo de datos nulos:
SimpleImputer
Si queremos reemplazar las columnas numéricas por
mediana podemos hacer esto
url='https://raw.githubusercontent.com/jbrownlee/ 0 1 2 3 4 5 6 7 8
Datasets/master/pima-indians-diabetes.csv' 0 6.0 148.0 72.0 35.0 NaN 33.6 0.627 50 1.0
df= pd.read_csv(url,sep=',', header=None) 👉 1
2
1.0 85.0 66.0 29.0 NaN 26.6 0.351 31 NaN
8.0 183.0 64.0 NaN NaN 23.3 0.672 32 1.0
print(df.shape)
3 1.0 89.0 66.0 23.0 94.0 28.1 0.167 21 NaN
4 NaN 137.0 40.0 35.0 168.0 43.1 2.288 33 1.0
0 1 2 3 4 5 6 7 8
url='https://raw.githubusercontent.com/jbrownlee/
0 6.0 148.0 72.0 35.0 NaN 33.6 0.627 50 1.0
Datasets/master/pima-indians-diabetes.csv'
df= pd.read_csv(url,sep=',', header=None)
👉 1
2
1.0 85.0 66.0 29.0 NaN 26.6 0.351 31 NaN
8.0 183.0 64.0 NaN NaN 23.3 0.672 32 1.0
print(df.shape) 3 1.0 89.0 66.0 23.0 94.0 28.1 0.167 21 NaN
4 NaN 137.0 40.0 35.0 168.0 43.1 2.288 33 1.0
De la clase anterior recordemos que ... ✔ Las agregaciones son un tipo de operación.
✔ Se realizan sobre un conjunto de datos.
✔ Retornan un resultado que es una medida
resumen del conjunto de datos
✔ Las principales agregaciones de Numpy son:
✔ np.sum, np.mean, np.max, np.std, np.var
Agregaciones en Pandas
Hasta el momento, nuestro dataset luce así: ✔ Se trata de mediciones de precipitaciones (en
milímetros)
✔ Existe un total de trece columnas, una para el
año y otras doce para cada uno de los meses
✔ Tiene un índice numérico.
columnas = df_lluvias_archivo.columns[1:]
columnas 👉
¡Y listo!
df_lluvias = pd.DataFrame(valores,index=indice,columns=columnas)
df_lluvias
Ya tenemos preparado
nuestro Data Frame
Agregaciones en Pandas
✔ Suma de las precipitaciones para cada mes.
👉 df_lluvias.sum()
✔ Promedio de precipitaciones de cada año.
df_lluvias.mean(axis='columns') 👉
El método Describe
El método describe
👉 df_lluvias.describe().round(1)
Este método nos ayuda a…
Presidentes_nombres = pd.Series(Presidentes_archivo['president'])
Presidentes_nombres
Operaciones con Strings
Veamos algunos ejemplos...
✔ Convertir a mayúsculas
Presidentes_nombres.str.upper( 👉
)
Presidentes_nombres.str.len() 👉
Operaciones con Strings
Veamos algunos ejemplos...
Presidentes_nombres.str.startswith('J') 👉
✔ Separar en una lista
usando el espacio como separador
Presidentes_nombres.str.split()) 👉
Introducción a Series de
Tiempo
Series de Tiempo
… datos, ligados al tiempo
fecha = pd.to_datetime('03/01/2020',dayfirst=True)
fecha
👉
fin = pd.to_datetime('10/01/2020',dayfirst=True)
fechas_1 = pd.date_range(start=fecha, end=fin)
Operando objetos de tiempo
Veamos algunos ejemplos...
✔ La frecuencia por defecto es de un día. Por lo tanto, ocho períodos representan ocho días.
👉
Operando objetos de tiempo
Veamos algunos ejemplos...
mes_inicio = fecha.strftime('%Y-%m') 👉
mes_inicio
👉
Operando objetos de tiempo
Veamos algunos ejemplos...
¡Al utilizar operadores normales sobre objetos de tiempo, obtenemos como resultado objetos de tiempo!
Operando objetos de tiempo
Veamos algunos ejemplos...
👉
Conversión a
DateTimeIndex
Conversión a DateTimeIndex
Veamos algunos ejemplos...
Ahora que sabemos manipular objetos de tiempo, retomemos el Data Frame de
presidentes. Seleccionamos las fechas de asunción
fechas_presidentes_orig = Presidentes_archivo['start']
fechas_presidentes_orig
👉
type(fechas_presidentes_orig) 👉 ❌
Conversión a DateTimeIndex
Veamos algunos ejemplos...
fechas_presidentes = pd.DatetimeIndex(fechas_presidentes_orig)
fechas_presidentes
👉
Conversión a DateTimeIndex
Veamos algunos ejemplos...
Ahora que tenemos las fechas en el tipo de dato correcto, construyamos la Serie
Serie_presidentes = pd.Series(Presidentes_nombres.values,index=fechas_presidentes)
Serie_presidentes
¡Listo!
Ya podemos ejecutar operaciones con objetos de
tiempo.
Manipulación de
Dataframes con Pandas
Duración: 15 minutos
ACTIVIDAD EN CLASE
Pandas
✔ Ir al siguiente repositorio y descargar el siguiente archivo (BTCUSD_1hr.csv): Bitcoin
✔ Utilizar el método .describe() para obtener un resumen numérico rápido de las variables
✔ Extraer el mes de la columna Date y utilizar el método .groupby() para calcular la media mensual para cada variable
✔ Hacer un gráfico de los precios de Bitcoin y analizar tendencias. Que medida se les ocurre pueda establecer la volatilidad cada día?
CLASE N°6
Glosario
Manejo de datos nulos: conjunto de técnicas que nos permiten manipular y trabajar con los datos nulos (e.g
Imputación, eliminación, reemplazo por un valor representativo como la mediana)
Método Describe: método incorporado en los dataframes para obtener un resumen numérico básico de las
variables numéricas presentes (conteo, min, max, media, cuartiles, desviación estándar)
Método Groupby: método incorporado en los dataframes que permite agrupar los datos por agluna categoría
específica y aplicar alguna función de agregación
Operaciones con strings: son todas aquellas herramientas que nos permiten manipular datos con formato str,
las librerías más comunes para esto son re y los métodos incorporados de str.
CLASE N°6
Glosario
Serie de tiempo: cualquier variable aleatoria indexada por el tiempo que se caracterizan por tener métodos
especiales de análisis (e.g Modelos ARIMA, SARIMAX)
Timestamp: tipo de dato ligado a series de tiempo, bastante común y se reconoce con formato
DateTimeIndex en Python
Period: tipo de dato ligado a series de tiempo que se reconoce con formato PeriodIndex en Python
TimeDelta: tipo de dato ligado a series de tiempo que se reconoce con formato TimeDeltaIndex en Python
¿Preguntas?
Resumen
de la clase hoy
✓ Operaciones con datos en Pandas
✓ Agregaciones con Pandas
✓ Manejo de datos ausentes
✓ Operaciones con Strings
✓ Introducción a Series de Tiempo
Opina y valora
esta clase
Muchas gracias.