1 · Preparação e integração dos dados

Integração dos ciclos do SAEB da Paraíba entre 2007 e 2017 e primeiros tratamentos.

Esta etapa reúne os ciclos bienais, trata idades ausentes e remove questionários sem respostas. Os resultados exibidos são os registros preservados da execução original.

Mostrar código
import pandas as pd
import os
cwd = os.getcwd()

ROOT = os.path.join(cwd, '../')
DATA_FOLDER = os.path.join(ROOT, 'data/')
RAW_DATA_FOLDER = os.path.join(DATA_FOLDER, 'raw/')
Mostrar código
raw_saeb_pb_list = [name for name in os.listdir(RAW_DATA_FOLDER) if name.startswith('saeb_pb_') and 'filtered' not in name and 'treated' not in name and '2017-2007' not in name]
print(raw_saeb_pb_list)

saeb_years = [filename.split('saeb_pb_')[1].split('.pkl')[0] for filename in raw_saeb_pb_list]
print(saeb_years)
['saeb_pb_2017.pkl', 'saeb_pb_2009.pkl', 'saeb_pb_2015.pkl', 'saeb_pb_2013.pkl', 'saeb_pb_2011.pkl', 'saeb_pb_2007.pkl']
['2017', '2009', '2015', '2013', '2011', '2007']
Mostrar código
# read colunas_final to get the columns to use
with open(os.path.join(RAW_DATA_FOLDER, 'colunas_final.txt'), 'r') as f:
    colunas = f.read().splitlines()

print(colunas)
['ano', 'sigla_uf', 'escola_publica', 'id_aluno', 'situacao_censo', 'disciplina', 'amostra', 'proficiencia', 'erro_padrao', 'proficiencia_saeb', 'erro_padrao_saeb', 'desempenho_aluno', 'sexo', 'raca_cor', 'ano_nascimento', 'idade', 'possui_eletrecidade', 'possui_escrivaninha', 'possui_enciclopedia', 'possui_atlas', 'possui_dicionario', 'possui_calculadora', 'escolaridade_mae', 'mae_sabe_ler_escrever', 'mae_le', 'escolaridade_pai', 'pai_sabe_ler_escrever', 'pai_le', 'responsaveis_leem', 'responsaveis_cobram_realizacao_tarefa_casa', 'responsaveis_ajudam_realizacao_tarefa_casa', 'responsaveis_incentivam_realizacao_licao_casa', 'responsaveis_incentivam_estudos', 'responsaveis_incentivam_leitura', 'responsaveis_incentivam_comparecer_aulas', 'responsaveis_incentivam_pontualidade', 'responsaveis_incentivam_boas_notas', 'possui_computador', 'tempo_chegada_escola', 'forma_chegada_escola', 'transporte_escolar', 'faltas_aula', 'motivo_faltas', 'desempenho_prejudicado_falta', 'tempo_lazer', 'tempo_cursos', 'tempo_estudos', 'quantidade_livros', 'leitura_jornais', 'leitura_noticias', 'leitura_livros_geral', 'leitura_literatura', 'leitura_literatura_infantojuvenil', 'leitura_historia_quadrinhos', 'leitura_revistas_tematicas', 'leitura_revista_comportamento', 'leitura_revistas_geral', 'leitura_internet', 'leitura_outros_materiais', 'frequenta_biblioteca', 'frequenta_cinema', 'frequenta_espetaculo_exposicao', 'frequenta_teatro', 'frequenta_show', 'frequenta_festas_comunidade', 'participa_gremio_escolar', 'participa_atividades_esporte', 'participa_atividades_artisticas', 'participa_trabalho_solidario', 'participa_reforco_escolar', 'participa_excursao_acampamento', 'participa_festas', 'curso_atividades_artisticas', 'curso_reforco_escolar', 'curso_idioma_externo', 'curso_informatica', 'curso_outros', 'quando_nao_entende_materia', 'gosta_estudar_disciplina', 'entendimento_ensino', 'disciplina_auxilia_compreensao', 'professor_disciplina', 'faz_licao_casa', 'tempo_licao_casa', 'fez_redacao', 'professor_leitura_livros_licao_casa', 'correcao_licao_casa', 'correcao_licao_casa_alunos', 'utiliza_computador_licao_casa', 'utiliza_computador', 'utiliza_computador_escola', 'utiliza_biblioteca_escola', 'utiliza_biblioteca_externa', 'existe_lugar_calmo_estudos', 'boas_notas_disciplina', 'desempenho_disciplina', 'professor_importa_voce_diz', 'professor_conversa_avaliacao', 'professor_elogia_merecimento', 'professor_ajuda_se_necessario', 'professor_atende_prontamente', 'professor_esforca_aprendizado', 'professor_utiliza_espacos_externos', 'professor_espera_silencio', 'professor_cobra', 'brigou_professor', 'turma_exclui', 'familia_avisada_falta', 'alunos_desordeiros', 'alunos_atentos', 'alunos_obedientes', 'possui_amigos_sala', 'estuda_habitualmente', 'motivo_estar_escola', 'utiliza_aprendizado_diariamente', 'rede', 'id_escola', 'serie', 'turno']
Mostrar código
df2017 = pd.read_pickle(os.path.join(RAW_DATA_FOLDER, 'saeb_pb_2017.pkl'))
df2017 = df2017.dropna(axis=1, how='all')
Mostrar código
df2017[df2017['preenchimento_questionario'] == 0]['leitura_internet'].value_counts(dropna=False)
leitura_internet
None    23190
Name: count, dtype: int64
Mostrar código
df2009 = pd.read_pickle(os.path.join(RAW_DATA_FOLDER, 'saeb_pb_2009.pkl'))
df2009 = df2009.dropna(axis=1, how='all')
df2009.columns
Index(['ano', 'sigla_uf', 'id_regiao', 'id_municipio', 'id_escola', 'rede',
       'escola_publica', 'localizacao', 'id_turma', 'turno', 'serie',
       'id_aluno', 'disciplina', 'preenchimento_caderno', 'proficiencia',
       'erro_padrao', 'proficiencia_saeb', 'erro_padrao_saeb',
       'desempenho_aluno', 'sexo', 'raca_cor', 'mes_nascimento',
       'ano_nascimento', 'idade', 'mora_mae', 'mora_pai',
       'quantidade_pessoas_domicilio', 'possui_trabalho',
       'possui_casa_dormitorio', 'possui_casa_banheiro', 'possui_automovel',
       'possui_geladeira', 'possui_geladeira_freezer', 'possui_freezer',
       'possui_maquina_lavar_roupa', 'possui_radio', 'possui_tv',
       'possui_videocassete_dvd', 'possui_computador',
       'possui_empregada_domestica', 'escolaridade_mae',
       'mae_sabe_ler_escrever', 'mae_le', 'escolaridade_pai',
       'pai_sabe_ler_escrever', 'pai_le', 'responsaveis_conversam_escola',
       'responsaveis_incentivam_realizacao_licao_casa',
       'responsaveis_incentivam_estudos', 'responsaveis_incentivam_leitura',
       'responsaveis_incentivam_comparecer_aulas',
       'responsaveis_comparecem_reuniao_pais', 'inicio_estudos', 'rede_ef',
       'reprovacao', 'evasao_escolar_ate_final_ano', 'tempo_lazer',
       'tempo_trabalho_domestico', 'quantidade_livros',
       'gosta_estudar_disciplina', 'faz_licao_casa', 'correcao_licao_casa',
       'professor_elogia_merecimento', 'pretensao_futura'],
      dtype='object')
Mostrar código
df2017 = pd.read_pickle(os.path.join(RAW_DATA_FOLDER, 'saeb_pb_2017.pkl'))
df2017 = df2017.dropna(axis=1, how='all')
base_columns = set(df2017.columns)

# check for divergent column names
for year in filter(lambda x: x != '2013', sorted(saeb_years)):
    df = pd.read_pickle(os.path.join(RAW_DATA_FOLDER, f'saeb_pb_{year}.pkl'))
    df = df.dropna(axis=1, how='all')
    current_columns = set(df.columns)
    if current_columns != base_columns:
        print(f'Columns diverge for year {year}')
        print(f'Columns in {year} but not in 2017: {current_columns - base_columns}')
        print(f'Columns in 2017 but not in {year}: {base_columns - current_columns}')
        print()
Columns diverge for year 2007
Columns in 2007 but not in 2017: {'possui_empregada_domestica', 'quantidade_livros', 'professor_elogia_merecimento', 'possui_aspirador_po'}
Columns in 2017 but not in 2007: {'respostas_bloco_2', 'caderno', 'respostas_bloco_1', 'faixa_etaria', 'bloco_1', 'leitura_jornais', 'utiliza_biblioteca_escola', 'indicador_prova_brasil', 'preenchimento_questionario', 'leitura_internet', 'frequenta_biblioteca', 'situacao_censo', 'indicador_proficiencia', 'peso_aluno', 'leitura_revistas_geral', 'leitura_historia_quadrinhos', 'frequenta_espetaculo_exposicao', 'frequenta_cinema', 'leitura_literatura_infantojuvenil', 'area', 'possui_freezer', 'leitura_revista_comportamento', 'estrato', 'frequenta_festas_comunidade', 'bloco_2', 'possui_empregada_domestica_cinco_dias', 'leitura_livros_geral'}

Columns diverge for year 2009
Columns in 2009 but not in 2017: {'possui_empregada_domestica', 'quantidade_livros', 'professor_elogia_merecimento'}
Columns in 2017 but not in 2009: {'respostas_bloco_2', 'caderno', 'respostas_bloco_1', 'faixa_etaria', 'bloco_1', 'leitura_jornais', 'utiliza_biblioteca_escola', 'indicador_prova_brasil', 'preenchimento_questionario', 'leitura_internet', 'frequenta_biblioteca', 'situacao_censo', 'indicador_proficiencia', 'peso_aluno', 'leitura_revistas_geral', 'leitura_historia_quadrinhos', 'frequenta_espetaculo_exposicao', 'frequenta_cinema', 'leitura_literatura_infantojuvenil', 'area', 'leitura_revista_comportamento', 'estrato', 'frequenta_festas_comunidade', 'bloco_2', 'possui_empregada_domestica_cinco_dias', 'leitura_livros_geral'}

Columns diverge for year 2011
Columns in 2011 but not in 2017: {'frequenta_show', 'possui_empregada_domestica', 'leitura_literatura', 'frequenta_teatro'}
Columns in 2017 but not in 2011: {'leitura_literatura_infantojuvenil', 'estrato', 'preenchimento_caderno', 'frequenta_espetaculo_exposicao', 'possui_empregada_domestica_cinco_dias', 'area'}
Mostrar código
min_columns = len(base_columns)
#useful_columns = set(colunas)
useful_columns = None

dfs = []

for saeb_year in sorted(saeb_years, reverse=True):
    print(saeb_year)  
    df = pd.read_pickle(RAW_DATA_FOLDER + 'saeb_pb_' + saeb_year + '.pkl')
    df = df.dropna(axis=1, how='all')
    if 'preenchimento_questionario' in df.columns:
        df = df[df['preenchimento_questionario'] == 1]
    else:
        print('preenchimento_questionario not found for year ', saeb_year)
    print(df.columns)
    if len(df.columns) < min_columns or not useful_columns:
        print('Columns are less than the minimum')
        min_columns = len(df.columns)
        if useful_columns:
            useful_columns = useful_columns.intersection(set(df.columns))
        else:
            useful_columns = set(df.columns)
    df = df[[col for col in list(useful_columns) if col in df.columns]]
    print(len(df.columns))
    
    assert 'proficiencia' in df.columns
    indexes_to_remove = df[df['proficiencia'].isnull()].index
    df = df.drop(indexes_to_remove)
    columns_to_filter = df.select_dtypes(include=['object']).columns

    # remove rows with all values '.' or '*'
    df = df[(df[columns_to_filter] != '.').all(axis=1)]
    df = df[(df[columns_to_filter] != '*').all(axis=1)]
    print(len(df))

    # change 'idade' type to float (temporarily)
    df['idade'] = df['idade'].astype(float)

    # fill 'idade' missing values with the mean (int)
    df.fillna({'idade': df['idade'].mean()}, inplace=True)
    df['idade'] = df['idade'].astype(int)

    dfs.append(df)
    # save first row as dictionary to file
    with open(os.path.join(DATA_FOLDER, f'random_rows/random_row_{saeb_year}.json'), 'w') as f:
        # transform 'disciplina' column to index
        _ = df.set_index('disciplina')
        f.write(_[_['id_aluno'] == _.sample()['id_aluno'].values[0]].to_json(orient='index'))
2017
Index(['ano', 'sigla_uf', 'id_regiao', 'id_municipio', 'area', 'id_escola',
       'rede', 'escola_publica', 'localizacao', 'id_turma', 'turno', 'serie',
       'id_aluno', 'situacao_censo', 'disciplina', 'preenchimento_caderno',
       'caderno', 'bloco_1', 'bloco_2', 'respostas_bloco_1',
       'respostas_bloco_2', 'indicador_proficiencia', 'indicador_prova_brasil',
       'estrato', 'peso_aluno', 'proficiencia', 'erro_padrao',
       'proficiencia_saeb', 'erro_padrao_saeb', 'desempenho_aluno',
       'preenchimento_questionario', 'sexo', 'raca_cor', 'mes_nascimento',
       'ano_nascimento', 'idade', 'faixa_etaria', 'mora_mae', 'mora_pai',
       'quantidade_pessoas_domicilio', 'possui_trabalho',
       'possui_casa_dormitorio', 'possui_casa_banheiro', 'possui_automovel',
       'possui_geladeira', 'possui_geladeira_freezer', 'possui_freezer',
       'possui_maquina_lavar_roupa', 'possui_radio', 'possui_tv',
       'possui_videocassete_dvd', 'possui_computador',
       'possui_empregada_domestica_cinco_dias', 'escolaridade_mae',
       'mae_sabe_ler_escrever', 'mae_le', 'escolaridade_pai',
       'pai_sabe_ler_escrever', 'pai_le', 'responsaveis_conversam_escola',
       'responsaveis_incentivam_realizacao_licao_casa',
       'responsaveis_incentivam_estudos', 'responsaveis_incentivam_leitura',
       'responsaveis_incentivam_comparecer_aulas',
       'responsaveis_comparecem_reuniao_pais', 'inicio_estudos', 'rede_ef',
       'reprovacao', 'evasao_escolar_ate_final_ano', 'tempo_lazer',
       'tempo_trabalho_domestico', 'leitura_jornais', 'leitura_livros_geral',
       'leitura_literatura_infantojuvenil', 'leitura_historia_quadrinhos',
       'leitura_revista_comportamento', 'leitura_revistas_geral',
       'leitura_internet', 'frequenta_biblioteca', 'frequenta_cinema',
       'frequenta_espetaculo_exposicao', 'frequenta_festas_comunidade',
       'gosta_estudar_disciplina', 'faz_licao_casa', 'correcao_licao_casa',
       'utiliza_biblioteca_escola', 'pretensao_futura'],
      dtype='object')
Columns are less than the minimum
87
70022
2015
Index(['ano', 'sigla_uf', 'id_regiao', 'id_municipio', 'area', 'id_escola',
       'rede', 'escola_publica', 'localizacao', 'id_turma', 'turno', 'serie',
       'id_aluno', 'situacao_censo', 'disciplina', 'preenchimento_caderno',
       'caderno', 'bloco_1', 'bloco_2', 'respostas_bloco_1',
       'respostas_bloco_2', 'indicador_proficiencia', 'indicador_prova_brasil',
       'estrato', 'peso_aluno', 'proficiencia', 'erro_padrao',
       'proficiencia_saeb', 'erro_padrao_saeb', 'desempenho_aluno',
       'preenchimento_questionario', 'sexo', 'raca_cor', 'mes_nascimento',
       'ano_nascimento', 'idade', 'faixa_etaria', 'mora_mae', 'mora_pai',
       'quantidade_pessoas_domicilio', 'possui_trabalho',
       'possui_casa_dormitorio', 'possui_casa_banheiro', 'possui_automovel',
       'possui_geladeira', 'possui_geladeira_freezer', 'possui_freezer',
       'possui_maquina_lavar_roupa', 'possui_radio', 'possui_tv',
       'possui_videocassete_dvd', 'possui_computador',
       'possui_empregada_domestica_cinco_dias', 'escolaridade_mae',
       'mae_sabe_ler_escrever', 'mae_le', 'escolaridade_pai',
       'pai_sabe_ler_escrever', 'pai_le', 'responsaveis_conversam_escola',
       'responsaveis_incentivam_realizacao_licao_casa',
       'responsaveis_incentivam_estudos', 'responsaveis_incentivam_leitura',
       'responsaveis_incentivam_comparecer_aulas',
       'responsaveis_comparecem_reuniao_pais', 'inicio_estudos', 'rede_ef',
       'reprovacao', 'evasao_escolar_ate_final_ano', 'tempo_lazer',
       'tempo_trabalho_domestico', 'leitura_jornais', 'leitura_livros_geral',
       'leitura_literatura_infantojuvenil', 'leitura_historia_quadrinhos',
       'leitura_revista_comportamento', 'leitura_revistas_geral',
       'leitura_internet', 'frequenta_biblioteca', 'frequenta_cinema',
       'frequenta_espetaculo_exposicao', 'frequenta_festas_comunidade',
       'gosta_estudar_disciplina', 'faz_licao_casa', 'correcao_licao_casa',
       'utiliza_biblioteca_escola', 'pretensao_futura'],
      dtype='object')
87
63112
2013
Index(['ano', 'sigla_uf', 'id_regiao', 'id_municipio', 'area', 'id_escola',
       'rede', 'escola_publica', 'localizacao', 'id_turma', 'turno', 'serie',
       'id_aluno', 'situacao_censo', 'disciplina', 'preenchimento_caderno',
       'caderno', 'bloco_1', 'bloco_2', 'respostas_bloco_1',
       'respostas_bloco_2', 'indicador_proficiencia', 'indicador_prova_brasil',
       'peso_aluno', 'proficiencia', 'erro_padrao', 'proficiencia_saeb',
       'erro_padrao_saeb', 'desempenho_aluno', 'preenchimento_questionario',
       'sexo', 'raca_cor', 'mes_nascimento', 'ano_nascimento', 'idade',
       'faixa_etaria', 'mora_mae', 'mora_pai', 'quantidade_pessoas_domicilio',
       'possui_trabalho', 'possui_casa_dormitorio', 'possui_casa_banheiro',
       'possui_automovel', 'possui_geladeira', 'possui_geladeira_freezer',
       'possui_freezer', 'possui_maquina_lavar_roupa', 'possui_radio',
       'possui_tv', 'possui_videocassete_dvd', 'possui_computador',
       'possui_empregada_domestica_cinco_dias', 'escolaridade_mae',
       'mae_sabe_ler_escrever', 'mae_le', 'escolaridade_pai',
       'pai_sabe_ler_escrever', 'pai_le', 'responsaveis_conversam_escola',
       'responsaveis_incentivam_realizacao_licao_casa',
       'responsaveis_incentivam_estudos', 'responsaveis_incentivam_leitura',
       'responsaveis_incentivam_comparecer_aulas',
       'responsaveis_comparecem_reuniao_pais', 'inicio_estudos', 'rede_ef',
       'reprovacao', 'evasao_escolar_ate_final_ano', 'tempo_lazer',
       'tempo_trabalho_domestico', 'leitura_jornais', 'leitura_livros_geral',
       'leitura_literatura_infantojuvenil', 'leitura_historia_quadrinhos',
       'leitura_revista_comportamento', 'leitura_revistas_geral',
       'leitura_internet', 'frequenta_biblioteca', 'frequenta_cinema',
       'frequenta_espetaculo_exposicao', 'frequenta_festas_comunidade',
       'gosta_estudar_disciplina', 'faz_licao_casa', 'correcao_licao_casa',
       'utiliza_biblioteca_escola', 'pretensao_futura'],
      dtype='object')
Columns are less than the minimum
86
67362
2011
Index(['ano', 'sigla_uf', 'id_regiao', 'id_municipio', 'id_escola', 'rede',
       'escola_publica', 'localizacao', 'id_turma', 'turno', 'serie',
       'id_aluno', 'situacao_censo', 'disciplina', 'caderno', 'bloco_1',
       'bloco_2', 'respostas_bloco_1', 'respostas_bloco_2',
       'indicador_proficiencia', 'indicador_prova_brasil', 'peso_aluno',
       'proficiencia', 'erro_padrao', 'proficiencia_saeb', 'erro_padrao_saeb',
       'desempenho_aluno', 'preenchimento_questionario', 'sexo', 'raca_cor',
       'mes_nascimento', 'ano_nascimento', 'idade', 'faixa_etaria', 'mora_mae',
       'mora_pai', 'quantidade_pessoas_domicilio', 'possui_trabalho',
       'possui_casa_dormitorio', 'possui_casa_banheiro', 'possui_automovel',
       'possui_geladeira', 'possui_geladeira_freezer', 'possui_freezer',
       'possui_maquina_lavar_roupa', 'possui_radio', 'possui_tv',
       'possui_videocassete_dvd', 'possui_computador',
       'possui_empregada_domestica', 'escolaridade_mae',
       'mae_sabe_ler_escrever', 'mae_le', 'escolaridade_pai',
       'pai_sabe_ler_escrever', 'pai_le', 'responsaveis_conversam_escola',
       'responsaveis_incentivam_realizacao_licao_casa',
       'responsaveis_incentivam_estudos', 'responsaveis_incentivam_leitura',
       'responsaveis_incentivam_comparecer_aulas',
       'responsaveis_comparecem_reuniao_pais', 'inicio_estudos', 'rede_ef',
       'reprovacao', 'evasao_escolar_ate_final_ano', 'tempo_lazer',
       'tempo_trabalho_domestico', 'leitura_jornais', 'leitura_livros_geral',
       'leitura_literatura', 'leitura_historia_quadrinhos',
       'leitura_revista_comportamento', 'leitura_revistas_geral',
       'leitura_internet', 'frequenta_biblioteca', 'frequenta_cinema',
       'frequenta_teatro', 'frequenta_show', 'frequenta_festas_comunidade',
       'gosta_estudar_disciplina', 'faz_licao_casa', 'correcao_licao_casa',
       'utiliza_biblioteca_escola', 'pretensao_futura'],
      dtype='object')
Columns are less than the minimum
81
34338
2009
preenchimento_questionario not found for year  2009
Index(['ano', 'sigla_uf', 'id_regiao', 'id_municipio', 'id_escola', 'rede',
       'escola_publica', 'localizacao', 'id_turma', 'turno', 'serie',
       'id_aluno', 'disciplina', 'preenchimento_caderno', 'proficiencia',
       'erro_padrao', 'proficiencia_saeb', 'erro_padrao_saeb',
       'desempenho_aluno', 'sexo', 'raca_cor', 'mes_nascimento',
       'ano_nascimento', 'idade', 'mora_mae', 'mora_pai',
       'quantidade_pessoas_domicilio', 'possui_trabalho',
       'possui_casa_dormitorio', 'possui_casa_banheiro', 'possui_automovel',
       'possui_geladeira', 'possui_geladeira_freezer', 'possui_freezer',
       'possui_maquina_lavar_roupa', 'possui_radio', 'possui_tv',
       'possui_videocassete_dvd', 'possui_computador',
       'possui_empregada_domestica', 'escolaridade_mae',
       'mae_sabe_ler_escrever', 'mae_le', 'escolaridade_pai',
       'pai_sabe_ler_escrever', 'pai_le', 'responsaveis_conversam_escola',
       'responsaveis_incentivam_realizacao_licao_casa',
       'responsaveis_incentivam_estudos', 'responsaveis_incentivam_leitura',
       'responsaveis_incentivam_comparecer_aulas',
       'responsaveis_comparecem_reuniao_pais', 'inicio_estudos', 'rede_ef',
       'reprovacao', 'evasao_escolar_ate_final_ano', 'tempo_lazer',
       'tempo_trabalho_domestico', 'quantidade_livros',
       'gosta_estudar_disciplina', 'faz_licao_casa', 'correcao_licao_casa',
       'professor_elogia_merecimento', 'pretensao_futura'],
      dtype='object')
Columns are less than the minimum
60
35354
2007
preenchimento_questionario not found for year  2007
Index(['ano', 'sigla_uf', 'id_regiao', 'id_municipio', 'id_escola', 'rede',
       'escola_publica', 'localizacao', 'id_turma', 'turno', 'serie',
       'id_aluno', 'disciplina', 'preenchimento_caderno', 'proficiencia',
       'erro_padrao', 'proficiencia_saeb', 'erro_padrao_saeb',
       'desempenho_aluno', 'sexo', 'raca_cor', 'mes_nascimento',
       'ano_nascimento', 'idade', 'mora_mae', 'mora_pai',
       'quantidade_pessoas_domicilio', 'possui_trabalho',
       'possui_casa_dormitorio', 'possui_casa_banheiro', 'possui_automovel',
       'possui_geladeira', 'possui_geladeira_freezer',
       'possui_maquina_lavar_roupa', 'possui_aspirador_po', 'possui_radio',
       'possui_tv', 'possui_videocassete_dvd', 'possui_computador',
       'possui_empregada_domestica', 'escolaridade_mae',
       'mae_sabe_ler_escrever', 'mae_le', 'escolaridade_pai',
       'pai_sabe_ler_escrever', 'pai_le', 'responsaveis_conversam_escola',
       'responsaveis_incentivam_realizacao_licao_casa',
       'responsaveis_incentivam_estudos', 'responsaveis_incentivam_leitura',
       'responsaveis_incentivam_comparecer_aulas',
       'responsaveis_comparecem_reuniao_pais', 'inicio_estudos', 'rede_ef',
       'reprovacao', 'evasao_escolar_ate_final_ano', 'tempo_lazer',
       'tempo_trabalho_domestico', 'quantidade_livros',
       'gosta_estudar_disciplina', 'faz_licao_casa', 'correcao_licao_casa',
       'professor_elogia_merecimento', 'pretensao_futura'],
      dtype='object')
59
42751
Mostrar código
df.columns
Index(['escolaridade_mae', 'correcao_licao_casa', 'erro_padrao_saeb',
       'possui_videocassete_dvd', 'possui_radio', 'raca_cor', 'faz_licao_casa',
       'responsaveis_conversam_escola', 'possui_casa_dormitorio', 'ano',
       'pai_le', 'turno', 'responsaveis_incentivam_leitura', 'proficiencia',
       'idade', 'responsaveis_comparecem_reuniao_pais', 'possui_automovel',
       'possui_maquina_lavar_roupa', 'responsaveis_incentivam_estudos',
       'escola_publica', 'pretensao_futura', 'escolaridade_pai', 'id_escola',
       'reprovacao', 'id_municipio', 'localizacao', 'mes_nascimento',
       'inicio_estudos', 'possui_trabalho', 'tempo_trabalho_domestico',
       'mae_sabe_ler_escrever', 'possui_casa_banheiro', 'mora_pai',
       'proficiencia_saeb', 'erro_padrao', 'rede_ef',
       'gosta_estudar_disciplina', 'rede', 'possui_tv', 'sexo',
       'evasao_escolar_ate_final_ano', 'possui_geladeira_freezer', 'id_regiao',
       'quantidade_pessoas_domicilio', 'pai_sabe_ler_escrever',
       'responsaveis_incentivam_realizacao_licao_casa', 'mae_le',
       'possui_geladeira', 'desempenho_aluno', 'mora_mae', 'possui_computador',
       'sigla_uf', 'id_aluno', 'responsaveis_incentivam_comparecer_aulas',
       'id_turma', 'serie', 'disciplina', 'tempo_lazer', 'ano_nascimento'],
      dtype='object')
Mostrar código
# concat dfs into one
df = pd.concat(dfs)
print(len(df))
df.sample(10)
312939
correcao_licao_casa faz_licao_casa pai_le indicador_prova_brasil pretensao_futura preenchimento_questionario id_escola reprovacao localizacao tempo_trabalho_domestico ... indicador_proficiencia gosta_estudar_disciplina leitura_historia_quadrinhos possui_geladeira frequenta_cinema area possui_freezer estrato responsaveis_incentivam_comparecer_aulas disciplina
54498 A B B <NA> A <NA> 25063405 A 2 D ... <NA> A NaN A NaN NaN B <NA> A LP
61568 A A A 1 C 1 25033948 B 2 A ... 1 A A B C 2 B 250355532 A LP
29126 B C None 1 C 1 25109332 B 2 None ... 1 None None B C 2 A <NA> A MT
27983 A B A 1 C 1 25061704 A 1 C ... 1 A None None C 2 None <NA> A MT
72524 A A A 1 C 1 25120239 A 1 C ... 1 A A B A 2 A <NA> A LP
70014 A B A 1 A 1 61211341 A 1 E ... 1 A B B C 2 A 250150031 A LP
85753 A A A 1 A 1 25112945 B 1 B ... 1 A A A C NaN B <NA> A LP
48959 A B A 1 C 1 25093932 A 1 B ... 1 A C B B 1 A 250750721 A LP
39153 B B B 1 D 1 25054767 B 1 A ... 1 B C B None 2 B <NA> A MT
76474 A A B 1 C 1 25073699 A 1 D ... 1 A A A C NaN B <NA> A LP

10 rows × 87 columns

Mostrar código
df['desempenho_aluno'].value_counts(dropna=False)
desempenho_aluno
Básico          164142
Insuficiente    110366
Proficiente      34333
Avançado          4098
Name: count, dtype: int64
Mostrar código
save = False
if save:
    df.to_pickle(os.path.join(RAW_DATA_FOLDER, 'saeb_pb_2017-2007.pkl'))