# Load modules
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import os
# Load data
DATA_P_DIR = os.path.join(os.getcwd(), os.pardir, 'data', 'processed')
positives = pd.read_pickle(os.path.join(DATA_P_DIR, 'positives.pkl'))
vaccines = pd.read_pickle(os.path.join(DATA_P_DIR, 'vaccines.pkl'))
deaths = pd.read_pickle(os.path.join(DATA_P_DIR, 'deaths.pkl'))
closures_education = pd.read_pickle(os.path.join(DATA_P_DIR, 'closures_education.pkl'))
education_ec = pd.read_pickle(os.path.join(DATA_P_DIR, 'education_ec.pkl'))
students = pd.read_pickle(os.path.join(DATA_P_DIR, 'students.pkl'))
print(f'Positivos: {positives["acumulados"].max()}\nFallecimientos: {deaths["accumulated"].max()}')
sns.set_theme()
fig, ax = plt.subplots(1, 2, figsize=[13, 4])
ax[0].plot(positives.created_at, positives.acumulados)
ax[0].set_title('Casos positivos a lo largo del tiempo')
ax[1].plot(deaths.date, deaths.accumulated)
ax[1].set_title('Fallecimientos por Covid-19 a lo largo del tiempo')
plt.setp(ax[0].xaxis.get_majorticklabels(), rotation=90)
plt.setp(ax[1].xaxis.get_majorticklabels(), rotation=90)
plt.show()
plt.figure(figsize=[4
0, 4])
sns.scatterplot(data=closures_education, x='Date', y='Status', hue='Status')
plt.title('Estado de los centros educativos durante la pandemia')
plt.xticks(rotation=90)
plt.show()
plt.figure(figsize=[15,4])
plt.plot(positives.created_at, positives.nuevas)
plt.title('Casos diarios de Covid-19')
plt.xticks(rotation=90)
plt.show()
plt.figure(figsize=[15, 4])
sns.lineplot(data=vaccines, x='fecha', y='dosis_total', label='Totales')
sns.lineplot(data=vaccines, x='fecha', y='primera_dosis', label='Primera')
sns.lineplot(data=vaccines, x='fecha', y='segunda_dosis', label='Segunda')
sns.lineplot(data=vaccines, x='fecha', y='refuerzo', label='Refuerzo')
plt.title('Vacunas totales a lo largo del tiempo')
plt.xticks(rotation=90)
plt.show()
fig, ax = plt.subplots(2, 1, sharex=True, figsize=[14,7])
ax[0].plot(students.index, students.p_dropout, marker='v', label='Abandonos')
ax[0].plot(students.index, students.p_reproved, marker='o', label='Reprobados')
ax[0].legend()
ax[0].set_title('Porcentaje de reprobados y abandono')
ax[1].plot(students.index, students.p_promoted, marker='s', c='r')
ax[1].set_title('Porcentaje de aprobados')
plt.xticks(rotation=90)
plt.show()
students_es = students.iloc[-2:].rename(columns={'dropout': 'Número de abandonos', 'p_dropout': 'Porcentaje de abandonos'})
print(students_es[['Número de abandonos', 'Porcentaje de abandonos']])
sns.barplot(data=students_es, x=students_es.index, y='Porcentaje de abandonos')
plt.show()
# 2020
education_2020 = education_ec.query('Periodo == "2019-2020 Fin"')
sostenimiento_2020 = education_2020.groupby('Sostenimiento')[['Total_estudiantes', 'Abandono']].sum()
sostenimiento_2020['Porcentaje_abandono'] = round(sostenimiento_2020['Abandono'] / sostenimiento_2020['Total_estudiantes'] * 100, 2)
# Plot
sns.barplot(data=sostenimiento_2020, x=sostenimiento_2020.index, y='Abandono')
plt.show()
# 2021
education_2021 = education_ec.query('Periodo == "2020-2021 Fin"')
sostenimiento_2021 = education_2021.groupby('Sostenimiento')[['Total_estudiantes', 'Abandono']].sum()
sostenimiento_2021['Porcentaje_abandono'] = round(sostenimiento_2021['Abandono'] / sostenimiento_2021['Total_estudiantes'] * 100, 2)
# Plot
sns.barplot(data=sostenimiento_2021, x=sostenimiento_2021.index, y='Abandono')
plt.show()
# Comparar 2020 con 2021
no_fiscal = sostenimiento_2021.iloc[[1,3],0].sum() - sostenimiento_2020.iloc[[1,3],0].sum()
fiscal = sostenimiento_2021.iloc[[0,2],0].sum() - sostenimiento_2020.iloc[[0,2],0].sum()
print(f'Abandonos centros no fiscales: {no_fiscal}\nAumento centros fiscales: {fiscal}')
# 2020
area_2020 = education_2020.groupby('Area')[['Total_estudiantes', 'Abandono']].sum()
area_2020['Porcentaje_abandono'] = round(area_2020['Abandono'] / area_2020['Total_estudiantes'] * 100, 2)
# Plot
sns.barplot(data=area_2020, x=area_2020.index, y='Porcentaje_abandono')
plt.show()
# 2021
area_2021 = education_2021.groupby('Area')[['Total_estudiantes', 'Abandono']].sum()
area_2021['Porcentaje_abandono'] = round(area_2021['Abandono'] / area_2021['Total_estudiantes'] * 100, 2)
# Plot
sns.barplot(data=area_2021, x=area_2021.index, y='Porcentaje_abandono')
plt.show()
# 2020
jornada_2020 = education_2020.groupby('Jornada')[['Total_estudiantes', 'Abandono']].sum()
jornada_2020['Porcentaje_abandono'] = round(jornada_2020['Abandono'] / jornada_2020['Total_estudiantes'] * 100, 2)
# Plot
sns.barplot(data=jornada_2020, y=jornada_2020.index, x='Porcentaje_abandono')
plt.show()
# 2021
jornada_2021 = education_2021.groupby('Jornada')[['Total_estudiantes', 'Abandono']].sum()
jornada_2021['Porcentaje_abandono'] = round(jornada_2021['Abandono'] / jornada_2021['Total_estudiantes'] * 100, 2)
# Plot
sns.barplot(data=jornada_2021, y=jornada_2021.index, x='Porcentaje_abandono')
plt.show()