Análise dos item

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import random


import ipywidgets as widgets
from ipywidgets import interact, interactive, fixed, interact_manual

%load_ext autoreload
%autoreload 2

def make_clickable(val):
    return f'<a href="{val}">link</a>'
import sys

sys.path.append('/home/ewout/enem_atp/')
from util import load_sample,load_acertos,item_info_inep,item_stats,item_url
sns.set_theme(
    context='notebook',
    style='darkgrid',
    palette='deep',
    font='sans-serif',
    font_scale=1.3,
    color_codes=True,
    rc=None,
)
pd.options.display.float_format = '{:,.2f}'.format

Análise dos item#

Aqui analisamos e apresentamos os parâmetros dos itens do ENEM, como foram divulgados pelo INEP (a partir de 2022) (veja … ref)

# rodar primeiro as células da seção Calcular estatísticas TCT dos itens em 00-PrepareData

def istats(ano,area,sort_by='total.r',return_styled=False):
    istats = pd.read_csv(f'../data/istats-{ano}-{area}.csv')
    istats = istats.drop_duplicates('item')
    istats = istats.rename(columns={'CO_POSICAO':'pos','SG_AREA':'area','TX_GABARITO':'gab',
                                   'CO_HABILIDADE':'habilidade','IN_ITEM_ABAN':'aban',
                                   'TX_MOTIVO_ABAN':'motivo','NU_PARAM_A':'a','NU_PARAM_B':'b','NU_PARAM_C':'c',
                                   'TX_COR':'cor','CO_PROVA':'prova','TP_LINGUA':'ling',
                                   'IN_ITEM_ADAPTADO':'adaptado','TP_VERSAO_DIGITAL':'digital'})
    istats = istats.sort_values(sort_by)
    if return_styled:
        return istats.style.format({'url':make_clickable,
                                'mean':'{:.2f}','sd':'{:.2f}','total.r':'{:.3f}',
                               'habilidade':'{:.0f}'})
    return istats
# istats(2009,'MT')
def item_info(item):
    return item_info_inep(item)
areawidg = widgets.Dropdown(
    options=['CN','CH','MT'],
    value='CN',
    description='Area:',
)
anowidg = widgets.Dropdown(
    options=range(2009,2023),
    value=2022,
    description='Ano:',
)
cols = istats(2009,'MT').columns
sbw = widgets.Dropdown(
    options=cols,
    value='total.r',
    description='Sort by:',
)

interact(istats,ano=anowidg,area=areawidg,sort_by=sbw,return_styled=True)
<function __main__.istats(ano, area, sort_by='total.r', return_styled=False)>