Análise descritiva de dados

Autor

Dados retirado de https://dadosabertos.camara.leg.br/swagger/api.html?tab=staticfile

import pandas as pd
dados = pd.read_csv(
    "dados/Ano-2025.csv", sep=";", encoding="utf-8", decimal=".", low_memory=False
)
display(dados.head(4))
txNomeParlamentar cpf ideCadastro nuCarteiraParlamentar nuLegislatura sgUF sgPartido codLegislatura numSubCota txtDescricao ... numParcela txtPassageiro txtTrecho numLote numRessarcimento datPagamentoRestituicao vlrRestituicao nuDeputadoId ideDocumento urlDocumento
0 LID.GOV-CD NaN NaN NaN 2023 NaN NaN 57 1 MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE ... ... 0 NaN NaN 2115566 NaN NaN NaN 2812 7877589 https://www.camara.leg.br/cota-parlamentar/doc...
1 LID.GOV-CD NaN NaN NaN 2023 NaN NaN 57 1 MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE ... ... 0 NaN NaN 2123760 NaN NaN NaN 2812 7892756 https://www.camara.leg.br/cota-parlamentar/doc...
2 LID.GOV-CD NaN NaN NaN 2023 NaN NaN 57 1 MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE ... ... 0 NaN NaN 2131750 NaN NaN NaN 2812 7907982 https://www.camara.leg.br/cota-parlamentar/doc...
3 LID.GOV-CD NaN NaN NaN 2023 NaN NaN 57 1 MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE ... ... 0 NaN NaN 2106570 NaN NaN NaN 2812 7862329 https://www.camara.leg.br/cota-parlamentar/not...

4 rows × 32 columns

dados = dados[dados['sgUF'] == 'PI']
display(dados.dtypes)
txNomeParlamentar             object
cpf                          float64
ideCadastro                  float64
nuCarteiraParlamentar        float64
nuLegislatura                  int64
sgUF                          object
sgPartido                     object
codLegislatura                 int64
numSubCota                     int64
txtDescricao                  object
numEspecificacaoSubCota        int64
txtDescricaoEspecificacao     object
txtFornecedor                 object
txtCNPJCPF                    object
txtNumero                     object
indTipoDocumento               int64
datEmissao                    object
vlrDocumento                 float64
vlrGlosa                     float64
vlrLiquido                   float64
numMes                         int64
numAno                         int64
numParcela                     int64
txtPassageiro                 object
txtTrecho                     object
numLote                        int64
numRessarcimento             float64
datPagamentoRestituicao       object
vlrRestituicao               float64
nuDeputadoId                   int64
ideDocumento                   int64
urlDocumento                  object
dtype: object
#!pip install pyjanitor
import janitor
df_bronze=dados.clean_names()
display(df_bronze.head(4))
txnomeparlamentar cpf idecadastro nucarteiraparlamentar nulegislatura sguf sgpartido codlegislatura numsubcota txtdescricao ... numparcela txtpassageiro txttrecho numlote numressarcimento datpagamentorestituicao vlrrestituicao nudeputadoid idedocumento urldocumento
478 Julio Arcoverde 7.730977e+10 66385.0 118.0 2023 PI PP 57 1 MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE ... ... 0 NaN NaN 2107978 NaN NaN NaN 3692 7864666 https://www.camara.leg.br/cota-parlamentar/doc...
479 Julio Arcoverde 7.730977e+10 66385.0 118.0 2023 PI PP 57 1 MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE ... ... 0 NaN NaN 2125741 NaN NaN NaN 3692 7896334 https://www.camara.leg.br/cota-parlamentar/doc...
480 Julio Arcoverde 7.730977e+10 66385.0 118.0 2023 PI PP 57 1 MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE ... ... 0 NaN NaN 2115942 NaN NaN NaN 3692 7878276 https://www.camara.leg.br/cota-parlamentar/doc...
481 Julio Arcoverde 7.730977e+10 66385.0 118.0 2023 PI PP 57 1 MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE ... ... 0 NaN NaN 2135533 NaN NaN NaN 3692 7914836 https://www.camara.leg.br/cota-parlamentar/doc...

4 rows × 32 columns

# Selecionar só as colunas de texto
colunas_chr = df_bronze.select_dtypes(include=['object', 'string']).columns.tolist()
colunas_numerica = df_bronze.select_dtypes(include=['int64', 'float64']).columns.tolist()
print(colunas_chr); print(colunas_numerica)
['txnomeparlamentar', 'sguf', 'sgpartido', 'txtdescricao', 'txtdescricaoespecificacao', 'txtfornecedor', 'txtcnpjcpf', 'txtnumero', 'datemissao', 'txtpassageiro', 'txttrecho', 'datpagamentorestituicao', 'urldocumento']
['cpf', 'idecadastro', 'nucarteiraparlamentar', 'nulegislatura', 'codlegislatura', 'numsubcota', 'numespecificacaosubcota', 'indtipodocumento', 'vlrdocumento', 'vlrglosa', 'vlrliquido', 'nummes', 'numano', 'numparcela', 'numlote', 'numressarcimento', 'vlrrestituicao', 'nudeputadoid', 'idedocumento']
# Frequência simples (equivalente a table(x) no R)
tabela_sgpartido = df_bronze['sgpartido'].value_counts()
display(tabela_sgpartido)
sgpartido
PT              451
PP              204
PSD             201
REPUBLICANOS     80
Name: count, dtype: int64
tabela_descricao = df_bronze['txtdescricao'].value_counts()
display(tabela_descricao)
txtdescricao
PASSAGEM AÉREA - SIGEPA                                      320
COMBUSTÍVEIS E LUBRIFICANTES.                                237
DIVULGAÇÃO DA ATIVIDADE PARLAMENTAR.                         113
MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR     96
LOCAÇÃO OU FRETAMENTO DE VEÍCULOS AUTOMOTORES                 54
TELEFONIA                                                     51
FORNECIMENTO DE ALIMENTAÇÃO DO PARLAMENTAR                    32
SERVIÇO DE SEGURANÇA PRESTADO POR EMPRESA ESPECIALIZADA.      15
SERVIÇO DE TÁXI, PEDÁGIO E ESTACIONAMENTO                      8
HOSPEDAGEM ,EXCETO DO PARLAMENTAR NO DISTRITO FEDERAL.         7
LOCAÇÃO OU FRETAMENTO DE AERONAVES                             2
PASSAGEM AÉREA - REEMBOLSO                                     1
Name: count, dtype: int64
tabela_txtfornecedor = df_bronze['txtfornecedor'].value_counts()
display(tabela_txtfornecedor)
txtfornecedor
TAM                                                       314
CACIQUE PETROLEO LTDA                                      32
POSTO SAO BENEDITO PETROLEO LTDA                           22
TRANSSERVICE PETROLEO LTDA                                 15
AUTO POSTO 302 SUL LTDA                                    14
                                                         ... 
SMARTPRINT LTDA                                             1
MH BRASILIA ADMINISTRADORA DE EMPREENDIMENTOS LTDA          1
EDVALDO FRANCISCO DE OLIVEIRA 49191160120                   1
REDE JHJ DE RADIODIFUSÃO LTDA                               1
TABITA FERREIRA MARINHO PRODUÇÕES E COMUNICAÇÃO EIRELI      1
Name: count, Length: 185, dtype: int64
# Calcular as medidas descritivas separadamente
media = df_bronze['vlrliquido'].mean()
mediana = df_bronze['vlrliquido'].median()
variancia = df_bronze['vlrliquido'].var()
desvio_padrao = df_bronze['vlrliquido'].std()
coeficiente_variacao = desvio_padrao / media


# Exibir resultados
print("Média:")
print(media)
print("\nMediana:")
print(mediana)
print("\nVariância:")
print(variancia)
print("\nDesvio padrão:")
print(desvio_padrao)
print("\nCoeficiente de Variação:")



print(coeficiente_variacao)
Média:
1853.603076923077

Mediana:
667.92

Variância:
10820623.380604856

Desvio padrão:
3289.4715959565383

Coeficiente de Variação:
1.7746364563749852
q2 = df_bronze['vlrliquido'].quantile(0.50);
print(q2)
667.92
df_bronze.describe()
cpf idecadastro nucarteiraparlamentar nulegislatura codlegislatura numsubcota numespecificacaosubcota indtipodocumento vlrdocumento vlrglosa vlrliquido nummes numano numparcela numlote numressarcimento vlrrestituicao nudeputadoid idedocumento
count 9.360000e+02 936.000000 936.000000 936.0 936.0 936.000000 936.000000 936.000000 936.000000 936.000000 936.000000 936.000000 936.0 936.0 9.360000e+02 328.0 0.0 936.000000 9.360000e+02
mean 4.217872e+10 174072.123932 204.438034 2023.0 57.0 352.114316 0.264957 1.294872 1862.676517 9.073440 1853.603077 2.644231 2025.0 0.0 1.377385e+06 0.0 NaN 3317.371795 5.230539e+06
std 2.985106e+10 56351.046445 169.271375 0.0 0.0 466.658121 0.483183 1.788440 3290.839823 125.534929 3289.471596 1.209821 0.0 0.0 1.012245e+06 0.0 NaN 597.304720 3.618818e+06
min 1.102125e+09 66385.000000 109.000000 2023.0 57.0 1.000000 0.000000 0.000000 -2928.400000 0.000000 -2928.400000 1.000000 2025.0 0.0 0.000000e+00 0.0 NaN 1097.000000 0.000000e+00
25% 1.389182e+10 123086.000000 111.000000 2023.0 57.0 3.000000 0.000000 0.000000 200.000000 0.000000 185.135000 2.000000 2025.0 0.0 0.000000e+00 0.0 NaN 3121.000000 3.199118e+05
50% 4.286637e+10 188097.000000 114.000000 2023.0 57.0 10.000000 0.000000 0.000000 669.770000 0.000000 667.920000 3.000000 2025.0 0.0 2.110828e+06 0.0 NaN 3560.000000 7.869479e+06
75% 7.456870e+10 220697.000000 118.000000 2023.0 57.0 998.000000 1.000000 4.000000 1715.290000 0.000000 1676.985000 4.000000 2025.0 0.0 2.124947e+06 0.0 NaN 3670.000000 7.894886e+06
max 7.730977e+10 220700.000000 518.000000 2023.0 57.0 998.000000 4.000000 4.000000 36300.000000 3600.000000 36300.000000 5.000000 2025.0 0.0 2.137115e+06 0.0 NaN 3692.000000 7.917843e+06
from scipy.stats import skew, kurtosis
assimetria = df_bronze['vlrliquido'].skew()
curtose_ = df_bronze['vlrliquido'].kurtosis()
print("\nAssimetria:")
print(assimetria)
print("\nCurtose:")
print(curtose_)

Assimetria:
3.406585380619545

Curtose:
18.595100386926408

Análise Bivariada

df_bronze.columns
Index(['txnomeparlamentar', 'cpf', 'idecadastro', 'nucarteiraparlamentar',
       'nulegislatura', 'sguf', 'sgpartido', 'codlegislatura', 'numsubcota',
       'txtdescricao', 'numespecificacaosubcota', 'txtdescricaoespecificacao',
       'txtfornecedor', 'txtcnpjcpf', 'txtnumero', 'indtipodocumento',
       'datemissao', 'vlrdocumento', 'vlrglosa', 'vlrliquido', 'nummes',
       'numano', 'numparcela', 'txtpassageiro', 'txttrecho', 'numlote',
       'numressarcimento', 'datpagamentorestituicao', 'vlrrestituicao',
       'nudeputadoid', 'idedocumento', 'urldocumento'],
      dtype='object')
contingency_table = pd.crosstab(df_bronze['sgpartido'], df_bronze['txtdescricao'])
display(contingency_table)
txtdescricao COMBUSTÍVEIS E LUBRIFICANTES. DIVULGAÇÃO DA ATIVIDADE PARLAMENTAR. FORNECIMENTO DE ALIMENTAÇÃO DO PARLAMENTAR HOSPEDAGEM ,EXCETO DO PARLAMENTAR NO DISTRITO FEDERAL. LOCAÇÃO OU FRETAMENTO DE AERONAVES LOCAÇÃO OU FRETAMENTO DE VEÍCULOS AUTOMOTORES MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR PASSAGEM AÉREA - REEMBOLSO PASSAGEM AÉREA - SIGEPA SERVIÇO DE SEGURANÇA PRESTADO POR EMPRESA ESPECIALIZADA. SERVIÇO DE TÁXI, PEDÁGIO E ESTACIONAMENTO TELEFONIA
sgpartido
PP 19 15 0 0 0 8 22 0 121 7 0 12
PSD 53 33 0 4 0 18 13 1 71 0 0 8
PT 150 51 32 2 2 28 55 0 92 8 0 31
REPUBLICANOS 15 14 0 1 0 0 6 0 36 0 8 0
# prompt: txtdescricao pelo valor liquido
tabela_cruzada_descricao_vlrliquido = df_bronze.groupby('sgpartido')['vlrliquido'].sum().sort_values(ascending=False)
display(tabela_cruzada_descricao_vlrliquido)
sgpartido
PT              713317.25
PSD             532028.51
PP              409071.32
REPUBLICANOS     80555.40
Name: vlrliquido, dtype: float64
# prompt: txtdescricao pelo valor liquido
tabela_cruzada_descricao_vlrliquido = df_bronze.groupby('txtdescricao')['vlrliquido'].sum().sort_values(ascending=False)
display(tabela_cruzada_descricao_vlrliquido)
txtdescricao
DIVULGAÇÃO DA ATIVIDADE PARLAMENTAR.                         498967.03
LOCAÇÃO OU FRETAMENTO DE VEÍCULOS AUTOMOTORES                421378.00
PASSAGEM AÉREA - SIGEPA                                      270089.03
COMBUSTÍVEIS E LUBRIFICANTES.                                179362.21
MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR    155701.00
SERVIÇO DE SEGURANÇA PRESTADO POR EMPRESA ESPECIALIZADA.     129899.88
LOCAÇÃO OU FRETAMENTO DE AERONAVES                            58300.00
TELEFONIA                                                     12436.93
HOSPEDAGEM ,EXCETO DO PARLAMENTAR NO DISTRITO FEDERAL.         3992.00
PASSAGEM AÉREA - REEMBOLSO                                     2966.85
FORNECIMENTO DE ALIMENTAÇÃO DO PARLAMENTAR                     1611.27
SERVIÇO DE TÁXI, PEDÁGIO E ESTACIONAMENTO                       268.28
Name: vlrliquido, dtype: float64
df_bronze['vlrliquido'].var()
np.float64(10820623.380604856)
df_bronze['vlrdocumento'].var()
np.float64(10829626.740104863)
df_bronze['vlrglosa'].var()
np.float64(15759.018374890535)
pd.set_option('display.float_format', '{:.4f}'.format)
matriz_cov = df_bronze[['vlrliquido','vlrdocumento','vlrglosa']].cov()
display(matriz_cov)
vlrliquido vlrdocumento vlrglosa
vlrliquido 10820623.3806 10817245.5512 -3377.8294
vlrdocumento 10817245.5512 10829626.7401 12381.1889
vlrglosa -3377.8294 12381.1889 15759.0184
matriz_cor = df_bronze[['vlrliquido','vlrdocumento','vlrglosa']] .corr()
display(matriz_cor)
vlrliquido vlrdocumento vlrglosa
vlrliquido 1.0000 0.9993 -0.0082
vlrdocumento 0.9993 1.0000 0.0300
vlrglosa -0.0082 0.0300 1.0000
from scipy.stats import pearsonr, spearmanr
# Calcula a correlação de Pearson entre as variáveis
correlation_vlrliquido_vlrdocumento, _ = pearsonr(df_bronze['vlrliquido'], df_bronze['vlrdocumento'])
correlation_vlrliquido_vlrglosa, _ = pearsonr(df_bronze['vlrliquido'], df_bronze['vlrglosa'])
correlation_vlrdocumento_vlrglosa, _ = pearsonr(df_bronze['vlrdocumento'], df_bronze['vlrglosa'])

print(f"Correlação de Pearson entre vlrliquido e vlrdocumento: {correlation_vlrliquido_vlrdocumento}")
print(f"Correlação de Pearson entre vlrliquido e vlrglosa: {correlation_vlrliquido_vlrglosa}")
print(f"Correlação de Pearson entre vlrdocumento e vlrglosa: {correlation_vlrdocumento_vlrglosa}")
Correlação de Pearson entre vlrliquido e vlrdocumento: 0.999272195581829
Correlação de Pearson entre vlrliquido e vlrglosa: -0.008179881167973923
Correlação de Pearson entre vlrdocumento e vlrglosa: 0.029970295563040053
De volta ao topo