O Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira (Inep) divulgou no dia 21 de Junho de 2017 sobre remuneração média dos professores em exercício na educação básica. O estudo é resultado de uma nova metodologia do Inep cruzando informações do Censo Escolar com a Relação Anual de Informações Sociais (Rais) de 2014, do Ministério do Trabalho e da Previdência Social. O levantamento mostrou uma população de 2.080.619 professores.$^{[1]}$
De acordo com o levantamento, com dados referentes a 2014, uma jornada semanal de 40h representa, na rede de ensino de Porto Alegre, uma média de proventos mensais de R\$ 10.947,15. Porto Alegre seria a rede que melhor paga entre as capitais (média é de R\$ 3.116). Ofereceria também remuneração superior àquela das escolas federais, estaduais e privadas. $^{[2]}$
O dito estudo do Inep é citado em diversas notícias, por exemplo G1, MEC, 10 anos de metodologia de coleta de dados individualizada dos censos educacionais. O estudo completo infelizmente não foi encontrado, porém a apresentação Remuneração Média dos Docentes da Educação Básica pode ser baixada completamente.
Fontes:
$^{[1]}$ Inep divulga estudo sobre salário de professor da educação básica
$^{[2]}$ Itamar Melo. Salário em alta, ensino em baixa. Zero Hora, 30 de Junho de 2017.
Quando fui buscar os microdados da RAIS para download tive a (não) imensa surpresa de enfrentar uma enorme dificuldade para encontrá-los. No site do Ministério do Trabalho não há nenhuma referência a RAIS (ou algo que lembre minimamente ela). Uma notícia no site do Governo Federal informa um novo link para consulta dos dados da RAIS; infelizmente o link acaba numa página 'Not Found'. O site (oficial) da RAIS faz referência apenas a download do GDRAIS 2016, GDRAIS Genérico (1976-2015), o Manual de Orientação, Layout e a Portaria da RAIS ano-base 2016; nada dos microdados. Felizmente no site do Laboratório de Estudos Econômicos da Universidade Federal de Juiz de Fora é possível encontrar diversos links para acesso dos microdados originais de diversas pesquisas brasileiras, entre elas a RAIS!
Após clicar no link da RAIS 2014$^{[1]}$, é possível manualmente baixar os microdados para cada Estado brasileiro (no Linux, é possível abrir o terminal - ou linha de comando - e digitar wget -m ftp://ftp.mtps.gov.br/pdet/microdados/RAIS/2014/ que os dados serão baixados automaticamente para sua pasta inicial).
Observações da RAIS trabalhador$^{[2}$: arquivos com separador ';', ao encontrar '-1', '{ñ class}', '{ñclass}' ou parte do texto considerar como ignorado, separador do decimal é ','.
Fontes:
$^{[1]}$ ftp://ftp.mtps.gov.br/pdet/microdados/RAIS/2014/
$^{[2}$ ftp://ftp.mtps.gov.br/pdet/microdados/RAIS/Layouts/v%C3%ADnculos/RAIS_vinculos_layout.xls
Eu utilizei a linguagem de programação Python 3.6.1. utilizando a distribuição Anaconda da Continuum Analytics, por ser uma linguagem gratuita e open-source, além de rápida e versátil, garantindo a total reprodutibilidade do presente estudo. O presente documento é um Jupyter notebook que mistura texto (Markdown e HTML), código (Python) e visualizações (tabelas, gráficos, imagens etc.).
Bibliotecas utilizadas: Pandas (data structures and data analysis), Jupyter (create and share documents that contain live code, equations, visualizations and explanatory text), StatsModels.
In [1]:
# Começamos importando as bibliotecas a serem utilizadas:
import numpy as np
import pandas as pd
import seaborn as sns; sns.set()
%matplotlib inline
In [2]:
# Importando os microdados do arquivo .zip:
rs = pd.read_table('/mnt/part/Data/RAIS/2014/RS2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
rs.head() # mostra as primeiras 5 linhas do DataFrame
Out[2]:
In [3]:
print('O formato do DataFrame é: ' , rs.shape, '(linhas, colunas)')
print('\n', 'O tipo de cada coluna:', '\n\n',rs.dtypes)
In [4]:
# Visualizando quais são
print('Bairros Fortaleza unique values:', rs['Bairros Fortaleza'].unique())
print('Bairros RJ unique values:', rs['Bairros RJ'].unique())
print('CBO 2002 unique values:', rs['CBO Ocupaτπo 2002'].unique())
print('Distritos SP unique values:', rs['Distritos SP'].unique())
print('Tipo Estab.1 unique values:', rs['Tipo Estab.1'].unique())
In [5]:
# Atribuindo '-1' aos valores '0000-1', mudando o tipo de 'object' para 'float':
rs[rs['CBO Ocupaτπo 2002'] == '0000-1'] = -1
# rs['CBO Ocupaτπo 2002'].dropna(inplace = True)
rs['CBO Ocupaτπo 2002'] = rs['CBO Ocupaτπo 2002'].astype(dtype = float)
rs['CBO Ocupaτπo 2002'].dtypes
Out[5]:
Segundo a apresentação, as variáveis utilizadas da RAIS são: UF, Município, Remuneração média anual do trabalhador, Classificação Brasileira de Ocupações (CBO), Classe de Atividade Econômica (CNAE), CPF, Ano, Natureza Jurídica (CONCLA), Quantidade de horas contratuais por semana, tempo de emprego do trabalhador, data de admissão do trabalhador e mês de desligamento.
Há duas variáveis de município ('Mun Trab' e 'Municφpio'), como elas são iguais na maior parte dos casos (99%), utilizo a 'Mun Trab'. Há diversas variáveis com a remuneração dos trabalhadores, utilizo a 'Vl Remun MΘdia Nom' (Descrição da variável: Remuneração média do trabalhador (valor nominal) - a partir de 1999). Há apenas uma coluna indicando o CBO. Para a CNAE, utilizo a 'CNAE 95 Classe'. Nos microdados baixados do site indicado, não há nenhuma coluna com CPF dos trabalhadores. O ano é 2014 para todas as linhas já que utilizo apenas a RAIS 2014. Há apenas uma coluna com a Natureza Jurídica que é 'Natureza Jurφdica'. Há apenas uma coluna para Horas contratuais que é 'Qtd Hora Contr'. Tempo de emprego é 'Tempo de Emprego', mês de admissão é 'MΩs Admissπo' e mês de desligamento é 'MΩs Desligamento'.
In [6]:
df = pd.DataFrame({'Munic': rs['Municφpio'],
'Remuneracao': rs['Vl Remun MΘdia Nom'],
'CBO': rs['CBO Ocupaτπo 2002'],
'CNAE': rs['CNAE 95 Classe'],
'Natureza': rs['Natureza Jurφdica'],
'Horas': rs['Qtd Hora Contr'],
'Tempo': rs['Tempo Emprego'],
'Admissao': rs['MΩs Admissπo'],
'Desligamento': rs['MΩs Desligamento'],
'Sexo': rs['Sexo Trabalhador'],
'Idade': rs['Faixa Etßria'],
'Raca': rs['Raτa Cor']})
print('Número de observações na base original:', len(df))
df.dropna(axis = 0, how = 'any', inplace = True)
print('Número de observações após excluir missings: ', len(df))
df.head()
Out[6]:
In [7]:
print('Mun Trab é igual a Municφpio em' , round(((rs['Mun Trab'] == rs['Municφpio']).sum() / len(rs)) * 100, 4), '% dos casos')
De acordo com o slide 10, a identificação dos docentes foi feita baseado nos seguintes códigos do CNAE e CBO:
CNAE:
75116: Administração Pública em Geral
80136: Educação Infantil creche
80144: Educação Infantil pré-escola
80152: Ensino Fundamental
80209: Ensino Médio
80969: Educação Profissional de Nível Técnico
80977: Educação Profissional de Nível Tecnológico
80993: Outras Atividades de Ensino
CBO:
23: Profissionais do Ensino
33: Professores leigos e de nível médio
Podemos utilizar uma lista para fatiar (slice) o quadro de dados (DataFrame). Fonte: Wouter Overmeire, https://stackoverflow.com/questions/12096252/use-a-list-of-values-to-select-rows-from-a-pandas-dataframe
In [8]:
cnae = [75116, 80136, 80144, 80152, 80209, 80969, 80977, 80993]
cbo = [23, 33]
df1 = df[df['CNAE'].isin(cnae) | (df['CBO'] / 10000).apply(np.floor).isin(cbo)]
Entretanto, podemos notar que as categorias 23 e 33 de CBO se dividem em diversas ocupações específicas, de acordo com a planilha 'ocupação' do arquivo RAIS_vinculos_layout $^{[1]}$. As últimas ocupações da categoria 23 estão ligadas à educação, porém parecem ser mais cargos administrativos e/ou de apoio que cargos do magitério propriamente dito (Coordenador Pedagogico, Orientador Educacional, Pedagogo, Psicopedagogo, Supervisor de Ensino, Designer Educacional). A categoria 33 é ainda mais heterogênea, incluindo Auxiliar de Desenvolvimento Infantil, Instrutor de Auto-Escola, Instrutor de Cursos Livres , Inspetor de Alunos de Escola Privada, Inspetor de Alunos de Escola Publica e Monitor de Transporte Escolar.
231105:Professor de Nivel Superior na Educacao Infantil (Quatro a Seis Anos)
231110:Professor de Nivel Superior na Educacao Infantil (Zero a Tres Anos)
231205:Professor da Educacao de Jovens e Adultos do Ensino Fundamental (Primeira a Quarta Serie)
231210:Professor de Nivel Superior do Ensino Fundamental (Primeira a Quarta Serie)
231305:Professor de Ciencias Exatas e Naturais do Ensino Fundamental
231310:Professor de Educacao Artistica do Ensino Fundamental
231315:Professor de Educacao Fisica do Ensino Fundamental
231320:Professor de Geografia do Ensino Fundamental
231325:Professor de Historia do Ensino Fundamental
231330:Professor de Lingua Estrangeira Moderna do Ensino Fundamental
231335:Professor de Lingua Portuguesa do Ensino Fundamental
231340:Professor de Matematica do Ensino Fundamental
232105:Professor de Artes no Ensino Medio
232110:Professor de Biologia no Ensino Medio
232115:Professor de Disciplinas Pedagogicas no Ensino Medio
232120:Professor de Educacao Fisica no Ensino Medio
232125:Professor de Filosofia no Ensino Medio
232130:Professor de Fisica no Ensino Medio
232135:Professor de Geografia no Ensino Medio
232140:Professor de Historia no Ensino Medio
232145:Professor de Lingua e Literatura Brasileira no Ensino Medio
232150:Professor de Lingua Estrangeira Moderna no Ensino Medio
232155:Professor de Matematica no Ensino Medio
232160:Professor de Psicologia no Ensino Medio
232165:Professor de Quimica no Ensino Medio
232170:Professor de Sociologia no Ensino Medio
233105:Professor da Area de Meio Ambiente
233110:Professor de Desenho Tecnico
233115:Professor de Tecnicas Agricolas
233120:Professor de Tecnicas Comerciais e Secretariais
233125:Professor de Tecnicas de Enfermagem
233130:Professor de Tecnicas Industriais
233135:Professor de Tecnologia e Calculo Tecnico
233205:Instrutor de Aprendizagem e Treinamento Agropecuario
233210:Instrutor de Aprendizagem e Treinamento Industrial
233215:Professor de Aprendizagem e Treinamento Comercial
233220:Professor Instrutor de Ensino e Aprendizagem Agroflorestal
233225:Professor Instrutor de Ensino e Aprendizagem em Servicos
234105:Professor de Matematica Aplicada (No Ensino Superior)
234110:Professor de Matematica Pura (No Ensino Superior)
234115:Professor de Estatistica (No Ensino Superior)
234120:Professor de Computacao (No Ensino Superior)
234125:Professor de Pesquisa Operacional (No Ensino Superior)
234205:Professor de Fisica (Ensino Superior)
234210:Professor de Quimica (Ensino Superior)
234215:Professor de Astronomia (Ensino Superior)
234305:Professor de Arquitetura
234310:Professor de Engenharia
234315:Professor de Geofisica
234320:Professor de Geologia
234405:Professor de Ciencias Biologicas do Ensino Superior
234410:Professor de Educacao Fisica no Ensino Superior
234415:Professor de Enfermagem do Ensino Superior
234420:Professor de Farmacia e Bioquimica
234425:Professor de Fisioterapia
234430:Professor de Fonoaudiologia
234435:Professor de Medicina
234440:Professor de Medicina Veterinaria
234445:Professor de Nutricao
234450:Professor de Odontologia
234455:Professor de Terapia Ocupacional
234460:Professor de Zootecnia do Ensino Superior
234505:Professor de Ensino Superior na Area de Didatica
234510:Professor de Ensino Superior na Area de Orientacao Educacional
234515:Professor de Ensino Superior na Area de Pesquisa Educacional
234520:Professor de Ensino Superior na Area de Pratica de Ensino
234604:Professor de Lingua Alema
234608:Professor de Lingua Italiana
234612:Professor de Lingua Francesa
234616:Professor de Lingua Inglesa
234620:Professor de Lingua Espanhola
234624:Professor de Lingua Portuguesa
234628:Professor de Literatura Brasileira
234632:Professor de Literatura Portuguesa
234636:Professor de Literatura Alema
234640:Professor de Literatura Comparada
234644:Professor de Literatura Espanhola
234648:Professor de Literatura Francesa
234652:Professor de Literatura Inglesa
234656:Professor de Literatura Italiana
234660:Professor de Literatura de Linguas Estrangeiras Modernas
234664:Professor de Outras Linguas e Literaturas
234668:Professor de Linguas Estrangeiras Modernas
234672:Professor de Linguistica e Linguistica Aplicada
234676:Professor de Filologia e Critica Textual
234680:Professor de Semiotica
234684:Professor de Teoria da Literatura
234705:Professor de Antropologia do Ensino Superior
234710:Professor de Arquivologia do Ensino Superior
234715:Professor de Biblioteconomia do Ensio Superior
234720:Professor de Ciencia Politica do Ensino Superior
234725:Professor de Comunicacao Social do Ensino Superior
234730:Professor de Direito do Ensino Superior
234735:Professor de Filosofia do Ensino Superior
234740:Professor de Geografia do Ensino Superior
234745:Professor de Historia do Ensino Superior
234750:Professor de Jornalismo
234755:Professor de Museologia do Ensino Superior
234760:Professor de Psicologia do Ensino Superior
234765:Professor de Servico Social do Ensino Superior
234770:Professor de Sociologia do Ensino Superior
234805:Professor de Economia
234810:Professor de Administracao
234815:Professor de Contabilidade
234905:Professor de Artes do Espetaculo no Ensino Superior
234910:Professor de Artes Visuais no Ensino Superior (Artes Plasticas e Multimidia)
234915:Professor de Musica no Ensino Superior
239205:Professor de Alunos com Deficiencia Auditiva e Surdos
239210:Professor de Alunos com Deficiencia Fisica
239215:Professor de Alunos com Deficiencia Mental
239220:Professor de Alunos com Deficiencia Multipla
239225:Professor de Alunos com Deficiencia Visual
239405:Coordenador Pedagogico
239410:Orientador Educacional
239415:Pedagogo
239420:Professor de Tecnicas e Recursos Audiovisuais
239425:Psicopedagogo
239430:Supervisor de Ensino
239435:Designer Educacional
331105:Professor de Nivel Medio na Educacao Infantil
331110:Auxiliar de Desenvolvimento Infantil
331205:Professor de Nivel Medio no Ensino Fundamental
331305:Professor de Nivel Medio no Ensino Profissionalizante
332105:Professor Leigo no Ensino Fundamental
332205:Professor Pratico no Ensino Profissionalizante
333105:Instrutor de Auto-Escola
333110:Instrutor de Cursos Livres
333115:Professores de Cursos Livres
334105:Inspetor de Alunos de Escola Privada
334110:Inspetor de Alunos de Escola Publica
334115:Monitor de Transporte Escolar
$^{[1]}$ ftp://ftp.mtps.gov.br/pdet/microdados/RAIS/Layouts/v%C3%ADnculos/RAIS_vinculos_layout.xls
In [9]:
ed_basica = [231105, 231110, 231205, 231210, 231305, 231310, 231315,
231320, 231325, 231330, 231335, 231340, 331105, 332105]
print('Remuneração dos professores gaúchos: R$', df1['Remuneracao'].mean())
print('Remuneração dos professores do ensino básico gaúchos: R$',
df1[df1['CBO'].isin(ed_basica)]['Remuneracao'].mean())
print('Remuneração dos professores do ensino básico gaúchos: R$',
df1[df1['CBO'].isin(ed_basica)]['Remuneracao'].mean())
print('Remuneração dos professores do ensino básico gaúchos: R$',
df1[df1['CBO'].isin(ed_basica) & (df1['Munic'] == 431490)]['Remuneracao'].mean())
df1[df1['CBO'].isin(ed_basica) & (df1['Munic'] == 431490)]['Remuneracao'].hist();
In [10]:
poa = df1[(df1['Munic'] == 431490)]
POD EXEC FE | 1015 | SOC MISTA | 2038 | SOC SIMP PUR | 2232 | FUN DOM EXT | 3212 |
POD EXEC ES | 1023 | SA ABERTA | 2046 | SOC SIMP LTD | 2240 | ORG RELIG | 3220 |
POD EXEC MU | 1031 | SA FECH | 2054 | SOC SIMP COL | 2259 | COMUN INDIG | 3239 |
POD LEG FED | 1040 | SOC QT LTDA | 2062 | SOC SIMP COM | 2267 | FUNDO PRIVAD | 3247 |
POD LEG EST | 1058 | SOC COLETV | 2070 | EMPR BINAC | 2275 | OUTR ORG | 3999 |
POD LEG MUN | 1066 | OC COLETV07 | 2076 | CONS EMPREG | 2283 | EMP IND IMO | 4014 |
POD JUD FED | 1074 | SOC COMD SM | 2089 | CONS SIMPLES | 2291 | SEG ESPEC | 4022 |
POD JUD EST | 1082 | SOC COMD AC | 2097 | CARTORIO | 3034 | CONTR IND | 4080 |
AUTARQ FED | 1104 | SOC CAP IND | 2100 | ORG SOCIAL | 3042 | CONTR IND07 | 4081 |
AUTARQ EST | 1112 | SOC CIVIL | 2119 | OSCIP | 3050 | CAN CARG POL | 4090 |
AUTARQ MUN | 1120 | SOC CTA PAR | 2127 | OUT FUND PR | 3069 | LEILOEIRO | 4111 |
FUNDAC FED | 1139 | FRM MER IND | 2135 | SERV SOC AU | 3077 | ORG INTERN | 5002 |
FUNDAC EST | 1147 | COOPERATIVA | 2143 | CONDOMIN | 3085 | ORG INTERNAC | 5010 |
FUNDAC MUN | 1155 | CONS EMPRES | 2151 | UNID EXEC | 3093 | REPR DIPL ES | 5029 |
ORG AUT FED | 1163 | GRUP SOC | 2160 | COM CONC | 3107 | OUT INST EXT | 5037 |
ORG AUT EST | 1171 | FIL EMP EXT | 2178 | ENT MED ARB | 3115 | IGNORADO | -1 |
COM POLINAC | 1198 | FIL ARG-BRA | 2194 | PART POLIT | 3123 | ||
FUNDO PUBLIC | 1201 | ENT ITAIPU | 2208 | ENT SOCIAL | 3130 | ||
ASSOC PUBLIC | 1210 | EMP DOM EXT | 2216 | ENT SOCIAL07 | 3131 | ||
EMP PUB | 2011 | FUN INVEST | 2224 | FIL FUN EXT | 3204 |
In [29]:
# Conta o número de observações no DataFrame 'poa' por grupo de 'Natureza' (Natureza Jurídica):
poa['Admissao'].groupby(by = poa['Natureza']).count()
Out[29]:
De acordo com a Secretaria Municipal de Educação: "A Rede Municipal de Ensino – RME – é formada por 99 escolas com cerca de 4 mil professores e 900 funcionários, atende mais de 50 mil alunos da Educação Infantil, Ensino Fundamental, Ensino Médio, Educação Profissional de Nível Técnico, Educação de Jovens e Adultos (EJA) e Educação Especial."
Entretanto, os dados da RAIS mostram apenas 148 professores do Poder Executivo Municipal ("POD EXEC MU 1031"). A maioria dos professores (106.728) são do Poder Executivo Estadual (POD EXEC ES 1023).
In [12]:
df1[df1['CBO'].isin(ed_basica) & (df1['Munic'] == 431490)]['Remuneracao'].groupby(by = df1['Idade']).mean()
Out[12]:
In [13]:
from statsmodels.stats.weightstats import ztest
# Source: http://www.statsmodels.org/dev/generated/statsmodels.stats.weightstats.ztest.html#statsmodels.stats.weightstats.ztest
print(ztest(x1 = df1[(df1['CBO'].isin(ed_basica)) & (df1['Munic'] == 431490)]['Remuneracao'], x2=None,
value=10000, alternative='two-sided', usevar='pooled', ddof=1.0))
print(ztest(x1 = df1[(df1['CBO'].isin(ed_basica)) & (df1['Munic'] == 431490)]['Remuneracao'], x2=None,
value=10000, alternative='smaller', usevar='pooled', ddof=1.0))
In [14]:
from statsmodels.stats.weightstats import DescrStatsW
# Source: http://www.statsmodels.org/dev/generated/statsmodels.stats.weightstats.DescrStatsW.html#statsmodels.stats.weightstats.DescrStatsW
stats = DescrStatsW(df1[(df1['CBO'].isin(ed_basica)) & (df1['Munic'] == 431490)]['Remuneracao'])
print(stats.mean)
print(stats.var)
print(stats.std_mean)
print(stats.ttest_mean(value = 10000, alternative = 'larger'))
print(stats.ztest_mean(value = 10000, alternative = 'larger'))
# tstat, pval, df
print(stats.ttost_mean(low = 6000, upp = 4000))
print(stats.ztost_mean(low = 6000, upp = 4000))
# TOST: two one-sided t tests
# null hypothesis: m < low or m > upp alternative hypothesis: low < m < upp
# returns: pvalue; t1, pv1, df1; t2, pv2, df2
# DescrStatsW.ttest()
Variáveis dummy de acordo com o layout$^{[1]}$:
FAIXA ETÁRIA | |
---|---|
01 | 10 A 14 anos |
02 | 15 A 17 anos |
03 | 18 A 24 anos |
04 | 25 A 29 anos |
05 | 30 A 39 anos |
06 | 40 A 49 anos |
07 | 50 A 64 anos |
08 | 65 anos ou mais |
{ñ class} | {ñ class} |
FAIXA HORA CONTRATUAL | |
---|---|
01 | Até 12 horas |
02 | 13 a 15 horas |
03 | 16 a 20 horas |
04 | 21 a 30 horas |
05 | 31 a 40 horas |
06 | 41 a 44 horas |
grau de instruçao | escolaridade após 2005 |
---|---|
ANALFABETO | 1 |
ATE 5.A INC | 2 |
5.A CO FUND | 3 |
6. A 9. FUND | 4 |
FUND COMPL | 5 |
MEDIO INCOMP | 6 |
MEDIO COMPL | 7 |
SUP. INCOMP | 8 |
SUP. COMP | 9 |
MESTRADO | 10 |
DOUTORADO | 11 |
IGNORADO | -1 |
$^{[1]}$ ftp://ftp.mtps.gov.br/pdet/microdados/RAIS/Layouts/v%C3%ADnculos/RAIS_vinculos_layout.xls
In [15]:
import statsmodels.api as sm
# Dummies:
groups = df1['Idade']
dummy = sm.categorical(groups, drop=True)
x = np.linspace(0, 20, nsample)
# drop reference category
X = np.column_stack((x, dummy[:,1:]))
X = sm.add_constant(X, prepend=False)
X = pd.concat([df1['Natureza'], df1['Horas'], df1['Tempo'], df1['Sexo'], df1['Idade'], df1['Raca']], axis = 1)
X = sm.add_constant(X)
y = df1['Remuneracao']
In [ ]:
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())
In [ ]:
# #Open all the .csv file in a directory
# #Author: Gaurav Singh
# #Source: https://stackoverflow.com/questions/20906474/import-multiple-csv-files-into-pandas-and-concatenate-into-one-dataframe
# import pandas as pd
# import glob
# #get data file names
# path =r'/mnt/part/Data/RAIS/2014/'
# allFiles = glob.glob(path + "/*.zip")
# df = pd.DataFrame()
# list_ = []
# for file_ in allFiles:
# frame = pd.read_csv(file_, sep = ';', encoding = 'cp860', decimal = ',')
# list_.append(frame)
# df = pd.concat(list_, axis=0)
In [ ]:
# ac = pd.read_csv('/mnt/part/Data/RAIS/2014/AC2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# al = pd.read_csv('/mnt/part/Data/RAIS/2014/AL2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# am = pd.read_csv('/mnt/part/Data/RAIS/2014/AM2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# ap = pd.read_csv('/mnt/part/Data/RAIS/2014/AP2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# ba = pd.read_csv('/mnt/part/Data/RAIS/2014/BA2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# ce = pd.read_csv('/mnt/part/Data/RAIS/2014/CE2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# df = pd.read_csv('/mnt/part/Data/RAIS/2014/DF2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# es = pd.read_csv('/mnt/part/Data/RAIS/2014/ES2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# go = pd.read_csv('/mnt/part/Data/RAIS/2014/GO2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# ma = pd.read_csv('/mnt/part/Data/RAIS/2014/MA2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# mg = pd.read_csv('/mnt/part/Data/RAIS/2014/MG2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# ms = pd.read_csv('/mnt/part/Data/RAIS/2014/MS2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# mt = pd.read_csv('/mnt/part/Data/RAIS/2014/MT2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# pa = pd.read_csv('/mnt/part/Data/RAIS/2014/PA2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# pb = pd.read_csv('/mnt/part/Data/RAIS/2014/PB2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# pe = pd.read_csv('/mnt/part/Data/RAIS/2014/PE2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# pi = pd.read_csv('/mnt/part/Data/RAIS/2014/PI2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# pr = pd.read_csv('/mnt/part/Data/RAIS/2014/PR2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# rj = pd.read_csv('/mnt/part/Data/RAIS/2014/RJ2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# rn = pd.read_csv('/mnt/part/Data/RAIS/2014/RN2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# ro = pd.read_csv('/mnt/part/Data/RAIS/2014/RO2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# rr = pd.read_csv('/mnt/part/Data/RAIS/2014/RR2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# rs = pd.read_csv('/mnt/part/Data/RAIS/2014/RS2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# sc = pd.read_csv('/mnt/part/Data/RAIS/2014/SC2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# se = pd.read_csv('/mnt/part/Data/RAIS/2014/SE2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# sp = pd.read_csv('/mnt/part/Data/RAIS/2014/SP2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
# to = pd.read_csv('/mnt/part/Data/RAIS/2014/TO2014.zip', sep = ';', encoding = 'cp860', decimal = ',')
In [ ]:
# Concatenar os DataFrameS individuais a partir de uma lista:
# lista = [ac, al, am, ap, ba, ce, df, es, go, ma, mg, ms, mt, pa, pb, pe, pi, pr, rj, rn, ro, rr, rs, sc, se, sp, to]
# rais = pd.concat(lista)
In [ ]:
# Gerando uma variável com a UF a partir do Município:
# np.floor(rais['Municφpio'] / 10000).unique()
Código UF: 11 Rondônia, 12 Acre, 13 Amazonas, 14 Roraima, 15 Pará, 16 Amapá, 17 Tocantins, 21 Maranhão, 22 Piauí, 23 Ceará, 24 Rio Grande do Norte, 25 Paraíba, 26 Pernambuco, 27 Alagoas, 28 Sergipe, 29 Bahia, 31 Minas Gerais, 32, Espírito Santo, 33 Rio de Janeiro, 35 São Paulo, 41 Paraná, 42 Santa Catarina, 43 Rio Grande do Sul, 50 Mato Grosso do Sul, 51 Mato Grosso, 52 Goiás, 53 Distrito Federal.