Notebook para tirar dados aberto da Capes

@Rudi van Els @ setembro 2019

1. Trabalhando com dadosabertos.capes.gov.br

Este trabalho pretende fazer o passo a passo para trabalhar com o banco de dados de produção científica do Banco de teses da Capes. A demenda surgiu quando eu queria avaliar como foi a produção científica nas Universidades na região Norte do Brasil sobre Açai (Nome Científico) num artigo sobre Produtos da Sociobiodiversidade para Suriname.

1.1. Analizando catalogo de teses

O primeiro passo foi "brincar" com o catalogo de teses da capes no link : https://catalogodeteses.capes.gov.br/catalogo-teses/#!/ Fazendo a pesquisa com a palavra "Açai" chegamos a ter 855 resultados. Refinando a pesquisa selelcionando somente instituições da região norte, resultou em 303 resultados.
So que neste site não é possível extrair os registros selecionados de forma automática, e tampouco tem com ter acesso aos dados de forma estruturado. O site fornece uma listagem com os nome do autor, título de trabalho, universidade, ano e quando tiver, um link para a plataforma sucupira. O proximo passo foi procurar uma forma de ter acesso diretamenta a base de dados.

1.2. Portal de dados aberto da Capes

O portal de dados aberto da Capes é https://dadosabertos.capes.gov.br que foi desenvolvido usando CKAN: http://ckan.org/. Os dados estão organizados em temas e grupos. Com um pouco de pesquisa consegui localizar o grupo Catalogo de Teses e Dissertações no portal no seguinte endereço: https://dadosabertos.capes.gov.br/group/banco. Este catálogo está dividio em 3 conjunto de dados. O primeiro tem dissertações de 1987 a 2012. O segundo abrange 2013-2016 e finalmente o terceiro engloba toda a produção de 2017.

Em cada conjunto de dados, há arquivos organizado para cada ano indivudual no formato CSV, XLS, PDF e HTML. O tamanho dos arquivos pode variar. Por exemplo, o tamanho arquivo em excel da produção do ano 1993 é de 6.4Mbytes enquanto o arquivo de 2012 tem 83.6Mbytes. Ou seja, o dowload destes arquivos e sua pesquisa local no computador seria muito pesado.

Vamos ter que procurar de meios para filtrar estes dados na hora de baixar os registros para o nosso computador de forma a não carregerar os recursos de rede e memória da minha máquina.

1.3. Acessando o arquivo no formato CSV

Numa primeira ação para entender como usar Python para acessar estes dados, fizemos uma cópia do arquivo com as dissertações e teses do ano 1987 para nosso computador, mas como ele ainda é grande para trabalhar, gravamos somente as primeiras xxx registros.
O arquivo datacapestest1.csv foi gravado no diretorio deste Jupiter Notebook e vamos usar a biblioteca do Pandas para explora-lo.

In [1]:
import pandas as pd

Com este comando abrimos a biblioteca e podemos ter acesso a várias funções. Para ler o arquivo gravado vamos usar a função read_csv do Pandas
Na primeira tentativa tive um erro na leitura do arquivo relacionado ao encoding = UTF-8. Esso foi resolvido colocando uma parametro extra na função de leitura com encoding = "ISO-8859-1"

In [2]:
data =  pd.read_csv('datacapestest1.csv',';', encoding = "ISO-8859-1")
In [3]:
# imprime o tipo do data
print (type(data))
<class 'pandas.core.frame.DataFrame'>
In [4]:
# imprime o tamanho do dataframe = quantidade de colunas multiplicado pela quantidade de linhas
print (data.size)
448
In [5]:
# imprime a quantidade de linhas e colunas do dataframe
print (data.shape)
(16, 28)
In [6]:
# imprime o nome das colunas do dataframe 
print (data.columns)
Index(['AnoBase', 'IdPrograma', 'Regiao', 'Uf', 'IdTese', 'SiglaIes',
       'NomeIes', 'NomePrograma', 'GrandeAreaCodigo', 'GrandeAreaDescricao',
       'AreaConhecimentoCodigo', 'AreaConhecimento', 'AreaAvaliacao',
       'DocumentoDiscente', 'Autor', 'EmailAutor', 'TituloTese', 'Nivel',
       'DataDefesa', 'PalavrasChave', 'Volume', 'NumeroPaginas',
       'BibliotecaDepositaria', 'Idioma', 'ResumoTese', 'IdLinhaPesquisa',
       'URLTextoCompleto', 'LinhaPesquisa'],
      dtype='object')
In [7]:
# uma maneira simples, mas não muito elegante de visualizar os dados
# visualiza os primeiros 5 linhas de dados
data.head(5)
Out[7]:
AnoBase IdPrograma Regiao Uf IdTese SiglaIes NomeIes NomePrograma GrandeAreaCodigo GrandeAreaDescricao ... DataDefesa PalavrasChave Volume NumeroPaginas BibliotecaDepositaria Idioma ResumoTese IdLinhaPesquisa URLTextoCompleto LinhaPesquisa
0 1993 33003017021P3 SUDESTE SP 100 UNICAMP UNIVERSIDADE ESTADUAL DE CAMPINAS ENGENHARIA ELETRICA 30000009 ENGENHARIAS ... 01-Oct-93 CODIGOS DE LINHA CONTROLE DE... 1 115 NaN NaN NESSE TRABALHO FAZ-SE A INVESTIGACAO DE CODIGO... 2114 NaN NaN
1 1993 33003017021P3 SUDESTE SP 101 UNICAMP UNIVERSIDADE ESTADUAL DE CAMPINAS ENGENHARIA ELETRICA 30000009 ENGENHARIAS ... 01-Oct-93 CODIFICADORES DE VOZ SINAL DE VO... 1 219 NaN NaN O OBJETIVO DESTA DISSERTACAO E APRESENTAR UM M... 2139 NaN NaN
2 1993 22001018008P3 NORDESTE CE 10 UFC UNIVERSIDADE FEDERAL DO CEARç SOCIOLOGIA 70000000 CIæNCIAS HUMANAS ... 01-Sep-93 TOTALITARISMO ANISTIA ... 1 355 NaN NaN O PRESENTE ESTUDO BUSCA A CONTRAPOSICAO DO TOT... 67 NaN NaN
3 1993 22001018009P0 NORDESTE CE 10 UFC UNIVERSIDADE FEDERAL DO CEARç ECONOMIA 60000007 CIæNCIAS SOCIAIS APLICADAS ... 01-Dec-93 DEFICIT PUBLICO-INFLACAO-MOEDA-TITULOS PUBLICO... 1 120 NaN NaN NO AMBITO DA DISCUSSAO TEORICA, SEMPRE OCORREU... 76 NaN NaN
4 1993 22001018012P0 NORDESTE CE 10 UFC UNIVERSIDADE FEDERAL DO CEARç AGRONOMIA (FITOTECNIA) 50000004 CIæNCIAS AGRçRIAS ... 01-Dec-93 ANACARDIUM OCCIDENTALE, CAJUEIRO, CRESCIMENTO... 1 85 NaN NaN A PESQUISA FOI DESENVOLVIDA NA USINA PILOTO DE... 85 NaN NaN

5 rows × 28 columns

Falta melhorar a visualização dos dados no Python com a acentação correta no sistema.
Vamos ver se conseguimos listar as palavras chaves dessa tabela e sorta-las.

In [8]:
data['PalavrasChave']
Out[8]:
0     CODIGOS DE LINHA                   CONTROLE DE...
1     CODIFICADORES DE VOZ               SINAL DE VO...
2     TOTALITARISMO                      ANISTIA    ...
3     DEFICIT PUBLICO-INFLACAO-MOEDA-TITULOS PUBLICO...
4     ANACARDIUM OCCIDENTALE, CAJUEIRO,  CRESCIMENTO...
5                                 EMPREGO RURAL; CEARA.
6     INDUCAO TRIFASICA                  PROCESSO DE...
7                         ESTRESSE, EXECUTIVO, EMPRESA.
8     POLPA DE ACEROLA                   TRATAMENTO ...
9     ENFATIZA,IMPORTANCIA,DESENVOLVIMENTALUNO,ESTRA...
10    ENGENHARIA DE CAIS POZOLANICAS     POZOLANICAS...
11    IMPLEMENTACAO                      MICROCONTRO...
12    FLUIDODINAMICA                     FLUIDIZACAO...
13    INTELIGENCIA ARTIFICIAL; AQUISICAO DE CONHECIM...
14    CEPAL, DESENVOLVIMENTISMO, AMERICA LATINA, PER...
15    LINGUAGEM FUNCIONAL                SEMANTICA  ...
Name: PalavrasChave, dtype: object
In [9]:
data.loc[2,'PalavrasChave']
Out[9]:
'TOTALITARISMO                      ANISTIA                            DIREITOS'

Com isso temos conseguido importar um arquivo CSV e analisar a sua estrutura com Pandas. O próximo desafio é como filtrar os dados no banco de dados e somente baixar os dados que se precisa para fazer a nossa análise de produção científica sobre Açai nas Universidades da Região Norte.