Introdução
Bem-vindos ao Direto ao Conhecimento!
Hoje, vamos unir a tecnologia do Python com a transparência de dados públicos.
Nosso desafio é prático: como descobrir quantos senadores cada partido possui atualmente, consultando diretamente a fonte oficial, a API do Senado Federal.
Etapa 1: O Ponto de Partida – Coleta de Dados via API
Para resolver qualquer problema com tecnologia, o primeiro passo é obter a matéria-prima: os dados.
Imagine que a API do Senado é uma biblioteca digital organizada. Em vez de copiarmos os dados manualmente, vamos usar comandos em Python para que o computador bata na porta dessa biblioteca e traga as informações para nós de forma automática.
Aprender a coletar dados é o que garante que sua análise será sempre atualizada e confiável.
import requests
import pandas as pd
# 1. Definimos o endereço da "biblioteca digital" (API)
url = "https://legis.senado.leg.br/dadosabertos/senador/lista/atual.json"
# 2. Fazemos a requisição (o pedido)
response = requests.get(url)
# 3. Transformamos a resposta em um formato que o Python entende (JSON)
dados_brutos = response.json()
# Dica da Pro: O dado que queremos está dentro de 'ListaParlamentarEmExercicio'
lista_senadores = dados_brutos['ListaParlamentarEmExercicio']['Parlamentares']['Parlamentar']
print("Dados coletados com sucesso!")
Etapa 2: O Olhar Estratégico – Entender antes de Transformar
Agora que os dados estão em nossas mãos, não podemos ter pressa.
Antes de jogá-los em uma tabela, que chamamos de DataFrame, precisamos entender o que recebemos.
Os dados da API vêm em um formato bruto e cheio de detalhes. Nesta etapa, vamos analisar quais informações são realmente úteis para responder à nossa pergunta e planejar como vamos organizá-las. Uma boa análise prévia economiza tempo e evita erros de cálculo lá na frente.
# Transformando a lista suja em uma tabela organizada
df_inicial = pd.DataFrame(lista_senadores)
# Analisando o que veio:
print(df_inicial.head()) # Mostra as primeiras linhas
print(df_inicial.columns) # Mostra todas as opções de informação que a API deu
Etapa 3: A Lapidação – Limpeza e Preparação do DataFrame
Com os dados organizados em uma tabela, percebemos que nem tudo o que veio da API é necessário.
É como organizar uma gaveta: precisamos jogar fora o que sobra, excluir colunas inúteis e padronizar o que fica, corrigindo nomes ou convertendo formatos.
Aqui, vamos transformar o dado bruto em informação útil, garantindo que a contagem dos senadores por partido seja precisa, sem nomes duplicados ou informações vazias.
# 1. Selecionamos apenas as colunas de Identificação e Partido
# Nota: Na API do Senado, o partido geralmente está dentro de 'IdentificacaoParlamentar'
df_limpo = pd.json_normalize(lista_senadores) # "Achata" os dados aninhados
# 2. Filtrando as colunas essenciais
colunas_foco = [
'IdentificacaoParlamentar.NomeParlamentar',
'IdentificacaoParlamentar.SiglaPartidoParlamentar'
]
df_final = df_limpo[colunas_foco]
# 3. Renomeando para ficar mais bonito
df_final.columns = ['Nome', 'Partido']
print(df_final.head())
Etapa 4: A Apresentação – A Força da Visualização de Dados
Chegamos ao objetivo final!
De nada adianta processar milhares de informações se não conseguirmos explicá-las de forma clara.
Nesta última etapa, vamos transformar nossos números e tabelas em uma visualização visual.
A visualização de dados é a ponte entre o código e a decisão; é aqui que o conhecimento se torna evidente para qualquer pessoa, mostrando de forma direta e visual a distribuição de poder entre os partidos no Senado.
# 1. Contando quantos senadores por partido
contagem_partidos = df_final['Partido'].value_counts()
print("--- RESULTADO FINAL ---")
print(contagem_partidos)
# 2. Criando um gráfico de barras simples
import matplotlib.pyplot as plt
contagem_partidos.plot(kind='bar', color='darkred', figsize=(10, 6))
plt.title('Número de Senadores por Partido')
plt.xlabel('Partido')
plt.ylabel('Quantidade de Senadores')
plt.xticks(rotation=45)
plt.show()