Skip to content

Commit

Permalink
Merge pull request #616 from basedosdados/add-taxa-alfabetizacao-saeb
Browse files Browse the repository at this point in the history
add: `br_inep_saeb.{brasil,uf}_taxa_alfabetizacao`
  • Loading branch information
laura-l-amaral authored Jul 10, 2024
2 parents 3124aad + 970e590 commit 98c0c51
Show file tree
Hide file tree
Showing 4 changed files with 183 additions and 1 deletion.
15 changes: 15 additions & 0 deletions models/br_inep_saeb/br_inep_saeb__brasil_taxa_alfabetizacao.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{{
config(
alias="brasil_taxa_alfabetizacao",
schema="br_inep_saeb",
materialized="table",
)
}}

select
safe_cast(ano as int64) ano,
safe_cast(rede as string) rede,
safe_cast(localizacao as string) localizacao,
safe_cast(area as string) area,
safe_cast(taxa_alfabetizacao as float64) taxa_alfabetizacao,
from `basedosdados-staging.br_inep_saeb_staging.brasil_taxa_alfabetizacao` as t
13 changes: 13 additions & 0 deletions models/br_inep_saeb/br_inep_saeb__uf_taxa_alfabetizacao.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{{
config(
alias="uf_taxa_alfabetizacao", schema="br_inep_saeb", materialized="table"
)
}}
select
safe_cast(ano as int64) ano,
safe_cast(sigla_uf as string) sigla_uf,
safe_cast(rede as string) rede,
safe_cast(localizacao as string) localizacao,
safe_cast(area as string) area,
safe_cast(taxa_alfabetizacao as float64) taxa_alfabetizacao,
from `basedosdados-staging.br_inep_saeb_staging.uf_taxa_alfabetizacao` as t
103 changes: 103 additions & 0 deletions models/br_inep_saeb/code/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import pandas as pd
import basedosdados as bd
import os

os.getcwd()

INPUT = os.path.join(os.getcwd(), "input")
OUTPUT = os.path.join(os.getcwd(), "output")
URL = "https://download.inep.gov.br/saeb/resultados/saeb_2021_brasil_estados_municipios_c_tx_alfabetizado.xlsx"

os.makedirs(INPUT, exist_ok=True)
os.makedirs(OUTPUT, exist_ok=True)

os.system(f"cd {INPUT}; curl -O -k {URL}")

# Brasil

df_br = pd.read_excel(os.path.join(INPUT, os.path.basename(URL)), sheet_name="Brasil")

df_br.columns

df_br["ID"].unique()

df_br["ANO_SAEB"].unique()

df_br["DEPENDENCIA_ADM"].unique()

df_br["LOCALIZACAO"].unique()

df_br["CAPITAL"].unique()

df_br["TX_ALFABETIZADO"].unique()

df_br["DEPENDENCIA_ADM"] = df_br["DEPENDENCIA_ADM"].str.lower()

df_br["LOCALIZACAO"] = df_br["LOCALIZACAO"].str.lower()

df_br["CAPITAL"] = df_br["CAPITAL"].str.lower()

df_br = df_br.drop(columns=["ID", "MEDIA_2_LP", "MEDIA_2_MT"])

df_br = df_br.rename(
columns={
"ANO_SAEB": "ano",
"DEPENDENCIA_ADM": "rede",
"LOCALIZACAO": "localizacao",
"CAPITAL": "area",
"TX_ALFABETIZADO": "taxa_alfabetizacao",
},
errors="raise",
)

df_br.to_csv(os.path.join(OUTPUT, "brasil_taxa_alfabetizacao.csv"), index=False)

# Estados

df_ufs = pd.read_excel(os.path.join(INPUT, os.path.basename(URL)), sheet_name="Estados")

df_ufs["DEPENDENCIA_ADM"] = df_ufs["DEPENDENCIA_ADM"].str.lower()

df_ufs["LOCALIZACAO"] = df_ufs["LOCALIZACAO"].str.lower()

df_ufs["CAPITAL"] = df_ufs["CAPITAL"].str.lower()

bd_dirs_ufs = bd.read_sql(
"select sigla, nome from `basedosdados.br_bd_diretorios_brasil.uf`",
billing_project_id="basedosdados-dev",
)

uf_map = dict([(i["nome"], i["sigla"]) for i in bd_dirs_ufs.to_dict("records")]) # type: ignore

df_ufs["NO_UF"].unique()

df_ufs["NO_UF"] = df_ufs["NO_UF"].replace(uf_map)

df_ufs["NO_UF"].isna().sum()

df_ufs = df_ufs.drop(columns=["CO_UF", "MEDIA_2_LP", "MEDIA_2_MT"])

df_ufs = df_ufs.rename(
columns={
"ANO_SAEB": "ano",
"NO_UF": "sigla_uf",
"DEPENDENCIA_ADM": "rede",
"LOCALIZACAO": "localizacao",
"CAPITAL": "area",
"TX_ALFABETIZADO": "taxa_alfabetizacao",
},
errors="raise",
)

df_ufs.to_csv(os.path.join(OUTPUT, "uf_taxa_alfabetizacao.csv"), index=False)

# Upload

## Brasil

tb_br = bd.Table(dataset_id="br_inep_saeb", table_id="brasil_taxa_alfabetizacao")
tb_br.create(os.path.join(OUTPUT, "brasil_taxa_alfabetizacao.csv"))


tb_uf = bd.Table(dataset_id="br_inep_saeb", table_id="uf_taxa_alfabetizacao")
tb_uf.create(os.path.join(OUTPUT, "uf_taxa_alfabetizacao.csv"))
53 changes: 52 additions & 1 deletion models/br_inep_saeb/schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1492,6 +1492,57 @@ models:
description: Percentual de alunos que se enquadram no nível nove de aprendizage
- name: nivel_10
description: Percentual de alunos que se enquadram no nível dez de aprendizagem
- name: br_inep_saeb__brasil_taxa_alfabetizacao
description: Taxa de alfabetização para o Brasil referente ao 2º ano divulgado
pelo SAEB
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns: [ano, rede, localizacao, area]
- not_null_proportion_multiple_columns:
at_least: 0.95
columns:
- name: ano
description: Ano
tests:
- relationships:
to: ref('br_bd_diretorios_data_tempo__ano')
field: ano.ano
- name: rede
description: Rede Escolar
- name: localizacao
description: Localização da escola
- name: area
description: 'Área onde a escola está localizada: interior, capital ou total'
- name: taxa_alfabetizacao
description: Taxa de alfabetização
- name: br_inep_saeb__uf_taxa_alfabetizacao
description: Taxa de alfabetização por UF referente ao 2º ano divulgado pelo SAEB
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns: [ano, sigla_uf, rede, localizacao, area]
- not_null_proportion_multiple_columns:
at_least: 0.95
columns:
- name: ano
description: Ano
tests:
- relationships:
to: ref('br_bd_diretorios_data_tempo__ano')
field: ano.ano
- name: sigla_uf
description: Sigla da Unidade da Federação
tests:
- relationships:
to: ref('br_bd_diretorios_brasil__uf')
field: sigla
- name: rede
description: Rede Escolar
- name: localizacao
description: Localização da escola
- name: area
description: 'Área onde a escola está localizada: interior, capital ou total'
- name: taxa_alfabetizacao
description: Taxa de alfabetização
- name: br_inep_saeb__dicionario
description: Dicionário para tradução dos códigos do conjunto br_inep_saeb. Para
taduzir códigos compartilhados entre instituições, como id_municipio, buscar
Expand All @@ -1504,7 +1555,7 @@ models:
- chave
- cobertura_temporal
- not_null_proportion_multiple_columns:
at_least: 0.05
at_least: 0.95
columns:
- name: id_tabela
description: ID Tabela
Expand Down

0 comments on commit 98c0c51

Please sign in to comment.