11. Orçamento de Estado de 2023¶
Considerar todas as coisas como accidentes de uma illusão irracional, embora cada uma se apresente reacional para si mesma - nisto reside o princípio da sabedoria. Mas estes princípio da sabedoria não é mais que metade do entendimento das mesmas coisas. A outra parte do entendimento consiste no conhecimento d’essas coisas, na participação intima d’ellas.
—Fernando Pessoa, Esp. 54A-p, in Yvette Centeno «Fernando Pessoa e a Filosofia Hermética»
A análise das votações e posicionamento relativo dos partidos tendo como base exclusivamente a forma como votam foi a base do trabalho anterior, análise essa que teve como fonte as votações das Iniciativas e Actividades.
O Orçamento de Estado para 2023 é o segundo aprovado pelo governo de maioria absoluta do Partido Socialista, emergido das eleições anecipadas de Janeiro de 2022.
11.1. Metodologia¶
Com base nos dados disponibilizados pela Assembleia da República em formato XML são criadas dataframes (tabelas de duas dimensões) com base na selecção de informação relativa aos padrões de votação de cada partido (e/ou deputados não-inscritos)
São fundamentalmente feitas as seguintes análises:
Quantidade e tipo de propostas feitas, e resultado das mesmas
Apoio para as propostas de cada partido
Matriz de distância entre todos os partidos e dendograma
Identificação de grupos (spectral clustering) e visualização das distâncias num espaço cartesiano (multidimensional scaling)
11.2. As propostas: quantidade, aprovações, rejeições¶
Após obtermos e processarmos o ficheiro com as Propostas de Alteração podemos ter uma primeira ideia sobre a origem das propostas:
oe_df.groupby('GP')[['ID']].count().sort_values("ID", ascending=False)
ID | |
---|---|
GP | |
CH | 506 |
PCP | 425 |
PAN | 263 |
PSD | 217 |
BE | 156 |
L | 141 |
PS | 73 |
SÉRGIO MARQUES, SARA MADRUGA DA COSTA, PATRÍCIA DANTAS | 46 |
IL | 35 |
O resultado das propostas de cada partido (ou seja, se e como foram aprovadas ou rejeitadas):
pd.crosstab(oe_df.GP, oe_df.State)
State | Aprovado(a) Parcialmente em Comissão | Aprovado(a) em Comissão | Aprovado(a) em Plenário | Aprovado(a) por Unanimidade em Comissão | Aprovado(a) por Unanimidade em Plenário | Não Admitida | Rejeitado(a) em Comissão | Rejeitado(a) em Plenário | Retirado(a) |
---|---|---|---|---|---|---|---|---|---|
GP | |||||||||
BE | 1 | 5 | 0 | 0 | 0 | 0 | 148 | 2 | 0 |
CH | 0 | 0 | 0 | 0 | 0 | 0 | 489 | 11 | 6 |
IL | 0 | 1 | 0 | 1 | 0 | 0 | 30 | 2 | 1 |
L | 4 | 19 | 0 | 3 | 1 | 0 | 110 | 1 | 3 |
PAN | 2 | 26 | 0 | 0 | 0 | 0 | 224 | 2 | 9 |
PCP | 2 | 1 | 0 | 1 | 0 | 1 | 407 | 7 | 6 |
PS | 0 | 59 | 11 | 2 | 0 | 0 | 0 | 0 | 1 |
PSD | 1 | 5 | 0 | 1 | 0 | 0 | 194 | 16 | 0 |
SÉRGIO MARQUES, SARA MADRUGA DA COSTA, PATRÍCIA DANTAS | 0 | 0 | 0 | 0 | 0 | 0 | 44 | 1 | 1 |
Uma das diferenças que pode ser observada é a passagem do Chega para o primeiro lugar, em termos de número de propostas. Este dado não se deve ao diminuir das propostas dos outros partidos (o PCP, que em OEs anteriores foi quem mais propostas apresentou, tem neste OE quase 100 propostas a mais que no anterior), mas pelo crescimento das do Chega, que passa de 309 para 506).
O Livre aumenta também significativamente o número das suas propostas (de 84 para 141), enquanto a Iniciativa Liberal reduz de forma relevante (de 127 para 35). Os restantes (PSD, BE, PAN) )apresentam valores semelhantes
pd.crosstab(oe_df.GP, oe_df.State).columns
ct = pd.crosstab(oe_df.GP, oe_df.State)[['Aprovado(a) por Unanimidade em Plenário',
'Aprovado(a) por Unanimidade em Comissão',
'Aprovado(a) em Plenário',
'Aprovado(a) em Comissão',
'Aprovado(a) Parcialmente em Comissão',
'Rejeitado(a) em Plenário',
'Rejeitado(a) em Comissão',
]]
ct
State | Aprovado(a) por Unanimidade em Plenário | Aprovado(a) por Unanimidade em Comissão | Aprovado(a) em Plenário | Aprovado(a) em Comissão | Aprovado(a) Parcialmente em Comissão | Rejeitado(a) em Plenário | Rejeitado(a) em Comissão |
---|---|---|---|---|---|---|---|
GP | |||||||
BE | 0 | 0 | 0 | 5 | 1 | 2 | 148 |
CH | 0 | 0 | 0 | 0 | 0 | 11 | 489 |
IL | 0 | 1 | 0 | 1 | 0 | 2 | 30 |
L | 1 | 3 | 0 | 19 | 4 | 1 | 110 |
PAN | 0 | 0 | 0 | 26 | 2 | 2 | 224 |
PCP | 0 | 1 | 0 | 1 | 2 | 7 | 407 |
PS | 0 | 2 | 11 | 59 | 0 | 0 | 0 |
PSD | 0 | 1 | 0 | 5 | 1 | 16 | 194 |
SÉRGIO MARQUES, SARA MADRUGA DA COSTA, PATRÍCIA DANTAS | 0 | 0 | 0 | 0 | 0 | 1 | 44 |
A mesma informação em forma de gráfico de barras: o total de propostas de cada partido (ou deputados) com a distribuição do resultado das mesmas, ordenados pelo maior número de aprovações.
%matplotlib inline
# sp = sp.sort_values(by=['Favor','Abstenção','Contra'], ascending=False, axis=1)
import seaborn as sns
from matplotlib.colors import ListedColormap
sns.set()
sns.set_style("whitegrid")
## Sort by the "Approved" in the many ways it's possible
## sort by a separate aggregate value.
ct.sort_values(by=['Aprovado(a) em Comissão','Aprovado(a) por Unanimidade em Comissão','Aprovado(a) em Plenário','Aprovado(a) por Unanimidade em Plenário','Aprovado(a) Parcialmente em Comissão'], ascending=False,axis=0).plot(kind="bar", stacked=True, colormap=ListedColormap(sns.color_palette("coolwarm").as_hex()),figsize=(10,10))
plt.show()
Tendo em conta o resultado das propostas, alguns comentários:
O maior número de propostas submetidas e também rejeitadas é do Chega, que não consegue aprovação de nenhuma proposta.
O Livre e o PAN são os partidos que conseguem taxas de aprovação com alguma relevância.
O PCP, com o segundo maior número de propostas, tem uma taxa de aprovação muito reduzida (apenas 4).
BE e PSD aprovam ligeiramente mais, mas mesmo assim é residual.
IL consegue 2 aprovações.
É, em vários aspectos, um resulta em linha com o orçamento anterior, na forma como a maioria absoluta do PS garante uma taxa de aprovação completa a propostas do PS, bem como uma aparente convergência (dentro do contexto) com PAN e Livre.
11.2.1. Propostas aprovadas¶
E que propostas cada partido conseguiu aprovar? A utilização do título da iniciativa é aqui útil
from IPython.display import display, HTML
approved_oe = oe_df[oe_df.State.str.contains("Aprovado")].fillna("")
for gp in approved_oe.GP.unique():
gp_df = approved_oe[approved_oe["GP"]==gp][["GP","IniTitle", "VoteDesc", "State"]]
print(gp + ":", len(gp_df.index), " aprovadas.")
with pd.option_context('display.max_rows', None, 'display.max_columns', None, 'display.max_colwidth', -1): # more options can be specified also
display(gp_df)
PS: 72 aprovadas.
GP | IniTitle | VoteDesc | State | |
---|---|---|---|---|
0 | PS | Atualização das pensões para 2023 | Artigo 150.º-D | Aprovado(a) em Plenário |
1 | PS | Concessão e renovação simplificada de autorizações de residência | Artigo 150.º-C | Aprovado(a) em Comissão |
2 | PS | Transferências para políticas ativas de emprego e formação profissional | N.º 3, Artigo 83.º | Aprovado(a) em Comissão |
4 | PS | Conclusão da Residência da Escola Superior de Desporto de Rio Maior | Artigo 117.º-A | Aprovado(a) em Plenário |
5 | PS | Aeroporto da Horta | Artigo 46.º-A | Aprovado(a) em Comissão |
6 | PS | Alargamento da oferta de Profilaxia Pré Exposição | Artigo 124.º-D | Aprovado(a) em Comissão |
7 | PS | Integração do Sistema Híbrido de Perfusão Subcutânea Contínua de Insulina no Regime Geral do Medicamento | Artigo 124.º-C | Aprovado(a) em Comissão |
8 | PS | Alargamento do Programa Nacional de Promoção de Saúde Oral | Artigo 124.º-B | Aprovado(a) em Comissão |
9 | PS | Comparticipação das fórmulas elementares que se destinem a crianças com alergia às proteínas do leite de vaca | Artigo 124.º-A | Aprovado(a) em Comissão |
15 | PS | Prorrogação prazo suspensivo de novas licenças para Alojamento Local | Artigo 100.º-A | Aprovado(a) em Comissão |
17 | PS | Alteração à lei geral tributária | Artigo 195.º-A | Aprovado(a) em Comissão |
19 | PS | Alteração da Lei n.º 50/2012, de 31 de agosto | Artigo 195.º-A | Aprovado(a) em Comissão |
22 | PS | Distribuição gratuita de bens de higiene pessoal feminina | Artigo 150.º-A | Aprovado(a) em Comissão |
24 | PS | Reforço do apoio psicológico nas instituições de ensino | Artigo 119.º-A | Aprovado(a) por Unanimidade em Comissão |
27 | PS | Transferências orçamentais | Verba 106, Anexo I, Artigo 7.º | Aprovado(a) em Comissão |
28 | PS | Alteração ao Código do Imposto Municipal sobre Imóveis | Artigo 175.º-A | Aprovado(a) em Comissão |
29 | PS | Amortização dos contratos de empréstimo | Artigo 48.º-A | Aprovado(a) em Comissão |
81 | PS | Formação de contratos no âmbito da Jornada Mundial da Juventude 2023 | N.º 6, Artigo 106.º | Aprovado(a) em Comissão |
82 | PS | Formação de contratos no âmbito da Jornada Mundial da Juventude 2023 | N.º 5, Artigo 106.º | Aprovado(a) em Comissão |
171 | PS | Alteração ao Estatuto dos Eleitos Locais | Artigo 195.º-A | Aprovado(a) em Plenário |
180 | PS | Alteração ao Código dos Impostos Especiais de Consumo | Aprovado(a) em Comissão | |
294 | PS | Alteração em sede de Imposto do Selo | Artigo 170.º-A | Aprovado(a) em Comissão |
298 | PS | Alteração ao Decreto-Lei n.º 61/2013, de 10 de maio | Artigo 188.º-B | Aprovado(a) em Comissão |
304 | PS | Alteração ao Código do Imposto do Selo | Aprovado(a) em Comissão | |
305 | PS | Alteração ao Código do Imposto do Selo | Aprovado(a) em Comissão | |
306 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Coletivas | Aprovado(a) em Comissão | |
307 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Coletivas | Aprovado(a) em Comissão | |
308 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
309 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
310 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
316 | PS | Alteração ao Decreto-Lei n.º 84/2017, de 21 de julho | Artigo 150.º-B | Aprovado(a) em Comissão |
319 | PS | Alteração ao Estatuto da Ordem dos Contabilistas Certificados | Artigo 150.º-A | Aprovado(a) em Comissão |
324 | PS | Alteração à lista I anexa ao Código do Imposto sobre o Valor Acrescentado | Artigo 167.º-A | Aprovado(a) em Comissão |
331 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
333 | PS | Alteração à Lei n.º 19/2022, de 21 de outubro | Artigo 158.º-A | Aprovado(a) em Comissão |
336 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
338 | PS | Alteração ao Código Fiscal do Investimento | Artigo 177.º-A | Aprovado(a) em Comissão |
342 | PS | Disposição transitória em matéria de imposto sobre o rendimento das pessoas coletivas | N.º 2, Artigo 160.º | Aprovado(a) em Comissão |
344 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Coletivas | Aprovado(a) em Comissão | |
345 | PS | Aditamento ao Estatuto dos Benefícios Fiscais | Aprovado(a) em Comissão | |
346 | PS | Aditamento ao Estatuto dos Benefícios Fiscais | Aprovado(a) em Comissão | |
353 | PS | Alteração ao Estatuto dos Benefícios Fiscais | Aprovado(a) em Plenário | |
354 | PS | Alteração ao Estatuto dos Benefícios Fiscais | Aprovado(a) em Plenário | |
362 | PS | Reforço do complemento de alojamento para estudantes do ensino superior | Artigo 117.º-A | Aprovado(a) em Comissão |
369 | PS | Remuneração dos estágios curriculares | Artigo 119.º-A | Aprovado(a) em Comissão |
373 | PS | Alteração ao Estatuto dos Benefícios Fiscais | Aprovado(a) em Comissão | |
374 | PS | Alteração ao Estatuto dos Benefícios Fiscais | Aprovado(a) em Comissão | |
379 | PS | Apoio à Emergência Demográfica | Artigo 189.º-A | Aprovado(a) em Comissão |
387 | PS | Programa ESCOLHAS | Artigo 121.º-A | Aprovado(a) em Plenário |
394 | PS | Aditamento ao Decreto-Lei n.º 53-B/2021, de 23 de junho | Artigo 43.º-C | Aprovado(a) em Comissão |
402 | PS | Prorrogação de efeitos | N.º 2, Artigo 198.º | Aprovado(a) em Plenário |
405 | PS | Pensão de velhice dos marítimos das embarcações de investigação | Artigo 194.º-A | Aprovado(a) em Comissão |
421 | PS | Auxílios financeiros e cooperação técnica e financeira | N.º 3, Artigo 59.º | Aprovado(a) em Plenário |
435 | PS | Estudo e avaliação do custo e da implementação de um plano de contingência no Aeroporto Internacional da Madeira – Cristiano Ronaldo | Artigo 43.º-B | Aprovado(a) em Plenário |
442 | PS | Novo estabelecimento prisional de S. Miguel | Artigo 47.º-A | Aprovado(a) em Comissão |
446 | PS | Cadeia de Apoio da Horta | Artigo 47.º-B | Aprovado(a) em Comissão |
448 | PS | Instituições públicas de ensino superior das regiões autónomas | Artigo 47.º-C | Aprovado(a) em Plenário |
452 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Coletivas | Aprovado(a) em Comissão | |
455 | PS | Alteração ao Código do Imposto Municipal sobre Imóvei | Artigo 175.º-A | Aprovado(a) em Comissão |
458 | PS | Produção de efeitos e vigência | N.º 3, Artigo 197.º | Aprovado(a) em Comissão |
459 | PS | Aditamento à lista I anexa ao Código do Imposto sobre o Valor Acrescentado | Artigo 167.º-A | Aprovado(a) por Unanimidade em Comissão |
464 | PS | Alteração à lista I anexa ao Código do Imposto sobre o Valor Acrescentado | Artigo 167.º-A | Aprovado(a) em Comissão |
469 | PS | Norma revogatória | Alínea e), Artigo 196.º | Aprovado(a) em Comissão |
470 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
471 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
472 | PS | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Plenário | |
475 | PS | Alteração ao Código do Imposto Municipal sobre as Transmissões Onerosas de Imóveis | Aprovado(a) em Comissão | |
476 | PS | Alteração ao Código do Imposto Municipal sobre as Transmissões Onerosas de Imóveis | Aprovado(a) em Comissão | |
477 | PS | Alteração ao Código do Imposto Municipal sobre as Transmissões Onerosas de Imóveis | Aprovado(a) em Comissão | |
481 | PS | Disposições relativas ao financiamento do ensino profissional | N.º 1, Artigo 121.º | Aprovado(a) em Comissão |
485 | PS | Adaptação das zonas ajardinadas públicas às alterações climáticas | Artigo 138.º-B | Aprovado(a) em Comissão |
487 | PS | Despoluição da Bacia Hidrográfica do Rio Lis | Artigo 138.º-B | Aprovado(a) em Comissão |
L: 27 aprovadas.
GP | IniTitle | VoteDesc | State | |
---|---|---|---|---|
25 | L | Promoção da Língua Mirandesa (promoçon de la Lhéngua Mirandesa) | Artigo 113.º-A | Aprovado(a) em Comissão |
173 | L | Promoção do transporte escolar e da mobilidade flexível, polivalente e ecológica | Artigo 134.º-B | Aprovado(a) em Comissão |
174 | L | Passe Ferroviário Nacional | Artigo 134.º-A | Aprovado(a) em Comissão |
184 | L | Comparticipação de leites, fórmulas infantis e vacina anti-alérgica | Artigo 125.º-B | Aprovado(a) em Comissão |
187 | L | Encargos com nutrição entérica e parentérica | Artigo 125.º-A | Aprovado(a) por Unanimidade em Comissão |
190 | L | Bilha Solidária | Artigo 135.º-A | Aprovado(a) em Comissão |
193 | L | Disponibilização de bombas de insulina para pessoas com diabetes de tipo 1 | Artigo 124.º-A | Aprovado(a) por Unanimidade em Comissão |
199 | L | Contratação de recursos humanos para concretização das políticas públicas de habitação | Artigo 26.º-E | Aprovado(a) Parcialmente em Comissão |
203 | L | Programa 3C - Casa, Conforto e Clima | Artigo 138.º-C | Aprovado(a) em Comissão |
214 | L | Programa de Mobilidade Sustentável Casa-Trabalho | Artigo 141.º-A | Aprovado(a) em Comissão |
218 | L | Cartão +Cultura, +Cidadania | Artigo 150.º-O | Aprovado(a) Parcialmente em Comissão |
219 | L | Combate à Poluição Luminosa | Artigo 150.º-W | Aprovado(a) Parcialmente em Comissão |
222 | L | Apoio às Cooperativas de Habitação | Artigo 150.º-X | Aprovado(a) em Comissão |
313 | L | Produção de efeitos e vigência | N.º 3, Artigo 197.º | Aprovado(a) em Comissão |
314 | L | Complemento especial ao abono de família | Artigo 77.º-B | Aprovado(a) em Comissão |
330 | L | Estratégia Nacional e Programa para a Remoção de Infraestruturas Hidráulicas obsoletas | Artigo 142.º-C | Aprovado(a) em Comissão |
637 | L | Base de dados sobre juntas médicas e estudo sobre a dispensa de avaliação | Artigo 123.º-B | Aprovado(a) em Comissão |
704 | L | Violência Contra Pessoas com Deficiência | Artigo 150.º-H | Aprovado(a) por Unanimidade em Plenário |
743 | L | Produção de efeitos e vigência | N.º 3, Artigo 197.º | Aprovado(a) em Comissão |
744 | L | Alteração ao Código do Imposto sobre o Valor Acrescentado | Artigo 167.º-K | Aprovado(a) em Comissão |
872 | L | Acessibilidade do Portal da Queixa Eletrónica | Artigo 149.º-A | Aprovado(a) por Unanimidade em Comissão |
879 | L | Estudo sobre Impacto da Menstruação | Artigo 150.º-G | Aprovado(a) em Comissão |
886 | L | Transferência para o Fundo de Salvaguarda do Património Cultural | Artigo 150.º-J | Aprovado(a) em Comissão |
889 | L | Atualização do Plano Nacional para o Alojamento no Ensino Superior com a identificação das necessidades dos estudantes com deficiência | Artigo 117.º-A | Aprovado(a) Parcialmente em Comissão |
892 | L | Livro Branco sobre Trabalho Sexual e Prostituição | Artigo 107.º-D | Aprovado(a) em Comissão |
898 | L | Alteração à lista I anexa ao Código do Imposto sobre o Valor Acrescentado | Artigo 167.º-G | Aprovado(a) em Comissão |
906 | L | Formação em Direitos Humanos para Funções de Atendimento ao Público | Artigo 32.º-A | Aprovado(a) em Comissão |
PAN: 28 aprovadas.
GP | IniTitle | VoteDesc | State | |
---|---|---|---|---|
70 | PAN | Plano de Proteção e Despoluição do Rio Paiva | Artigo 135.º-A | Aprovado(a) em Comissão |
74 | PAN | Plano de Ação Nacional para a Gestão e Conservação de Tubarões e Raias | Artigo 143.º-A | Aprovado(a) em Comissão |
100 | PAN | Melhoria dos procedimentos consulares no pedido de registo de mudança da menção do sexo e do nome próprio | Artigo 142.º-A | Aprovado(a) em Comissão |
127 | PAN | Incentivo aos hábitos de leitura nos jovens adultos | Artigo 149.º-A | Aprovado(a) em Comissão |
128 | PAN | Estudo sobre capturas indevidas de mamíferos e aves marinhas pelas redes de pesca e reforço da monitorização | Artigo 139.º-A | Aprovado(a) Parcialmente em Comissão |
192 | PAN | Apoios para o arranque e controlo de eucaliptos de crescimento espontâneo | Artigo 139.º-A | Aprovado(a) em Comissão |
271 | PAN | Gestão sustentável de habitats agrícolas | Artigo 139.º-A | Aprovado(a) em Comissão |
273 | PAN | Alteração à lista I anexa ao Código do Imposto sobre o Valor Acrescentado | Artigo 166.º-A | Aprovado(a) em Comissão |
390 | PAN | Estudo sobre o impacto da “Taxa Rosa” em Portugal | Artigo 14.º-B | Aprovado(a) em Comissão |
427 | PAN | Espaço Gisberta - Resposta Integrada de Apoio à Vítima LGBTI | Artigo 14.º-B | Aprovado(a) em Comissão |
468 | PAN | Plano Anual de Formação sobre bem-estar animal | Artigo 143.º-A | Aprovado(a) em Comissão |
524 | PAN | Taxa de carbono sobre as viagens aéreas em aeronaves com capacidade máxima de até 19 lugares | Artigo 139.º-A | Aprovado(a) em Comissão |
820 | PAN | Centros de recolha oficial de animais, apoio à esterilização e à promoção do bem-estar animal | N.º 2, Artigo 143.º | Aprovado(a) em Comissão |
829 | PAN | Alteração à lista I anexa ao Código do Imposto sobre o Valor Acrescentado | Artigo 166.º-A | Aprovado(a) em Comissão |
832 | PAN | Alteração à lista I anexa ao Código do Imposto sobre o Valor Acrescentado | Artigo 166.º-A | Aprovado(a) em Comissão |
1032 | PAN | Atlas de risco das alterações climáticas | Artigo 137.º-A | Aprovado(a) em Comissão |
1070 | PAN | Realização de campanha anual de identificação gratuita dos animais de companhia | Artigo 143.º-A | Aprovado(a) em Comissão |
1817 | PAN | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Coletivas | Aprovado(a) em Comissão | |
1819 | PAN | Incentivo à introdução no consumo de veículos de baixas emissões | Artigo 138.º-A | Aprovado(a) Parcialmente em Comissão |
1825 | PAN | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
1832 | PAN | Alteração ao Decreto-Lei n.º 15/2022, de 14 de janeiro | Artigo 135.º-A | Aprovado(a) em Comissão |
1835 | PAN | Alteração à lista I anexa ao Código do Imposto sobre o Valor Acrescentado | Artigo 166.º-A | Aprovado(a) em Comissão |
1836 | PAN | Centros de recuperação de animais selvagens | Artigo 143.º-A | Aprovado(a) em Comissão |
1853 | PAN | Centros de recolha oficial de animais, apoio à esterilização e à promoção do bem-estar animal | Subalínea ii), Alínea c), N.º 1, Artigo 143.º | Aprovado(a) em Comissão |
1854 | PAN | Centros de recolha oficial de animais, apoio à esterilização e à promoção do bem-estar animal | N.º 6, Artigo 143.º | Aprovado(a) em Comissão |
1855 | PAN | Centros de recolha oficial de animais, apoio à esterilização e à promoção do bem-estar animal | Alínea b), N.º 1, Artigo 143.º | Aprovado(a) em Comissão |
1856 | PAN | Centros de recolha oficial de animais, apoio à esterilização e à promoção do bem-estar animal | Alínea a), N.º 1, Artigo 143.º | Aprovado(a) em Comissão |
1857 | PAN | Combate à pobreza menstrual | Artigo 14.º-A | Aprovado(a) em Comissão |
PCP: 4 aprovadas.
GP | IniTitle | VoteDesc | State | |
---|---|---|---|---|
265 | PCP | Alteração ao Código do Imposto sobre o Valor Acrescentado | Artigo 166.º-A | Aprovado(a) por Unanimidade em Comissão |
531 | PCP | Eliminação de barreiras arquitetónicas | Artigo 76.º-A | Aprovado(a) Parcialmente em Comissão |
659 | PCP | Atualização da caraterização e diagnóstico do estado de conservação dos valores naturais em áreas protegidas | Artigo 154.º-A | Aprovado(a) em Comissão |
1505 | PCP | Proteção das vítimas de violência doméstica (Alteração à Lei n.º 112/ 2009, de 16 de setembro) | Artigo 192.º-A | Aprovado(a) Parcialmente em Comissão |
PSD: 7 aprovadas.
GP | IniTitle | VoteDesc | State | |
---|---|---|---|---|
335 | PSD | Regime extraordinário de apoio a encargos suportados na produção agrícola | Alínea d), N.º 1, Artigo 164.º | Aprovado(a) em Comissão |
585 | PSD | Fiscalização prévia do Tribunal de Contas | N.º 5, Artigo 147.º | Aprovado(a) em Comissão |
837 | PSD | Alteração à Lei n.º 19/2022, de 21 de outubro | Artigo 179.º-A | Aprovado(a) em Comissão |
853 | PSD | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Singulares | Aprovado(a) em Comissão | |
854 | PSD | Alteração ao Código do Imposto sobre o Rendimento das Pessoas Coletivas | Aprovado(a) em Comissão | |
1161 | PSD | Reforço de meios para a prevenção e combate ao tráfico de seres humanos | Artigo 18.º-B | Aprovado(a) Parcialmente em Comissão |
1164 | PSD | Reforço da prevenção e combate à violência contra as pessoas idosas | Artigo 18.º-A | Aprovado(a) por Unanimidade em Comissão |
BE: 6 aprovadas.
GP | IniTitle | VoteDesc | State | |
---|---|---|---|---|
662 | BE | Revisão das taxas de retenção para trabalhadores independentes | Artigo 151.º-A | Aprovado(a) Parcialmente em Comissão |
667 | BE | Inquérito nacional de caraterização sociodemográfica da população com deficiência | Artigo 150.º-C | Aprovado(a) em Comissão |
710 | BE | Alteração ao Código Civil | Artigo 191.º-A | Aprovado(a) em Comissão |
1037 | BE | Alteração ao Código do Imposto Municipal sobre as Transmissões Onerosas de Imóveis | Aprovado(a) em Comissão | |
1038 | BE | Norma revogatória de produção de efeitos em matéria fiscal | Artigo 190.º-A | Aprovado(a) em Comissão |
1124 | BE | Concretização da Estratégia Nacional de Compras Públicas Ecológicas | Artigo 14.º-A | Aprovado(a) em Comissão |
IL: 2 aprovadas.
GP | IniTitle | VoteDesc | State | |
---|---|---|---|---|
738 | IL | Regulamentação dos Sistemas de Depósito e Reembolso | Artigo 138.º-A | Aprovado(a) em Comissão |
1014 | IL | Antecipação dos resultados do Concurso Nacional de Acesso e Ingresso no Ensino Superior Público | Artigo 121.º-A | Aprovado(a) por Unanimidade em Comissão |
11.3. As votações¶
Até agora contabilizámos as propostas de alteração e o seu resultado; se em geral existe uma votação por proposta de alteração isso nem sempre acontece: existem propostas de alteração que dão origem a mais que uma votação. As votações contêm informação adicional que é interessante para de determinar de forma directa o teor das propostas (nomeadamente o título) e também a forma como os diferentes partidos e deputados votaram: se ao nível das propostas temos o resultado final, com as votações podemos saber como atingiram esse fim.
Após processarmos as votações enriquecemos o dataframe com informação adicional. do qual a seguinte selecção é um exemplo: note-se o maior numero de colunas com informação adicional sobre cada votação.
#df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
oe_dfr = oe_df.rename(columns={'Partido Socialista': 'PS',
'Partido Social Democrata': 'PSD',
'Bloco de Esquerda': 'BE',
'Partido Comunista Português': 'PCP',
'Pessoas-Animais-Natureza': 'PAN',
'Chega': 'CH',
'Iniciativa Liberal':'IL',
'Livre':'L',
})
oe_dfr.head()
ID | Nr | Date | Domain | Type | State | GP | IniTitle | VoteDesc | PS | PSD | CH | IL | PCP | BE | PAN | L | V_Date | Result | PATRÍCIA DANTAS(PSD) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 19078 | 1763C | 15/11/2022 15:47:00 | None | Aditamento (Artigo PPL) | Aprovado(a) em Plenário | PS | Atualização das pensões para 2023 | Artigo 150.º-D: Atualização das pensões para 2023 | Favor | Abstenção | Contra | Abstenção | Abstenção | Abstenção | Abstenção | Abstenção | 23/11/2022 00:00:00 | Aprovado(a) | NaN |
1 | 19078 | 1763C | 15/11/2022 15:47:00 | None | Aditamento (Artigo PPL) | Aprovado(a) em Plenário | PS | Atualização das pensões para 2023 | Artigo 150.º-D: Atualização das pensões para 2023 | Favor | Abstenção | Contra | Abstenção | Abstenção | Abstenção | Abstenção | Abstenção | 23/11/2022 00:00:00 | Aprovado(a) | NaN |
2 | 19077 | 1762C | 15/11/2022 15:45:00 | None | Aditamento (Artigo PPL) | Aprovado(a) em Comissão | PS | Concessão e renovação simplificada de autoriza... | Artigo 150.º-C: Concessão e renovação simplifi... | Favor | Favor | Contra | Abstenção | Favor | Favor | Favor | Favor | 23/11/2022 00:00:00 | Aprovado(a) | NaN |
3 | 19021 | 1761C | 11/11/2022 21:24:00 | None | Aditamento (Números e Alíneas) | Aprovado(a) em Comissão | PS | Transferências para políticas ativas de empreg... | NaN | Favor | Abstenção | Favor | Favor | Abstenção | Abstenção | Favor | Favor | 21/11/2022 00:00:00 | Aprovado(a) | Contra |
4 | 19020 | 1760C | 11/11/2022 21:21:00 | None | Aditamento (Artigo PPL) | Rejeitado(a) em Comissão | PAN | Atualização da lista de espécies em risco e em... | Artigo 139.º-A: Atualização da lista de espéci... | Contra | Abstenção | Abstenção | Favor | Favor | Favor | Favor | Favor | 21/11/2022 00:00:00 | Rejeitado(a) | NaN |
Para a análise das votações escolhemos um subconjunto alargado dos autores das propostas, isto porque as propostas de deputados individuais ou em grupo necessitaria de um tratamento mais complexo: consideramos todos os grupos parlamentos e deputados únicos de partido (Livre).
O resultado é uma tabela com a indicação do autor da proposta onde se integra a votação e os votos dos partidos.
mycol = ['GP', 'BE', 'PCP','L','PS', 'PAN', 'PSD','IL', 'CH' ]
parties = ['BE', 'PCP','L','PS', 'PAN','PSD','IL', 'CH']
df=oe_dfr
submissions_ini = df[mycol]
submissions_ini.head()
GP | BE | PCP | L | PS | PAN | PSD | IL | CH | |
---|---|---|---|---|---|---|---|---|---|
0 | PS | Abstenção | Abstenção | Abstenção | Favor | Abstenção | Abstenção | Abstenção | Contra |
1 | PS | Abstenção | Abstenção | Abstenção | Favor | Abstenção | Abstenção | Abstenção | Contra |
2 | PS | Favor | Favor | Favor | Favor | Favor | Favor | Abstenção | Contra |
3 | PS | Abstenção | Abstenção | Favor | Favor | Favor | Abstenção | Favor | Favor |
4 | PAN | Favor | Favor | Favor | Contra | Favor | Abstenção | Favor | Abstenção |
Com esta informação é possível determinar os padrões de votação; o diagrama seguinte mostra a relação entre cada par de partidos: no eixo horizontal quem propõe, e no vertical como votaram:
parties = ['BE', 'PCP','L','PS', 'PAN','PSD', 'IL','CH']
gpsubs = submissions_ini
cmap=ListedColormap(sns.color_palette("pastel").as_hex())
colors=["#DFE38C","#F59B9B","black","#7FE7CC" ]
cmap = ListedColormap(colors)
spn = 0
fig, axes = plt.subplots(nrows=8, ncols=8, figsize=(20, 20))
axes = axes.ravel()
for party in parties:
for p2 in parties:
sns.set_style("white")
subp = gpsubs[gpsubs['GP'] == p2][[party]]
sp = subp.fillna("Ausência").apply(pd.Series.value_counts)
d = pd.DataFrame(columns=["GP","Abstenção", "Contra", "Ausência","Favor"]).merge(sp.T, how="right").fillna(0)
d["GP"] = party
d = d.set_index("GP")
d = d[["Abstenção", "Contra", "Ausência","Favor"]]
if p2 != party:
sns.despine(left=True, bottom=True)
if spn < 9:
d.plot(kind='barh', stacked=True,width=400,colormap=cmap, title=p2,use_index=False,ax=axes[spn])
else:
d.plot(kind='barh', stacked=True,width=400,colormap=cmap,use_index=False,ax=axes[spn])
axes[spn].get_legend().remove()
plt.ylim(-4.5, axes[spn].get_yticks()[-1] + 0.5)
else:
axes[spn].set_xticks([])
#d.plot(kind='barh', stacked=True,width=400,colormap=cmap,use_index=False,ax=axes[spn])
#axes[spn].get_legend().remove()
if spn < 8:
axes[spn].set_title(p2)
axes[spn].set_yticks([])
## Why? Who knows? Certainly not me. This is likely a side-effect of using a single axis through .ravel
if spn%8 == 0:
if spn != 0:
text = axes[spn].text(-30,0,party,rotation=90)
else:
text = axes[spn].text(-0.17,0.5,party,rotation=90)
#print(party, p2)
#print(d)
#print("-------------------------_")
spn += 1
#axes[11].set_axis_off()
text = axes[0].text(4,1.3,"Quem propôs",rotation=0,fontsize=22)
text = axes[0].text(-0.4,-4,"Como votaram",rotation=90,fontsize=22)
#fig.tight_layout()
plt.show()
Uma outra visualização, menos condensada mas com maior clareza quantitativa: para cada partido é criado um gráfico de barras, ordenado pelos votos favoráveis, com comportamento de votos dos restantes para com as suas propostas.
from IPython.display import display
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
from matplotlib import cm
parties = ['BE', 'PCP', 'L','PS', 'PAN','PSD','IL', 'CH']
ndf = pd.DataFrame()
#submissions_ini_nu = submissions_ini.loc[submissions_ini['unanime'] != "unanime"]
gpsubs = submissions_ini
cmap=ListedColormap(sns.color_palette("pastel").as_hex())
colors=["#fdfd96", "black","#ff6961","#77dd77", ]
cmap = ListedColormap(colors)
#spn = 0
#axes = axes.ravel()
for party in parties:
sns.set_style("whitegrid")
subp = gpsubs[gpsubs['GP'] == party]
sp = subp[parties].apply(pd.Series.value_counts).fillna(0).drop([party],axis=1)
sp = sp.sort_values(by=['Favor','Abstenção','Contra'], ascending=False, axis=1)
d = sp.T
f = plt.figure()
plt.title(party)
d.plot(kind='bar', ax=f.gca(), stacked=True, title=party, colormap=cmap,)
plt.legend(loc='center left', bbox_to_anchor=(0.7, 0.9),)
plt.show()
plt.show()
11.4. Dendograma e distância¶
Com base nas votações obtemos a distância euclideana entre todos os partidos (a distância entre todos os pares possíveis, considerado todas as votações), e com base nela um dendograma que indica a distância entre eles.
from scipy.spatial.distance import squareform
from scipy.spatial.distance import pdist
import scipy.spatial as sp, scipy.cluster.hierarchy as hc
import numpy as np
votes_hm = oe_dfr[['BE', 'PCP', 'L','PS', 'PAN', 'PSD','IL', 'CH']]
votes_hmn = votes_hm.replace(["Favor", "Contra", "Abstenção", "Ausente"], [1,-1,0,0]).fillna(0)
## Transpose the dataframe used for the heatmap
votes_t = votes_hmn.transpose()
## Determine the Eucledian pairwise distance
## ("euclidean" is actually the default option)
pwdist = pdist(votes_t, metric='euclidean')
## Create a square dataframe with the pairwise distances: the distance matrix
distmat = pd.DataFrame(
squareform(pwdist), # pass a symmetric distance matrix
columns = votes_t.index,
index = votes_t.index
)
## Normalise by scaling between 0-1, using dataframe max value to keep the symmetry.
## This is essentially a cosmetic step to
distmat_mm=((distmat-distmat.min().min())/(distmat.max().max()-distmat.min().min()))*1
## Affinity matrix
affinmat_mm = pd.DataFrame(1-distmat_mm, distmat.index, distmat.columns)
#pd.DataFrame(distmat_mm, distmat.index, distmat.columns)
## Perform hierarchical linkage on the distance matrix using Ward's method.
distmat_link = hc.linkage(pwdist, method="ward", optimal_ordering=True )
sns.clustermap(
distmat,
annot = True,
cmap=sns.color_palette("Greens_r"),
linewidth=1,
#standard_scale=1,
row_linkage=distmat_link,
col_linkage=distmat_link,
figsize=(8,8)).fig.suptitle('Votações do OE 2023: Clustermap')
plt.show()
BE | PCP | L | PS | PAN | PSD | IL | CH | |
---|---|---|---|---|---|---|---|---|
BE | 1961 | 1340 | 1387 | 362 | 1360 | 600 | 688 | 871 |
PCP | 1340 | 1961 | 1430 | 382 | 1044 | 701 | 655 | 649 |
L | 1387 | 1430 | 1961 | 301 | 1285 | 687 | 635 | 670 |
PS | 362 | 382 | 301 | 1961 | 279 | 459 | 602 | 294 |
PAN | 1360 | 1044 | 1285 | 279 | 1961 | 673 | 766 | 964 |
PSD | 600 | 701 | 687 | 459 | 673 | 1961 | 980 | 819 |
IL | 688 | 655 | 635 | 602 | 766 | 980 | 1961 | 863 |
CH | 871 | 649 | 670 | 294 | 964 | 819 | 863 | 1961 |
11.5. MDS: Multidimensional scaling¶
Tendo como base os votos no OE podemos utilizar a mesma técnica que empregámos na análise de toda a legislatura. Para identificar grupos usamos (mais uma vez, como no trabalho original, e presente nos Apêndices) Spectral scaling, definindo 4 grupos.
sc = SpectralClustering(3, affinity="precomputed",random_state=2020).fit_predict(affinmat_mm)
sc_dict = dict(zip(distmat,sc))
pd.DataFrame.from_dict(sc_dict, orient='index', columns=["Group"]).T
BE | PCP | L | PS | PAN | PSD | IL | CH | |
---|---|---|---|---|---|---|---|---|
Group | 1 | 1 | 1 | 0 | 1 | 2 | 2 | 2 |
São resultados, mais uma vez, idênticos ao da votação anterior, com o PS individualizado e separado de um grupo à sua esquerda, e outro à sua direita.
from sklearn.manifold import MDS
import random
mds = MDS(n_components=2, dissimilarity='precomputed',random_state=60, n_init=100, max_iter=1000)
## We use the normalised distance matrix but results would
## be similar with the original one, just with a different scale/axis
results = mds.fit(distmat_mm.values)
coords = results.embedding_
sns.set()
sns.set_style("ticks")
fig, ax = plt.subplots(figsize=(8,8))
fig.suptitle('2023 Budget Approval', fontsize=14)
ax.set_title('MDS with Spectrum Scaling clusters (2D)')
for label, x, y in zip(distmat_mm.columns, coords[:, 0], coords[:, 1]):
ax.scatter(x, y, c = "C"+str(sc_dict[label]), s=250)
ax.axis('equal')
ax.annotate(label,xy = (x-0.02, y+0.025))
plt.show()
Também o MDS é muito semelhante ao da votação anterior
Uma visualização em 3D permtie uma visão diferente, com mais uma dimensão:
mds = MDS(n_components=3, dissimilarity='precomputed',random_state=1234, n_init=100, max_iter=1000)
results = mds.fit(distmat.values)
parties = distmat.columns
coords = results.embedding_
import plotly.graph_objects as go
# Create figure
fig = go.Figure()
# Loop df columns and plot columns to the figure
for label, x, y, z in zip(parties, coords[:, 0], coords[:, 1], coords[:, 2]):
fig.add_trace(go.Scatter3d(x=[x], y=[y], z=[z],
text=label,
textposition="top center",
mode='markers+text', # 'lines' or 'markers'
name=label))
fig.update_layout(
width = 700,
height = 700,
title = "OE 2023: 3D MDS",
template="plotly_white",
showlegend=False
)
fig.update_yaxes(
scaleanchor = "x",
scaleratio = 1,
)
plot(fig, filename = 'oe_3d_mds.html')
display(HTML('oe_3d_mds.html'))
11.6. Palavras finais¶
Esta análise demonstra como a utilização de dados abertos pode, uma vez mais, facilitar a análise da actividade parlamentar por parte dos eleitores; as ilações políticas que se podem tirar são variadas e, se é verdade que existem limitações várias a ter em conta, tal como no trabalho relativo à análise das votações parlamentares parecem emergir padrões que parecem reflectir tendências e agrupamentos que estão presentes no discurso político.
Sugere-se uma leitura comparada da análise feita, exactamente nos mesmos moldes, para os OEs anteriores: se aqui e ali formos fazendo referências ao que mudou e se manteve, mais há por explorar nessa dimensão comparativa.