Skip to content

Instantly share code, notes, and snippets.

@wsricardo
Last active February 12, 2022 00:10
Show Gist options
  • Save wsricardo/86c50b7eb36b1a5fc21149d30f715ec3 to your computer and use it in GitHub Desktop.
Save wsricardo/86c50b7eb36b1a5fc21149d30f715ec3 to your computer and use it in GitHub Desktop.
Acessando API de Dados Abertos IBGE com Python & Introdução a Programação. Fonte: (IBGE) https://servicodados.ibge.gov.br/api/docs e https://sidra.ibge.gov.br/home/abate/brasil
import urllib.request
import requests
import json
# Acima módulos uteis para conectar a internet e acessar páginas e APIs
# E manipular dados em formato json
# Neste exemplo acessamos a API do IBGE
# Para não fazer acessos repetidos a plataforma
# recomenda-se salvar os dados obtidos na primeira chamada em aruivo de texto e
# fazer testes.
# Link: https://servicodados.ibge.gov.br/api/docs
# Link: https://sidra.ibge.gov.br/home/abate/brasil
def main(campo=''):
#dt = urllib.request.urlopen(url).read() # Acessando a API
dt = requests.get(url+'?qtd=3')
print(dt)
data = json.loads(dt.text) #Decodificando e extraindo json.
for i in data['items']:
print('> {}\n{}\n{}\n{}\n\n'.format(i['titulo'], i['introducao'], i['data_publicacao'], i['link']))
# Endereço da página web IBGE para "consumir" dados abertos da API.
url = "http://servicodados.ibge.gov.br/api/v3/noticias/"
# Parâmetros extras
param = {'counts': 0, }
# Agora vamos testar
main()
# Para não fazer acessos repetidos a plataforma
# recomenda-se salvar os dados obtidos na primeira chamada em aruivo de texto e
# fazer testes.
#with open('dados.txt', 'w') as fl:
# fl.write(dados)
# fl.close()

Programação de Computador

Conhecimentos sobre programação não se restringir a ser usadas por cientistas da computação e engenheiros. Profissionais de outras áreas que sintam a necessidade de resolver questões que envolvem uma analise ou e otenção de grandes quantidades de dados podem se usar destes conhecimentos para automatizar parte do trabalho e fazer verificações e tambem gerar gráficos de acordo com suas necessidades.

Conceitos Básicos

Máquina

  • Unidade de Processamento Central (CPU)
  • Unidade Lógica Aritmética (ALU)
  • Memória RAM (Random Access Memory)
  • Memória Permanente (HD, SSD)
  • Dispositivos de Entrada e Saída (IO -> Input/Output)

Sistema Operacional

Responsável por implementar controles sobre hardware e interface entre o usuário e o hardware.
  • Linux (distribuições: Debian, Ubuntu, Linux Mint, Arch Linux, Slackware)
  • Unix/BSD (OpenBSD, FreeBSD, PC-BSD)
  • Windows (Windows XP, Windows 7, Windows 8, Windows 10)
  • MAC OS

Algoritmos

Definição: Conjunto de passos bem definidos que levam a resolução de um problema.

Conceitos

Alguns Pontos
  • Tipos de Dados
  • Variaveis
  • Estruturas de Repetição
  • Estruturas de desvio condicional
  • Funções
  • Módulos

Tipos

Definir tipos que serão armazenados por um dado elemento que surportará algumas operações de acordo com seu tipo.

Exemplo: tipo inteiro, real, complexo, caractere, string, lógico.

Obs.: O tipo "string" refere-se a conjunto de caracteres e é usado para guardar textos.

Variáveis

As variáveis ocupam um dado espaço na memória da máquina onde armazenará dados sobre um tipo especificado pelo programador.

Exemplos:

inteiro n = 0;
string nome;
nome="Pedro Henrique"

As variáveis n e nome guardam valores e são armazenadas na máquina em um endereço dessa memória (pense nessa memória como um vetor onde em cada posição do vetor é armazenado um dado.

No exemplo acima definimos n como tipo inteiro e o inicializamos com 0.

Já no segundo criamos uma variável do tipo string onde guardamos uma cadeia de caracteres. E a ela atribuimos o nome "Pedro Henrique".

Na linguagem Python o tipo da variável é definido quando ocorre a atribuição não sendo necessário a declaração apesar de possivel.

int : n;
float : x;

Acima definimos o as variáveis como inteiro e real em python. Apesar de possível não seria obrigatório.

Estruturas de Desvio Condicional

Tano na criação de desvios condicionais e loops (repetição) criamos expressões condicionais. Onde um trecho do código é executado se a condição avaliada for verdadeira.

Para desvios usamos estruturas como "Se..Senão"

Exemplo:


real resposta = 0;
Se (b != 0) então {
	resposta = a/b;
} Senão {
	exiba("Erro divisão por zero não permitida.");
}


No exemplo acima a operação de divisão só ocorre se b for diferente de zero. Caso seja igual a zero pula-se a instrução "resposta = a/b" e executa-se o trecho dentro de "Senão" exibindo a mensagem de erro.

Estruturas de Repetição

Se desejamos repetir uma determinara instrução sem ter de digita-las várias vezes usamos estruturas como "Para .. Faça", "Enquanto..".

Exemplos:


inteiro i = 1;
Enquanto i < 10 Faça {
	Exiba("i: ", i);
	i = i + 1;
}

No exemplo acima e exibido números inteiros de 1 até 10. O trecho "i = i + 1" auxilia controle do loop.

inteiro soma = 0
inteiro i;
Para i=1 Até i<11 Com i++ Faça {
	soma = soma + i;
}

O código acima faz as somas dos dez primeiros inteiros de 1 até 10 e armazena o resultado final em soma

Funções

Muitas vezes determinados trechos de códigos são repetidos várias vezes e é utilizado em trechos de código diferentes. Desse modo seria útil poder isolar esses trechos em funções as quais poderiam ser reutilizadas em outros blocos de códigos sem repetir todo o bloco.

Exemplos:

Real Div(a,b) {
	Real res = 0;
	Se ( b != 0) {
		res = a/b;
	retorne res;
	} Senão {
		Exiba("Error!");
		retorne Falso;
	}
}

O exemplo acima implementa a função "Div" para usa-la fazemos

Real res = 0;
res = Div(4,2);
Exiba("Resultado res = ", res);

A variável "res" do tipo "Real" guardará o retorno da função Div.

Módulos

Querendo reutilizar funções em outros projetos é bastante útil isolar estas funções em arquivos e guarda-los em bibliotecas de funções que será útil para ser reutilizada quando necessário.

Exemplos: Um módulo contendo implementações de funções matemáticas como divisão de números reais, exeponenciais, logaritmos, funções trigonométricas e etc.

Computador Componentes

Introdução

Introdução a Computação Com Python

Pensando Como um Cientista da Computação

Linguagem Python

Tutorial Python

Aprendendo Python - Guia Do Mochileiro

import json
import urllib.request
import matplotlib.pyplot as plt
# Acessa API do IBGE em dados "Agregados" para obter taxa de desmatamento
# na Mata Atlântica até 2010.
# Links: https://servicodados.ibge.gov.br/api/docs
# Link: https://sidra.ibge.gov.br/home/abate/brasil
url_base = ''
url = 'https://servicodados.ibge.gov.br/api/v3/agregados/3913/periodos/2010/variaveis/3852?localidades=N3[all]'
dt = urllib.request.urlopen(url).read()
data = dt.decode()
print('> ',data)
print('\n')
jdata = json.loads(data)
for i in jdata[0]['resultados'][0]['series']:
print('*Estado: {}\n*Serie: {}\n*Percentual Desmatado: {}%\n\n\n'.format(i['localidade']['nome'],'2010',i['serie']['2010']))
estados = [ i['localidade']['nome'] for i in jdata[0]['resultados'][0]['series'] ]
percentual = [ float(j['serie']['2010']) for j in jdata[0]['resultados'][0]['series'] ]
ufestados = {"Acre": "AC", 'Alagoas': ' AL','Amapá': 'AP', 'Amazonas':'AM', 'Bahia': 'BA', 'Ceará': 'CE',
'Distrito Federal': 'DF', 'Espírito Santo': 'ES', 'Goiás': 'GO', 'Maranhão': 'MA', 'Mato Grosso': 'MT',
'Mato Grosso do Sul': 'MS', 'Minas Gerais': 'MG', 'Pará': 'PA', 'Paraíba': 'PB', 'Paraná': 'PR',
'Pernambuco': 'PE', 'Piauí': 'PI', 'Rio de Janeiro': 'RJ', 'Rio Grande do Norte': 'RN', 'Rio Grande do Sul': 'RS',
'Rondônia': 'RO', 'Roraima': 'RR', 'Santa Catarina': 'SC', 'São Paulo': 'SP','Sergipe': 'SE', 'Tocantins':'TO'}
uf = [ufestados[k] for k in estados]
print(uf)
plt.bar([i for i in range(len(uf))], percentual)
plt.title("Percentual De Desmatamento da Mata Atlântica até 2010")
plt.xticks([j + 0.2 for j in range(len(uf))],uf)
plt.show()
with open('dados-desmatamentos-mataAtlantica2010.json', 'w') as fl:
fl.write(data)
fl.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment