Exploracion y Visualizacion de Bases de Datos

Para el siguiente ejemplo tomaremos como referencia el archivo snie1213.csv que se encuentra en la carpeta data, esta base de datos contiene los siguientes campos:

  • CCTT Clave del Centro de Trabajo + turno
  • TIPO_EDUCA Tipo educativo
  • NIVEL Nivel educativo
  • SUBNIVEL Servicio educativo
  • C_TIPO Clave tipo educativo
  • C_NIVEL Clave nivel educativo
  • C_SUBN Clave servicio educativo
  • SOS Clave de sostenimiento
  • CLAS Clasificador
  • CONTROL Tipo de control (1= Público, 2= Privado)
  • NOM_CON Nombre del control (Público y Privado)
  • C_T_SOS Clave de tipo de sostenimiento
  • TIPO_SOS Tipo de sostenimiento
  • EML Clave de entidad + municipio + localidad
  • EM Clave de entidad + municipio
  • ENTIDAD Clave de Entidad Federativa
  • NOM_ENT Nombre de la entidad
  • MUNICIPIO Clave del municipio o delegación
  • NOM_MUN Nombre del municipio o delegación
  • LOCALIDAD Clave de la localidad
  • NOM_LOC Nombre de localidad
  • CCT Clave del Centro de Trabajo
  • TURNO Clave del turno
  • NOM_TURNO Nombre del turno
  • NOM_CCT Nombre del Centro de Trabajo
  • DOMICILIO Domicilio
  • ENTRECALLE Entre calle
  • YCALLE Y calle
  • COLONIA Colonia
  • NOM_COL Nombre de la colonia
  • CODPOST Código postal
  • TELEFONO Teléfono
  • CORREOELE Correo electrónico
  • PAGINAWEB Pagina web
  • DIRECTOR Nombre del director
  • PERIODO Ciclo escolar
  • DGSPOH Directivo sin grupo - hombres
  • DGSPOM Directivo sin grupo - mujeres
  • DGSPO Directivo sin grupo
  • CGPOH Directivo con grupo - hombres
  • CGPOM Directivo con grupo - mujeres
  • CGPO Directivo con grupo
  • DOCH Docentes - hombres
  • DOCM Docentes - mujeres
  • DOC Docentes
  • DOC_TOTH Docentes total - hombres
  • DOC_TOTM Docentes total - mujeres
  • DOC_TOT Docentes total
  • PROMOTORH Promotor educativo - hombres
  • PROMOTORM Promotor educativo - mujeres
  • PROMOTOR Promotor educativo
  • ADMVOH Personal administrativo - hombres
  • ADMVOM Personal administrativo - mujeres
  • ADMVO Personal administrativo
  • PER_ESPH Personal especial - hombres
  • PER_ESPM Personal especial - mujeres
  • PER_ESP Personal especial
  • TOT_PERSH Total de personal - hombres
  • TOT_PERSM Total de personal - mujeres
  • TOT_PERS Total de personal
  • AULAS_USO Aulas en uso
  • AULAS_EXIS Aulas existentes
  • LABORATORI Laboratorios
  • TALLERES Talleres
  • A_1H Alumnos 1 grado - hombres
  • A_1M Alumnos 1 grado - mujeres
  • A_1 Alumnos 1 grado
  • A_2H Alumnos 2 grado - hombres
  • A_2M Alumnos 2 grado - mujeres
  • A_2 Alumnos 2 grado
  • A_3H Alumnos 3 grado - hombres
  • A_3M Alumnos 3 grado - mujeres
  • A_3 Alumnos 3 grado
  • A_4H Alumnos 4 grado - hombres
  • A_4M Alumnos 4 grado - mujeres
  • A_4 Alumnos 4 grado
  • A_5H Alumnos 5 grado - hombres
  • A_5M Alumnos 5 grado - mujeres
  • A_5 Alumnos 5 grado
  • A_6H Alumnos 6 grado - hombres
  • A_6M Alumnos 6 grado - mujeres
  • A_6 Alumnos 6 grado
  • A_TH Alumnos total - hombres
  • A_TM Alumnos total - mujeres
  • A_T Alumnos total
  • A_NT Alumnos nuevo ingreso total
  • A_ET Alumnos egresados total
  • A_TT Alumnos titulados total
  • G_1 Grupos 1 grado
  • G_2 Grupos 2 grado
  • G_3 Grupos 3 grado
  • G_4 Grupos 4 grado
  • G_5 Grupos 5 grado
  • G_6 Grupos 6 grado
  • G_T Grupos total
  • D_1 Docentes 1 grado
  • D_2 Docentes 2 grado
  • D_3 Docentes 3 grado
  • D_4 Docentes 4 grado
  • D_5 Docentes 5 grado
  • D_6 Docentes 6 grado
  • D_MAS_1G Docentes que atienden a más de un grado
  • D_T Docentes total (suma de docentes por grado y Docentes que atienden a más de un grado)
  • ITH Inscritos total - hombres
  • ITM Inscritos total - mujeres
  • IT Inscritos total
  • ETH Existentes total - hombres
  • ETM Existentes total - mujeres
  • ET Existentes total
  • APRO_TH Aprobados total - hombres
  • APRO_TM Aprobados total - mujeres
  • APRO_T Aprobados total
  • D_E_FISH Docente de educación física - hombres
  • D_E_FISM Docente de educación física - mujeres
  • D_E_FIS Docente de educación física
  • D_A_ARTH Docente de educación artísticas - hombres
  • D_A_ARTM Docente de educación artísticas - mujeres
  • D_A_ART Docente de educación artísticas
  • D_A_TECH Docente de educación tecnológicas - hombres
  • D_A_TECM Docente de educación tecnológicas - mujeres
  • D_A_TEC Docente de educación tecnológicas
  • D_IDIOMAH Docente de idiomas - hombres
  • D_IDIOMAM Docente de idiomas - mujeres
  • D_IDIOMA Docente de idiomas
  • DOC_CM Docentes que se encuentran en el programa de carrera magisterial
  • TIPO_LOC Tipo de localidad (Rural, Urbana y No Especificado=" ")
  • INDICE Índice de marginación
  • GRADO Grado de marginación
  • GRADO_TEX Grado de marginación, Texto
  • AMBITO U - Urbano, R - Rural
  • ALTITUD Altitud en metro sobre el nivel del mar
  • EML_NO_H Distingue cuando es no nulo, a las escuelas que no se han homologado las EML_SEP vs EML_INEGI
  • UCLU Escuela ubicada en el centroide de la localidad urbana (si no es nulo distingue a las escuelas urbanas que aun no se han ubicado a nivel de manzana)
  • EML_INEGI Concatenación de claves de Entidad, Municipio, Localidad de INEGI
  • LON_DMS Ubicación de la escuela-localidad al Oeste del Meridiano de Greenwich, expresada en grados, minutos y segundos
  • LAT_DMS Ubicación de la escuela-localidad al norte del Ecuador, expresada en grados, minutos y segundos
  • E_S_A Escuela siempre abierta+
  • E_S Escuela segura+
  • E_T_C Escuela de tiempo completo+
  • PEC Programa escuela de calidad+
  • PNL Programa nacional de lectura+

+La informacion de los programas fue proporcionada con caracter preliminar por parte de la Direccion General de Desarrollo de la Gestion e Innovacion Educativa en el mes de octubre 2012


In [1]:
# librerias
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.formula.api as sm
import seaborn as sns
%matplotlib inline
plt.style.use('ggplot')

In [5]:
# leer archivo
data = pd.read_csv('../data/snie1213.csv', low_memory=False)

In [6]:
# verificar su contenido
data.head()


Out[6]:
CCTT TIPO_EDUCA NIVEL SUBNIVEL C_TIPO C_NIVEL C_SUBN SOS CLAS CONTROL ... EML_INEGI LON_DMS LAT_DMS COORDGEOCO GMROTATION E_S_A E_S E_T_C PEC PNL
0 02DDI0003F4 EDUCACION BASICA PREESCOLAR CENDI 10 20 30 24 D 1 ... 20010001 -116:36:38.013 31:53:33.535 NaN 354.16312 0 0 0 1 0
1 02DDI0001H1 EDUCACION BASICA PREESCOLAR CENDI 10 20 30 24 D 1 ... 20020001 -115:28:37.595 32:37:58.280 NaN 354.61593 0 0 0 0 0
2 02DDI0002G1 EDUCACION BASICA PREESCOLAR CENDI 10 20 30 24 D 1 ... 20040001 -116:58:49.439 32:30:30.863 NaN 354.01536 0 0 0 1 0
3 02DDI0004E1 EDUCACION BASICA PREESCOLAR CENDI 10 20 30 24 D 1 ... 20030001 -116:36:51.575 32:34:11.651 NaN 354.16161 0 0 0 0 0
4 03DDI0005C4 EDUCACION BASICA PREESCOLAR CENDI 10 20 30 24 D 1 ... 30010001 -111:39:48.575 25:01:23.504 NaN 356.13946 0 0 0 1 0

5 rows × 143 columns


In [7]:
data.info()


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 264429 entries, 0 to 264428
Columns: 143 entries, CCTT to PNL
dtypes: float64(96), int64(18), object(29)
memory usage: 288.5+ MB

Numero total de escuelas


In [14]:
data['NOM_ENT'].count()


Out[14]:
264429

Numero total de escuelas por entidad


In [18]:
data['NOM_ENT'].value_counts()


Out[18]:
VERACRUZ               24128
MEXICO                 22760
CHIAPAS                19796
JALISCO                15658
PUEBLA                 14568
OAXACA                 13619
MICHOACAN              12513
GUANAJUATO             12478
GUERRERO               11331
DISTRITO FEDERAL       11137
SAN LUIS POTOSI         9085
HIDALGO                 8555
NUEVO LEON              8186
CHIHUAHUA               7262
SINALOA                 7146
TAMAULIPAS              6621
DURANGO                 5958
TABASCO                 5708
ZACATECAS               5562
COAHUILA                5325
SONORA                  5286
BAJA CALIFORNIA         4679
QUERETARO               4141
YUCATAN                 4041
MORELOS                 3515
NAYARIT                 3436
TLAXCALA                2502
QUINTANA ROO            2291
CAMPECHE                2216
AGUASCALIENTES          2128
COLIMA                  1527
BAJA CALIFORNIA SUR     1271
Name: NOM_ENT, dtype: int64

Numero total de alumnos por entidad


In [23]:
data.groupby(['NOM_ENT']).sum()[['A_T']]


Out[23]:
A_T
NOM_ENT
AGUASCALIENTES 376888.0
BAJA CALIFORNIA 940742.0
BAJA CALIFORNIA SUR 194478.0
CAMPECHE 251830.0
CHIAPAS 1671175.0
CHIHUAHUA 1011689.0
COAHUILA 866596.0
COLIMA 188334.0
DISTRITO FEDERAL 2755687.0
DURANGO 519913.0
GUANAJUATO 1660606.0
GUERRERO 1110058.0
HIDALGO 832109.0
JALISCO 2219101.0
MEXICO 4336595.0
MICHOACAN 1259307.0
MORELOS 520975.0
NAYARIT 336183.0
NUEVO LEON 1429823.0
OAXACA 1189133.0
PUEBLA 1937981.0
QUERETARO 583427.0
QUINTANA ROO 380450.0
SAN LUIS POTOSI 830767.0
SINALOA 867123.0
SONORA 836795.0
TABASCO 738641.0
TAMAULIPAS 947505.0
TLAXCALA 369795.0
VERACRUZ 2186926.0
YUCATAN 575093.0
ZACATECAS 473245.0

Grafica


In [41]:
data.groupby(['NOM_ENT']).sum()[['A_T']].plot.bar(figsize=(20,5), title='Numero total de alumnos por entidad')


Out[41]:
<matplotlib.axes._subplots.AxesSubplot at 0x1251f6cc0>

Numero de alumnos inscritos vs numero de alumnos existentes


In [28]:
data.groupby(['NOM_ENT']).sum()[['IT','ET']]


Out[28]:
IT ET
NOM_ENT
AGUASCALIENTES 24493.0 21727.0
BAJA CALIFORNIA 25937.0 22648.0
BAJA CALIFORNIA SUR 11542.0 10426.0
CAMPECHE 35481.0 32286.0
CHIAPAS 70136.0 63317.0
CHIHUAHUA 51540.0 46394.0
COAHUILA 40922.0 36878.0
COLIMA 8735.0 7351.0
DISTRITO FEDERAL 177144.0 162406.0
DURANGO 16901.0 15743.0
GUANAJUATO 137201.0 130262.0
GUERRERO 18995.0 17251.0
HIDALGO 80351.0 70326.0
JALISCO 106112.0 86613.0
MEXICO 98709.0 87249.0
MICHOACAN 82208.0 74865.0
MORELOS 36494.0 32600.0
NAYARIT 6539.0 5828.0
NUEVO LEON 125241.0 113311.0
OAXACA 59826.0 57482.0
PUEBLA 54086.0 49850.0
QUERETARO 28306.0 24528.0
QUINTANA ROO 35627.0 31884.0
SAN LUIS POTOSI 41803.0 34584.0
SINALOA 133458.0 128974.0
SONORA 52634.0 46741.0
TABASCO 31917.0 26064.0
TAMAULIPAS 35787.0 32445.0
TLAXCALA 17877.0 14179.0
VERACRUZ 111159.0 98293.0
YUCATAN 23192.0 19576.0
ZACATECAS 14175.0 12246.0

In [29]:
data.groupby(['NOM_ENT']).sum()[['IT','ET']].plot.bar(figsize=(20,4))


Out[29]:
<matplotlib.axes._subplots.AxesSubplot at 0x11fee22e8>

In [42]:
data['RES'] = data['IT'] - data['ET']

In [43]:
data['RES'].head()


Out[43]:
0    0.0
1    0.0
2    0.0
3    0.0
4    0.0
Name: RES, dtype: float64

Numero de alumnos que desertaron


In [60]:
data.groupby(['NOM_ENT']).sum()[['RES']]


Out[60]:
RES
NOM_ENT
AGUASCALIENTES 2766.0
BAJA CALIFORNIA 3289.0
BAJA CALIFORNIA SUR 1116.0
CAMPECHE 3195.0
CHIAPAS 6819.0
CHIHUAHUA 5146.0
COAHUILA 4044.0
COLIMA 1384.0
DISTRITO FEDERAL 14738.0
DURANGO 1158.0
GUANAJUATO 6939.0
GUERRERO 1744.0
HIDALGO 10025.0
JALISCO 19499.0
MEXICO 11460.0
MICHOACAN 7343.0
MORELOS 3894.0
NAYARIT 711.0
NUEVO LEON 11930.0
OAXACA 2344.0
PUEBLA 4236.0
QUERETARO 3778.0
QUINTANA ROO 3743.0
SAN LUIS POTOSI 7219.0
SINALOA 4484.0
SONORA 5893.0
TABASCO 5853.0
TAMAULIPAS 3342.0
TLAXCALA 3698.0
VERACRUZ 12866.0
YUCATAN 3616.0
ZACATECAS 1929.0

Ordenados menor a mayor


In [61]:
data.groupby(['NOM_ENT']).sum()[['RES']].sort_values(by='RES')


Out[61]:
RES
NOM_ENT
NAYARIT 711.0
BAJA CALIFORNIA SUR 1116.0
DURANGO 1158.0
COLIMA 1384.0
GUERRERO 1744.0
ZACATECAS 1929.0
OAXACA 2344.0
AGUASCALIENTES 2766.0
CAMPECHE 3195.0
BAJA CALIFORNIA 3289.0
TAMAULIPAS 3342.0
YUCATAN 3616.0
TLAXCALA 3698.0
QUINTANA ROO 3743.0
QUERETARO 3778.0
MORELOS 3894.0
COAHUILA 4044.0
PUEBLA 4236.0
SINALOA 4484.0
CHIHUAHUA 5146.0
TABASCO 5853.0
SONORA 5893.0
CHIAPAS 6819.0
GUANAJUATO 6939.0
SAN LUIS POTOSI 7219.0
MICHOACAN 7343.0
HIDALGO 10025.0
MEXICO 11460.0
NUEVO LEON 11930.0
VERACRUZ 12866.0
DISTRITO FEDERAL 14738.0
JALISCO 19499.0

los 5 estados con mayor desercion


In [63]:
data.groupby(['NOM_ENT']).sum()[['RES']].sort_values(by='RES')[-5:]


Out[63]:
RES
NOM_ENT
MEXICO 11460.0
NUEVO LEON 11930.0
VERACRUZ 12866.0
DISTRITO FEDERAL 14738.0
JALISCO 19499.0

Grafica


In [64]:
data.groupby(['NOM_ENT']).sum()[['RES']].plot.bar(figsize=(20,4))


Out[64]:
<matplotlib.axes._subplots.AxesSubplot at 0x12348def0>

regresion lineal


In [65]:
import seaborn as sns

In [72]:
sns.jointplot('APRO_T', 'GRADO',data=data, kind='reg')


Out[72]:
<seaborn.axisgrid.JointGrid at 0x1242c4c50>

In [ ]:
OLS