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()



Etapa 5: O Resultado Final - O Código Python