Skip to content
Snippets Groups Projects
Commit 309cfbfd authored by dha21's avatar dha21
Browse files

top3 adicionado

parent fcc84468
Branches
No related tags found
No related merge requests found
%% Cell type:code id:e13d5b4a-95a3-404c-bf01-7b4b48b4d121 tags: %% Cell type:code id:e13d5b4a-95a3-404c-bf01-7b4b48b4d121 tags:
``` python ``` python
import numpy as np import numpy as np
import pandas as pd import pandas as pd
from tabulate import tabulate from tabulate import tabulate
``` ```
%% Cell type:code id:3ee220b5-c632-415e-8a0e-76e85f31b5f1 tags: %% Cell type:code id:3ee220b5-c632-415e-8a0e-76e85f31b5f1 tags:
``` python ``` python
# Importa CSV, ordena por ano e metrica # Importa CSV, ordena por ano e metrica
df = pd.read_csv('Testes_R/Result_F/F_subsequente.csv', sep=',') df = pd.read_csv('Testes_R/Result_F/F_subsequente.csv', sep=',')
# Coluna contendo a estatistica a ser analisada # Coluna contendo a estatistica a ser analisada
stat_column = 'estatistica_f' stat_column = 'estatistica_f'
# Tira absoluto pro teste F # Tira absoluto pro teste F
df[stat_column] = (df[stat_column] - 1).abs() df[stat_column] = (df[stat_column] - 1).abs()
# Tira absoluto pro teste Cohen # Tira absoluto pro teste Cohen
#df[stat_column] = df[stat_column].abs() #df[stat_column] = df[stat_column].abs()
# Ordena para buscar os mais proximos a 0 # Ordena para buscar os mais proximos a 0
df = df.sort_values(by=['ano_coluna1', stat_column]) df = df.sort_values(by=['ano_coluna1', stat_column])
# Remove coluna ANO_CENSO # Remove coluna ANO_CENSO
df = df[~df['coluna1'].str.contains('ANO_CENSO') & ~df['coluna2'].str.contains('ANO_CENSO')] df = df[~df['coluna1'].str.contains('ANO_CENSO') & ~df['coluna2'].str.contains('ANO_CENSO')]
df.head() df.head()
``` ```
%% Output %% Output
coluna1 ano_coluna1 coluna2 ano_coluna2 \ coluna1 ano_coluna1 coluna2 ano_coluna2 \
40 NUM_SALAS 2007 NUM_SALAS 2008 40 NUM_SALAS 2007 NUM_SALAS 2008
48 NUM_SALAS_UTILIZADAS 2007 NUM_SALAS_UTILIZADAS 2008 48 NUM_SALAS_UTILIZADAS 2007 NUM_SALAS_UTILIZADAS 2008
24 NUM_COMPUTADPR_ALUNO 2007 NUM_COMPUTADPR_ALUNO 2008 24 NUM_COMPUTADPR_ALUNO 2007 NUM_COMPUTADPR_ALUNO 2008
32 NUM_FUNCIONARIOS 2007 NUM_FUNCIONARIOS 2008 32 NUM_FUNCIONARIOS 2007 NUM_FUNCIONARIOS 2008
16 NUM_COMPUTADOR_ADM 2007 NUM_COMPUTADOR_ADM 2008 16 NUM_COMPUTADOR_ADM 2007 NUM_COMPUTADOR_ADM 2008
tamanho_amostra1 estatistica_f p_valor tamanho_amostra1 estatistica_f p_valor
40 191233 0.007688 9.073760e-02 40 191233 0.007688 9.073760e-02
48 189299 0.009017 4.824552e-02 48 189299 0.009017 4.824552e-02
24 44225 0.009145 3.072432e-01 24 44225 0.009145 3.072432e-01
32 187765 0.047947 1.264120e-26 32 187765 0.047947 1.264120e-26
16 74158 0.066157 1.129997e-22 16 74158 0.066157 1.129997e-22
%% Cell type:code id:ae5ebf5b-a2b3-4d87-af13-62fc187b3ecc tags: %% Cell type:code id:ae5ebf5b-a2b3-4d87-af13-62fc187b3ecc tags:
``` python ``` python
anos = df.ano_coluna1.unique() anos = df.ano_coluna1.unique()
threshold = 1 threshold = 1
# Itera sobre todos os anos # Itera sobre todos os anos
for ano in anos: for ano in anos:
# Constroi dataframe do ano # Constroi dataframe do ano
ano_df = df[df.ano_coluna1 == ano] ano_df = df[df.ano_coluna1 == ano]
# Estruturas # Estruturas
base_columns = ano_df.coluna1.unique() # Colunas que ja existiam na base base_columns = ano_df.coluna1.unique() # Colunas que ja existiam na base
new_columns = ano_df.coluna2.unique() # Colunas do próximo ano new_columns = ano_df.coluna2.unique() # Colunas do próximo ano
true_new_columns = np.setdiff1d(new_columns, base_columns) # Colunas que nao existiam na base true_new_columns = np.setdiff1d(new_columns, base_columns) # Colunas que nao existiam na base
base_empty_columns = np.setdiff1d(base_columns, new_columns) # Colunas da base que nao receberam dados base_empty_columns = np.setdiff1d(base_columns, new_columns) # Colunas da base que nao receberam dados
all_columns = np.union1d(base_columns, new_columns) # Todas as colunas possiveis all_columns = np.union1d(base_columns, new_columns) # Todas as colunas possiveis
# Alterar para um dicionario # Alterar para um dicionario
prev_col = [] # Colunas da base para match prev_col = [] # Colunas da base para match
next_col = [] # Colunas do proximo ano para match next_col = [] # Colunas do proximo ano para match
# Itera sobre o dataframe # Itera sobre o dataframe
for index, row in ano_df.iterrows(): for index, row in ano_df.iterrows():
# Ignora colunas ja selecionadas # Ignora colunas ja selecionadas
if row['coluna1'] in prev_col or row['coluna2'] in next_col: if row['coluna1'] in prev_col or row['coluna2'] in next_col:
continue continue
# Testa treshold # Testa treshold
if row[stat_column] > threshold: if row[stat_column] > threshold:
break break
# Adiciona nas listas # Adiciona nas listas
prev_col.append(row['coluna1']) prev_col.append(row['coluna1'])
next_col.append(row['coluna2']) next_col.append(row['coluna2'])
all_match_columns = np.union1d(prev_col, next_col) all_match_columns = np.union1d(prev_col, next_col)
not_match_columns = np.setdiff1d(all_columns, all_match_columns) not_match_columns = np.setdiff1d(all_columns, all_match_columns)
# Calcula resultados ======================== # Calcula resultados ========================
# Match correto de colunas eh um acerto # Match correto de colunas eh um acerto
# Encontrar novas colunas eh um acerto # Encontrar novas colunas eh um acerto
# Colunas da base que nao receberam dados eh um acerto # Colunas da base que nao receberam dados eh um acerto
# Match incorreto eh um erro # Match incorreto eh um erro
# Colunas novas que faziam match com a base eh um erro # Colunas novas que faziam match com a base eh um erro
acertos = 0 acertos = 0
acuracia = 0 acuracia = 0
# Passeia pelos matches # Passeia pelos matches
for i in range(len(prev_col)): for i in range(len(prev_col)):
if prev_col[i] == next_col[i]: if prev_col[i] == next_col[i]:
acertos += 1 acertos += 1
for col in not_match_columns: for col in not_match_columns:
if col in true_new_columns: if col in true_new_columns:
acertos += 1 acertos += 1
if col in base_empty_columns: if col in base_empty_columns:
acertos += 1 acertos += 1
if len(all_columns) == 0: if len(all_columns) == 0:
acuracia = 0 acuracia = 0
else: else:
acuracia = acertos / len(all_columns) acuracia = acertos / len(all_columns)
# Gera saida ================================ # Gera saida ================================
print(f'ANO: {ano}') print(f'ANO: {ano}')
# Imprime matches # Imprime matches
matches = [] matches = []
for item1, item2 in zip(prev_col, next_col): for item1, item2 in zip(prev_col, next_col):
matches.append([item1, item2]) matches.append([item1, item2])
print(tabulate(matches, headers=['BASE', ano+1], tablefmt='grid')) print(tabulate(matches, headers=['BASE', ano+1], tablefmt='grid'))
# Imprime acuracia # Imprime acuracia
print(f'ACURACIA: {acuracia}') print(f'ACURACIA: {acuracia}')
print('\n') print('\n')
# Imprime colunas da base que nao tiveram match # Imprime colunas da base que nao tiveram match
for base_name in base_columns: for base_name in base_columns:
if base_name not in prev_col: if base_name not in prev_col:
print(f'COLUNA SEM NOVOS DADOS: {base_name}') print(f'COLUNA SEM NOVOS DADOS: {base_name}')
print('\n') print('\n')
# Imprime novas colunas que nao houveram match # Imprime novas colunas que nao houveram match
for name in new_columns: for name in new_columns:
if name not in prev_col and name not in next_col: if name not in prev_col and name not in next_col:
print(f'NOVAS COLUNAS: {name}') print(f'NOVAS COLUNAS: {name}')
print('\n') print('\n')
``` ```
%% Output %% Output
ANO: 2007 ANO: 2007
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2008 | | BASE | 2008 |
+======================+======================+ +======================+======================+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADOR | | NUM_COMPUTADOR | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
ANO: 2008 ANO: 2008
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2009 | | BASE | 2009 |
+======================+======================+ +======================+======================+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADOR | | NUM_COMPUTADOR | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
ANO: 2009 ANO: 2009
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2010 | | BASE | 2010 |
+======================+======================+ +======================+======================+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADOR | | NUM_COMPUTADOR | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
ANO: 2010 ANO: 2010
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2011 | | BASE | 2011 |
+======================+======================+ +======================+======================+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADOR | | NUM_COMPUTADOR | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
ANO: 2011 ANO: 2011
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2012 | | BASE | 2012 |
+======================+======================+ +======================+======================+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADOR | | NUM_COMPUTADOR | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
ANO: 2012 ANO: 2012
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2013 | | BASE | 2013 |
+======================+======================+ +======================+======================+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS_UTILIZADAS | NUM_SALAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 0.6666666666666666 ACURACIA: 0.6666666666666666
COLUNA SEM NOVOS DADOS: NUM_COMPUTADOR COLUNA SEM NOVOS DADOS: NUM_COMPUTADOR
NOVAS COLUNAS: NUM_COMPUTADOR NOVAS COLUNAS: NUM_COMPUTADOR
NOVAS COLUNAS: NUM_SOM NOVAS COLUNAS: NUM_SOM
NOVAS COLUNAS: NUM_TV NOVAS COLUNAS: NUM_TV
NOVAS COLUNAS: NUM_DVD NOVAS COLUNAS: NUM_DVD
ANO: 2013 ANO: 2013
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2014 | | BASE | 2014 |
+======================+======================+ +======================+======================+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADOR | | NUM_COMPUTADOR | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SOM | NUM_TV | | NUM_SOM | NUM_TV |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_DVD | NUM_DVD | | NUM_DVD | NUM_DVD |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_TV | NUM_SOM | | NUM_TV | NUM_SOM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 0.7777777777777778 ACURACIA: 0.7777777777777778
ANO: 2014 ANO: 2014
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2015 | | BASE | 2015 |
+======================+======================+ +======================+======================+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADOR | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SOM | NUM_TV | | NUM_SOM | NUM_TV |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_DVD | NUM_DVD | | NUM_DVD | NUM_DVD |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADOR | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_TV | NUM_SOM | | NUM_TV | NUM_SOM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 0.5555555555555556 ACURACIA: 0.5555555555555556
ANO: 2015 ANO: 2015
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2016 | | BASE | 2016 |
+======================+======================+ +======================+======================+
| NUM_SOM | NUM_SOM | | NUM_SOM | NUM_SOM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_DVD | NUM_DVD | | NUM_DVD | NUM_DVD |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_TV | NUM_TV | | NUM_TV | NUM_TV |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADOR | | NUM_COMPUTADOR | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM | | NUM_COMPUTADOR_ADM | NUM_COMPUTADOR_ADM |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
ANO: 2016 ANO: 2016
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2017 | | BASE | 2017 |
+======================+======================+ +======================+======================+
| NUM_TV | NUM_TV | | NUM_TV | NUM_TV |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SOM | NUM_SOM | | NUM_SOM | NUM_SOM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADOR | NUM_COMPUTADOR | | NUM_COMPUTADOR | NUM_COMPUTADOR |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO | | NUM_COMPUTADPR_ALUNO | NUM_COMPUTADPR_ALUNO |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_DVD | NUM_DVD | | NUM_DVD | NUM_DVD |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 0.8888888888888888 ACURACIA: 0.8888888888888888
COLUNA SEM NOVOS DADOS: NUM_COMPUTADOR_ADM COLUNA SEM NOVOS DADOS: NUM_COMPUTADOR_ADM
NOVAS COLUNAS: NUM_COMPUTADOR_ADM NOVAS COLUNAS: NUM_COMPUTADOR_ADM
ANO: 2017 ANO: 2017
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2018 | | BASE | 2018 |
+======================+======================+ +======================+======================+
| NUM_FUNCIONARIOS | NUM_FUNCIONARIOS | | NUM_FUNCIONARIOS | NUM_FUNCIONARIOS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS | NUM_SALAS | | NUM_SALAS | NUM_SALAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
COLUNA SEM NOVOS DADOS: NUM_COMPUTADOR COLUNA SEM NOVOS DADOS: NUM_COMPUTADOR
COLUNA SEM NOVOS DADOS: NUM_SOM COLUNA SEM NOVOS DADOS: NUM_SOM
COLUNA SEM NOVOS DADOS: NUM_COMPUTADOR_ADM COLUNA SEM NOVOS DADOS: NUM_COMPUTADOR_ADM
COLUNA SEM NOVOS DADOS: NUM_TV COLUNA SEM NOVOS DADOS: NUM_TV
COLUNA SEM NOVOS DADOS: NUM_COMPUTADPR_ALUNO COLUNA SEM NOVOS DADOS: NUM_COMPUTADPR_ALUNO
COLUNA SEM NOVOS DADOS: NUM_DVD COLUNA SEM NOVOS DADOS: NUM_DVD
ANO: 2018 ANO: 2018
+-----------+----------------------+ +-----------+----------------------+
| BASE | 2019 | | BASE | 2019 |
+===========+======================+ +===========+======================+
| NUM_SALAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS | NUM_SALAS_UTILIZADAS |
+-----------+----------------------+ +-----------+----------------------+
ACURACIA: 0.6666666666666666 ACURACIA: 0.6666666666666666
COLUNA SEM NOVOS DADOS: NUM_SALAS_UTILIZADAS COLUNA SEM NOVOS DADOS: NUM_SALAS_UTILIZADAS
COLUNA SEM NOVOS DADOS: NUM_FUNCIONARIOS COLUNA SEM NOVOS DADOS: NUM_FUNCIONARIOS
NOVAS COLUNAS: NUM_SOM NOVAS COLUNAS: NUM_SOM
NOVAS COLUNAS: NUM_TV NOVAS COLUNAS: NUM_TV
NOVAS COLUNAS: NUM_DVD NOVAS COLUNAS: NUM_DVD
ANO: 2019 ANO: 2019
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2020 | | BASE | 2020 |
+======================+======================+ +======================+======================+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SOM | NUM_SOM | | NUM_SOM | NUM_SOM |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_TV | NUM_TV | | NUM_TV | NUM_TV |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_DVD | NUM_DVD | | NUM_DVD | NUM_DVD |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
ANO: 2020 ANO: 2020
+----------------------+----------------------+ +----------------------+----------------------+
| BASE | 2021 | | BASE | 2021 |
+======================+======================+ +======================+======================+
| NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS | | NUM_SALAS_UTILIZADAS | NUM_SALAS_UTILIZADAS |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_DVD | NUM_DVD | | NUM_DVD | NUM_DVD |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_TV | NUM_TV | | NUM_TV | NUM_TV |
+----------------------+----------------------+ +----------------------+----------------------+
| NUM_SOM | NUM_SOM | | NUM_SOM | NUM_SOM |
+----------------------+----------------------+ +----------------------+----------------------+
ACURACIA: 1.0 ACURACIA: 1.0
%% Cell type:code id:81aa6d2b-582d-4982-ae36-35eb7ea3a004 tags:
``` python
anos = df.ano_coluna1.unique()
threshold = 0.2
# Itera sobre todos os anos
for ano in anos:
# Constroi dataframe do ano
ano_df = df[(df.ano_coluna1 == ano) & (df.estatistica_f < threshold)]
# Estruturas
base_columns = ano_df.coluna1.unique() # Colunas que ja existiam na base
new_columns = ano_df.coluna2.unique() # Colunas do próximo ano
true_new_columns = np.setdiff1d(new_columns, base_columns) # Colunas que nao existiam na base
base_empty_columns = np.setdiff1d(base_columns, new_columns) # Colunas da base que nao receberam dados
all_columns = np.union1d(base_columns, new_columns) # Todas as colunas possiveis
resultados = [] # Resultados dos matches
# Alterar para um dicionario
prev_col = [] # Colunas da base para match
next_col = [] # Colunas do proximo ano para match
# Itera sobre o dataframe
for col in base_columns:
top3 = ano_df[ano_df.coluna1 == col]
resultados.append(top3.iloc[:3,:].values)
# Encontra colunas prev que deram match
all_match_columns = []
not_match_columns = []
for res in resultados:
for i in res:
next_col = np.union1d(next_col, i[2])
prev_col = np.union1d(prev_col, i[0])
all_match_columns = np.union1d(next_col, prev_col)
not_match_columns = np.setdiff1d(all_columns, all_match_columns)
found_new_columns = np.setdiff1d(new_columns, next_columns)
# Calcula acurácia
acuracia = 0
acertos = 0
for res in resultados:
for i in res:
if i[0] == i[2]:
acertos += 1
break
acuracia = acertos / len(base_columns)
# Imprime resultados
print(ano)
for res in resultados:
print(f'{res[0][0]}:')
for i in res:
print(f' {i[2]}')
print(f'NOVAS COLUNAS: {found_new_columns}')
# print(f'{acuracia}\n')
```
%% Output
2007
NUM_SALAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_COMPUTADOR_ADM:
NUM_COMPUTADOR_ADM
NUM_COMPUTADOR:
NUM_COMPUTADOR
NOVAS COLUNAS: []
2008
NUM_SALAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_COMPUTADOR:
NUM_COMPUTADOR
NOVAS COLUNAS: []
2009
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_SALAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_COMPUTADOR_ADM:
NUM_COMPUTADOR_ADM
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_COMPUTADOR:
NUM_COMPUTADOR
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NOVAS COLUNAS: []
2010
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_SALAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_COMPUTADOR_ADM:
NUM_COMPUTADOR_ADM
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NUM_COMPUTADOR:
NUM_COMPUTADOR
NOVAS COLUNAS: []
2011
NUM_SALAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_COMPUTADOR:
NUM_COMPUTADOR
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NUM_COMPUTADOR_ADM:
NUM_COMPUTADOR_ADM
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NOVAS COLUNAS: []
2012
NUM_COMPUTADOR_ADM:
NUM_COMPUTADOR_ADM
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_SALAS_UTILIZADAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_SALAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NOVAS COLUNAS: []
2013
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_SALAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_COMPUTADOR:
NUM_COMPUTADOR
NUM_SOM:
NUM_TV
NUM_SOM
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NUM_DVD:
NUM_DVD
NUM_TV:
NUM_TV
NUM_SOM
NOVAS COLUNAS: ['NUM_DVD' 'NUM_SOM' 'NUM_TV']
2014
NUM_SALAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_COMPUTADOR:
NUM_COMPUTADPR_ALUNO
NUM_SOM:
NUM_TV
NOVAS COLUNAS: ['NUM_TV']
2015
NUM_SOM:
NUM_SOM
NUM_SALAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_DVD:
NUM_DVD
NUM_SALAS_UTILIZADAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_TV:
NUM_TV
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NUM_COMPUTADOR:
NUM_COMPUTADOR
NOVAS COLUNAS: ['NUM_DVD' 'NUM_SOM' 'NUM_TV']
2016
NUM_TV:
NUM_TV
NUM_SOM:
NUM_SOM
NUM_COMPUTADOR_ADM
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_SALAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NUM_COMPUTADOR:
NUM_COMPUTADOR
NUM_COMPUTADPR_ALUNO:
NUM_COMPUTADPR_ALUNO
NOVAS COLUNAS: ['NUM_SOM' 'NUM_TV']
2017
NUM_FUNCIONARIOS:
NUM_FUNCIONARIOS
NUM_SALAS:
NUM_SALAS
NUM_SALAS_UTILIZADAS
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS
NOVAS COLUNAS: []
2018
NUM_SALAS:
NUM_SALAS_UTILIZADAS
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NOVAS COLUNAS: []
2019
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_SOM:
NUM_SOM
NUM_TV:
NUM_TV
NUM_DVD:
NUM_DVD
NOVAS COLUNAS: ['NUM_DVD' 'NUM_SOM' 'NUM_TV']
2020
NUM_SALAS_UTILIZADAS:
NUM_SALAS_UTILIZADAS
NUM_DVD:
NUM_DVD
NUM_TV:
NUM_TV
NUM_SOM:
NUM_SOM
NOVAS COLUNAS: ['NUM_DVD' 'NUM_SOM' 'NUM_TV']
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment