-
Cada grupo debe designarle un número de identificación único a cada uno de sus integrantes, partiendo desde el 1 hasta el n.
-
El integrante número 1 debe hacer un fork del siguiente repositorio. Debe hacerlo desde la misma interfaz de la web de github, ya que ni por GitHub Desktop ni por el terminal puedes hacer directamente un fork. Luego, a través de GitHub Desktop o de la línea de comandos con git, debe clonar el repositorio a su máquina local.
-
Cada integrante, del número 2 hasta el n, debe hacen un fork al repositorio del integrante 1, desde la interfaz web. Luego, a través de GitHub Desktop o de la línea de comandos con git, debe clonar el repositorio a su máquina local. y luego en este repositorio, crear un branch que se llame
in_***-t1dondenes su número y***es su usuario de github. -
Luego, el integrante 1 en el branch
maindebe crear un archivo nuevo (puedes hacerlo en la interfaz web usandoadd file->create new file, o en la carpeta de tu máquina local), que se encuentre en el root del repositorio, y que se llameIntegrantes-***.md, donde***es su usuario de github. El archivo debe tener la siguiente estructura:
-
- i1 Nombre Apellido DD/MM
-
- i2 Nombre Apellido DD/MM
-
- ...
- n.
donde DD/MM es el día y mes de cumpleaños del integrante en formato 04/09 para el 4 de Septiembre y donde el integrante 1 debe ingresar sus datos. Una vez creado el archivo, el integrante 1 debe hacer un commit con el título create Integrantes.md, y luego debe hacer un push a github.
-
Cada integrante debe entrar a su repositorio, en el branch recién creado, y hacer un fetch, para poder ver el nuevo archivo creado por el integrante 1. Luego, debe abrir
Integrantes-***.md, donde debe ingresar sus datos en la línea deln.que le corresponda, sin modificar ninguna otra y guardar los cambios. Una vez guardado, debe hacer un commit, con el títuloupdate datos n. ***a su branchin_***-t1, y luego unpusha su github. Finalmente, cada integrante debe hacer un pull request desde su branch hacia el main del repositorio del integrante 1. -
El integrante 1 debe aceptar todos los pull request, cuidando que si hubieran merge conflicts, tiene que revisarlos con algún editor y dejar el archivo en el orden esperado (del 1. al n. según corresponda). Todos los integrantes del grupo tienen que hacer un fetch y quedar con el archivo actualizado.
Todos los archivos de datos se encuentran en la carpeta data/raw. NO LOS MODIFIQUE, solo lealos y guarde nuevos archivos cuando lo crea conveniente en la carpeta data/interim o si ya están totalmente procesados, o cuando se le indique, en la carpeta data/processed.
-
Cree un notebook de jupyter, guárdelo en la carpeta notebooks con el nombre
2_nb_***.ipynbdonde***es el github del integrante 1. Una vez que tenga todo el ejercicio listo, limpie los outputs, reinicie el kernel y corra todo el notebook. Luego, exporta el notebook como html y guárdalo en la carpetaoutput. -
Cargue el archivo
dolar_2019_sii.csva un dataframe que se llamedolar_2019usandopandas. ¿Que argumento necesitapd.read_csv()para leer las columnas correctamente? -
Explore el archivo
dolar_2020_sii.txt. ¿Qué estructura tiene, en que se diferencia y en qué es igual al dataframe anterior? ¿Qué método y argumento hay que usar para leer las columnas correctamente?. Carguelo en un dataframe llamadodolar_2020_txt. -
Explore el archivo
dolar_2020_sii_AA.txt. ¿Qué estructura tiene? ¿Será buena idea ocupar expresiones regulares para indicar el separador? (hint: sí). Carguelo en un dataframe llamadodolar_2020_regexy compárelo con el dataframedolar_2020_txt. ¿Son exactamente iguales en la información que traen? -
Haga las siguientes operaciones de wrangling y limpieza:
- Filtre sacando la última fila, arreglando y homogeneizando los encabezados para los tres dataframes
- Revise que los nombres de las columnas sean los mismos en cada dataframe.
- Cree una columna en cada uno de los tres dataframes que se llame
yeary que tenga el año correspondiente, y que su type seaint64. - Convierta las comas a puntos en cada uno de los tres dataframes.
- Fuerce que todas las variables sean de tipo
into de tipofloat.
-
Exporte estos tres dataframes en la carpeta
data/interimde la siguiente forma:dolar_2019en formato csv, separado por comas, con nombred2019.csvdolar_2020_txten formato txt, separado por un espacio simple, con nombred2020.txt.dolar_2020_regexen formato CSV, separado por ";", de nombredolar_2020_excel.csv
-
Concatene con
pd.concatde dos formas:dolar_2019ydolar_2020_txtsolo con el argumentoaxis=1guardandolo en el dataframedf_concat_1dolar_2019ydolar_2020_txtsolo con el argumentoaxis=0guardandolo en el dataframedf_concat_0¿Qué problema podríamos tener con las columnas endf_concat_1y en los índices endf_concat_0?
-
Crea un nuevo notebook de jupyter, guárdelo en la carpeta notebooks con el nombre
3_nb_***.ipynbdonde***es el github del integrante 1. Una vez que tenga todo el ejercicio listo, limpie los outputs, reinicie el kernel y corra todo el notebook. Luego, exporta el notebook como html y guárdalo en la carpetaoutput. -
En el notebook
3_nb_***.ipynb, cargue los dos archivosd2019.csvyd2020.txten dos dataframes llamadosdf2019ydf2020respectivamente. Luego, usando el métodomelt, genera un dataframe llamadodf_siidonde estén incluidos los datos del 2019 y del 2020, que tenga las columnasyear,mes,dia,valor, y guardalo como csv en la carpetadata/interimcon el nombredf_sii.csv. -
Usando el método
groupbyendf_sii:- Agrupa por
mes, con el argumentoas_index = Truey usando el métodoaggregationcon el métodomean, imprime el resultado. - Agrupa por
[year, mes], con el argumentoas_index = Falsey usando el métodoaggcon el métodomean, imprime el resultado - Compara ambos resultados. ¿Qué cambia al usar
as_index = False? ¿Al agrupar pormes, con respecto a[year,mes]?
- Agrupa por
-
¿Qué podrías inferir de los missing values y los días hábiles? Úsalos para crear una nueva variable llamada
dia_de_la_semanaendf_siicon valores "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo". -
Explora el archivo
dolar_observado_bc.xlsxy su estructura.- Lee cada hoja por separado con
read_excel, usando los argumentosskiprows=2, dtype={'Periodo':str }. - Ocupa el método
str.splitpara crear las columnasdia,mesyyearen cada dataframe. - Crea un dataframe que una todos los dataframes en uno solo con las mismas columnas, y nombralo
df_bc_all. - Crea una carpeta dentro de la carpeta
data/processedllamadadolar_bc_year, agrupa poryearusandogroupbyy guarda un CSV para cada año desde 1982 hasta 2022, con los nombresdolar_bc_YYYY.csvdondeYYYYes el año. Busca una manera de hacerlo iterando y no uno a uno. - Crea un dataframe que tenga los años 2019 y 2020 que se llame
df_bc_2019_2020 - Compara los valores de
df_bc_2019_2020ydf_sii. ¿Son iguales o diferentes?
- Lee cada hoja por separado con
-
Haz un
mergede la columnadia_de_la_semanadeldf_siial dataframedf_bc_all. Luego, extiende la variabledia_de_la_semanapara todos los valores. Finalmente, crea una variable con las combinaciones[dia,mes]que tienen al menos unNaNque sea en día de semana (es decir, excluyendo Sábado y Domingo). Luego, cuenta cuantosNaN(incluyendo Sábados y Domingos) hay para cada combinación[dia/mes]. ¿Qué puedes inferir de los días con mayor cantidad deNaN? -
Calcula el promedio del precio del dolar en los días de cumpleaños del grupo para cada año entre 1983 y 2021 y el promedio del precio del dolar para cada año completo entre 1983 y 2021, y muestra una tabla donde se vean ambos resultados. ¿Qué diferencias hay en ambos indicadores en cada año?