Metadata-Version: 2.1
Name: branalysis
Version: 1.0.12
Summary: Coleta e facilita a análise de votações nominais do Congresso Nacional
Home-page: https://github.com/mateuskreuch/branalysis
Author: Mateus Arns Kreuch
Author-email: mateus.kreuch@grad.ufsc.br
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Sociology
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: Portuguese (Brazilian)
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: peewee
Requires-Dist: Requests

# Branalysis

Biblioteca Python para coletar e analisar votaÃ§Ãµes nominais do Congresso Nacional.

```python
from branalysis.plenario import Camara
from datetime import date
from matplotlib import pyplot as plt
from statistics import mean

ANO = 2023

def calcula_idade(parlamentar):
   return (date(ANO, 12, 31) - parlamentar.data_nascimento).days / 365

plenario = Camara(ANO)

# Organiza os partidos por idade mÃ©dia, criando tuplas (partido, idade mÃ©dia)
partido_idade_media = [
   (partido, mean(calcula_idade(p) for p in parlamentares))
   for partido, parlamentares in plenario.parlamentares_por_partido().items()
]

# Ordena por idade mÃ©dia crescente
partido_idade_media.sort(key=lambda x: x[1])

# Plota o grÃ¡fico de barras
barras = plt.bar(*zip(*partido_idade_media))

plt.bar_label(barras, fmt=lambda x: f'{x:.1f}', label_type='edge')
plt.ylabel('Idade mÃ©dia')
plt.xticks(rotation=-45, ha='left')
plt.show()
```

```python
from branalysis import Camara, MatrizPolitica, Colorizador, CORES
from matplotlib.colors import ListedColormap
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

plenario = Camara(2023)
parlamentares = plenario.parlamentares()

# Cria a matriz de votos dos parlamentares
matriz = MatrizPolitica(parlamentares, plenario.votacoes()).de_parlamentares()

# Aplica a reduÃ§Ã£o de dimensionalidade
modelo = PCA(n_components=2).fit_transform(matriz)

# Cria um colorizador, que mapeia cores para cada partido
colorizador = Colorizador(fallback='MAIS DE UM')
cor_por_parlamentar = [colorizador[p.partidos()] for p in parlamentares]

# Plota o mapa ideolÃ³gico
grafico = plt.scatter(modelo[:, 0], modelo[:, 1], cmap=ListedColormap(CORES), c=cor_por_parlamentar)
texto_legenda, cores = colorizador.textos_e_cores()
cores_legenda = grafico.legend_elements(num=cores)[0]

plt.legend(cores_legenda, texto_legenda)
plt.show()
```
