El sitio de estadísticas de la provincia de Córdoba en su seccion educación publica datos desagregados por nivel en cuanto a la cantidad de matrículas (alumnos), docentes y escuelas.
En base a esto hacemos a continuación un breve análisis de las variaciones en este período. Los niveles incluidos en los datos que libera el estado provincial son:
Datos relevantes
import pandas as pd # Cargar la librería "pandas" para leer archivos CSV
pd.display_max_columns=15 # que no recorte datos tan facil al mostrar datos
# no mostrar los gráficos en ventanas emergentes
%pylab inline
import matplotlib.pyplot as plt # importar librería gráfica
import numpy as np # importar numpy para manejo de matrices y otros calculos
debug = False # imprimir todos los datos o no
prefix = "https://andresvazquez.com.ar/data/cordoba-educacion-1998-2010/"
prefix = "./data/"
# leer el archivo con los datos de las escuelas en todos los niveles
escuelas = pd.read_csv("%seducacion-escuelas-en-cordoba-todos-los-niveles-1998-2010.csv" % prefix, index_col=0, header=0)
niveles = escuelas.T #
if debug:
print niveles
Cantidad de escuelas por nivel educativo. Período 1998-2010
niveles.plot(figsize=(16, 6))
No se puede apreciar el crecimiento o caida de cada uno con valores tan discimiles. Se necesita ponderar los valores para llevarlos a alguna escala similar.
Se pondera entonces cada serie tomando como "1" a su valor de 1998 y conocer asi el crecimiento de cada serie.
#ignoro la ultima serie (escuela artistica) que tiene valores nulos y no es relevante para este estudio
esc = np.array(escuelas)[0:7]
if debug:
print esc
a1998 = esc[0:,0] # tomo los valores de cada serie para 1998
coefs = a1998.reshape(7,1) # invierto la matriz para poderla divivir por la matriz completa
mtx_ponderada = esc / coefs # valores ponderados con 1998 = 1 para cada serie
if debug:
print '------Just 1998-----------------------'
print a1998
print "------Coefs for each serie------------"
print coefs
print "------Matriz ponderada----------------"
print mtx_ponderada
# la matriz no tiene los nombres de las series, los saco de la lectura inicial
nivs = np.array(niveles[:0].columns) # titulos de cada serie en array de numpy
nivs = nivs[:-1] # ignoro a las escuelas artisticas
if debug:
print nivs
m = mtx_ponderada.transpose() # necesito invertir la matriz para poder dibujarla como busco
from pandas import DataFrame # el objeto dataframe me permite nombrar las series de datos
df = DataFrame(m, index=arange(1998,2011), columns=nivs)
df.plot(figsize=(16, 4), kind='bar')
Se detaca claramente el crecimiento de la escuela media para adultos. La cantidad escuelas se triplico.
Veamos como fue en la cantidad de matrículas (alumnos) y la cantida de docentes en el mismo período.
matriculas = pd.read_csv("%seducacion-matriculas-por-niveles-cordoba-1998-2010.csv" % prefix, index_col=0, header=0)
niveles = matriculas.T # tiene una ultima columna con porcentajes, necesito eliminarla
if debug:
print "----MATRICULAS----"
print matriculas
print "----NIVELES----"
print niveles
niveles.plot(figsize=(16, 6))
Igual que antes no podemos apreciar el crecimiento de cada uno comparativamente.
Desarrollamos el mismo proceso.
#ignoro la ultima serie (escuela artistica) que tiene valores nulos y no es relevante para etse estudio
esc = np.array(matriculas)[0:7]
if debug:
print esc
a1998 = esc[0:,0] # tomo los valores de cada serie para 1998
coefs = a1998.reshape(7,1) # invierto la matriz para poderla divivir por la matriz completa
mtx_ponderada = esc / coefs # valores ponderados con 1998 = 1 para cada serie
if debug:
print '------Just 1998-----------------------'
print a1998
print "------Coefs for each serie------------"
print coefs
print "------Matriz ponderada----------------"
print mtx_ponderada
m = mtx_ponderada.transpose() # necesito invertir la matriz para poder dibujarla
from pandas import DataFrame # el objeto dataframe me permite nombrar las series de datos
df = DataFrame(m, index=arange(1998,2011), columns=nivs)
df.plot(figsize=(16, 4), kind='bar')
Notable nuevamente el crecimiento de la matríclula de educación media para adultos.
La educación superior no universitaria se duplicó, su crecimiento es un poco mas fuerte que el de la cantidad de escuelas en el mismo nivel educativo.
docentes = pd.read_csv("%sdocentes-cordoba-1998-2010.csv" % prefix, index_col=0, header=0)
niveles = docentes[:-1].T # tiene una ultima columna con porcentajes, necesito eliminarla
if debug:
print "----MATRICULAS----"
print matriculas
print "----NIVELES----"
print niveles
niveles.plot(figsize=(16, 6))
Ahora estos mismas evoluciones pero comparativas cada una con su mismo valor en 1998 (al igual que datos anteriores)
#ignoro la ultima serie (escuela artistica) que tiene valores nulos y no es relevante para etse estudio
esc = np.array(docentes)[0:7]
if debug:
print esc
a1998 = esc[0:,0] # tomo los valores de cada serie para 1998
coefs = a1998.reshape(7,1) # invierto la matriz para poderla divivir por la matriz completa
mtx_ponderada = esc / coefs # valores ponderados con 1998 = 1 para cada serie
if debug:
print '------Just 1998-----------------------'
print a1998
print "------Coefs for each serie------------"
print coefs
print "------Matriz ponderada----------------"
print mtx_ponderada
m = mtx_ponderada.transpose() # necesito invertir la matriz para poder dibujarla
df = DataFrame(m, index=arange(1998,2011), columns=nivs)
df.plot(figsize=(16, 4), kind='bar')
Nuevamente el nivel educativo medio para adultos muy sobre la media. Su nivel de docentes acompaño el crecimiento de escuelas y matrículas.
El nivel inicial y superior no universitario nuevamente alto en linea con las otras series.
Como se ve los crecimientos en de escuelas y docentes parecen acompañar el crecimiento de la matriculación. Para esto son importantes los coeficientes de alumnos por docente, alumnos por escuela y docentes por escuela en cada nivel.
Esto puede indicar si la provincia de Córdoba mantuvo la calidad educativa en cuanto a atención de la demanda creciente.
if debug:
print escuelas
print docentes
print matriculas
e = np.array(escuelas)[0:7]
d = np.array(docentes)[0:7]
m = np.array(matriculas)
dxe = (d / e)
if debug:
print "--- DOCENTES POR ESCUELA -----"
print dxe
df = DataFrame(dxe.transpose(), index=arange(1998,2011), columns=nivs)
df.plot(subplots=True, title='Docentes por escuela', fontsize=20, figsize=(6,29))
En general se ve la tendencia a bajar (es lo esperado)
axd = (m[:-1] / d)
if debug:
print "--- ALUMNOS POR DOCENTE -----"
print dxe
df = DataFrame(axd.transpose(), index=arange(1998,2011), columns=nivs)
df.plot(subplots=True, title='Alumnos por docentes', fontsize=20, figsize=(6,19))
mxe = (m[:-1] / e)
if debug:
print "--- ALUMNOS POR ESCUELA -----"
print dxe
df = DataFrame(mxe.transpose(), index=arange(1998,2011), columns=nivs)
df.plot(subplots=True, title='Alumnos por escuela', fontsize=20, figsize=(6,19))