Ejemplo n.º 1
0
def moda1():
    """Verifica qual os números que mais se repete."""
    #https://pt.stackoverflow.com/questions/216413/identificar-elementos-repetidos-em-lista-com-python
    global modo_agrupados

    terminal.clear_()
    n = 1
    m = []

    if modo_agrupados:
        #Rastreia o número mais repetido
        for x in process.list_fi:
            if x > n:
                n = x
    else:
        #Rastreia o número mais repetido
        for x in process.list_xi:
            if process.list_xi.count(x) > n:
                n = process.list_xi.count(x)

        if n == 1:
            #Corrigi um bug quando não há modas em dados brutos
            print(f"\n\t {m} -- {process.modal[len(m)]}")
            return

    # Define o objeto que armazenará os índices de cada elemento:
    keys = defaultdict(list)

    if modo_agrupados:
        # Percorre todos os elementos da lista:
        for key, value in enumerate(process.list_fi):

            # Adiciona o índice do valor na lista de índices:
            keys[value].append(key)
    else:
        # Percorre todos os elementos da lista:
        for key, value in enumerate(process.list_xi):
            # Adiciona o índice do valor na lista de índices:
            keys[value].append(key)

    num = 0

    if modo_agrupados:
        # Extrai os valores que mais se repete
        for value in keys:
            if value >= num:
                num = value
                ind = keys[value]
        return ind, num

    else:
        # Extrai os valores que mais se repete
        for value in keys:
            if len(keys[value]) >= n:
                m.append(value)

    if modo_agrupados:
        pass
    else:
        print(f"\n\t {m} -- {process.modal[len(m)]}")
Ejemplo n.º 2
0
def mediana1():
    """ Calcula a mediana de uma lista de dados brutos"""
    #Recebe a lista em ordem crescente
    terminal.clear_()
    list_ = statistic.rol_raw_data(process.list_xi)
    print(terminal.terminal_size(f" ROL: {list_} ", "━"))

    quantidade = len(process.list_xi)

    if quantidade % 2 == 0:
        #Lista Par
        n = (quantidade // 2) - 1
        mediana = truncate((list_[n] + list_[-(n + 1)]) / 2, process.decimal)
        print(
            f"\nLista Par:↴\n\tMediana é ({list_[n]} + {list_[-(n+1)]})/2 = {round(mediana, process.decimal)}"
        )
    else:
        #Lista Impar
        n = (quantidade - 1) // 2
        mediana = list_[n]
        print(f"\nLista Ímpar:↴\n\tMediana é {mediana}")
Ejemplo n.º 3
0
def dados_agrupados_while():
    """ While dos dados agrupados. """
    global modo_2
    global commands2_agr
    global modo_agrupados

    modo_agrupados = True
    process.modo_agrupados = True

    #Ajuda alocalizar a classe modal e já antecipa os dados
    localizar_moda()

    while 1:
        #Calcula a média aritmética
        arithmetic_mean(process.list_fi_xi)
        process.total_amplitude = statistic.total_amplitude2(
            process.initial, process.amplitude, process.quant_fi)
        process.start(modo_agrupados)
        terminal.clear_()

        #Escopo do menu Dados agrupados
        print(terminal.terminal_size(modo_2, "="))
        print(terminal.terminal_size(f" Amostra: {process.sample} ", "-"))
        print(
            terminal.terminal_size(f" População: {process.populational} ",
                                   "-"))
        print(terminal.terminal_size(f"fi:{process.list_fi}", " "))
        print(terminal.terminal_size(f"xi:{process.list_xi}", " "))
        print("\n")

        for command in commands2_agr:
            print(command)

        try:
            res2 = input("Opção: ")
        except:
            pass

        if res2 == "1":
            #Amplitude total - Dados Agrupados
            print(
                f"\n\t Amplitude Total ({statistic.xmax} - {statistic.xmin}): {process.total_amplitude}\n"
            )

        elif res2 == "2":
            #Desvio médio simples - Dados Agrupados
            average_mean_deviation()

        elif res2 == "3":
            standard_deviation2()

        elif res2 == "4":
            #Variância
            variance()

        elif res2 == "5":
            #Média aritmetica
            copy = process.list_config
            process.list_config = [False, False, False, True, True]
            escopo = ["i", "Dados", "fi"]
            process.gerar_matriz_table(escopo, True, 4)
            print(
                f"\n\tMédia aritmética: ({process.sum_fi_xi}/{process.sum_fi}) = {truncate(process.x1, process.decimal)}\n"
            )
            process.list_config = copy
        elif res2 == "5.1":
            moda2()

        elif res2 == "5.2":
            mediana2()

        elif res2 == "var":
            mod.print_dada()

        elif res2 == "6":
            #Configurações
            config()
            continue

        elif res2 == "7":
            #Visualizar tabela Dados agrupados
            terminal.clear_()
            print("\n")
            escopo = ["i", "Dados", "fi"]
            process.gerar_matriz_table(escopo, True, 4)

        elif res2 == "8":
            #exit do submenu dos dados agrupados
            break
        else:
            continue
        input("...")
Ejemplo n.º 4
0
def dados_brutos_while():
    """ While dos dados brutos. """
    global modo_1
    global commands2
    global modo_agrupados

    modo_agrupados = False
    process.modo_agrupados = False
    process.list_fi = []

    while 1:

        # Calcula a média aritmética
        arithmetic_mean(process.list_xi)
        process.total_amplitude = statistic.total_amplitude1(process.list_xi)
        process.start(modo_agrupados)
        terminal.clear_()

        print(terminal.terminal_size(modo_1, "="))
        print(terminal.terminal_size(f" Amostra: {process.sample} ", "-"))
        print(
            terminal.terminal_size(f" População: {process.populational} ",
                                   "-"))
        print(terminal.terminal_size(f"xi:{process.list_xi}", " "))
        if len(process.list_fi) == len(process.list_xi):
            terminal.print_color(
                terminal.terminal_size(f"fi:{process.list_fi}", " "), "yellow")
        print("\n")

        for indice, command in enumerate(commands2):
            if len(process.list_fi) > 0 and indice in command_no_authorized:
                terminal.print_color(command, "yellow")
            else:
                if not indice in command_no_authorized:
                    print(command)

        try:
            res2 = input("Opção: ")
        except:
            pass

        if res2 == "1":
            #Amplitude total
            print(
                f"\n\t Amplitude Total ({statistic.xmax} - {statistic.xmin}): {process.total_amplitude}\n"
            )

        elif res2 == "2":
            # Desvio médio simples
            average_mean_deviation()

        elif res2 == "3":
            # Desvio Padrão
            standard_deviation()

        elif res2 == "4":
            #Variância
            variance()

        elif res2 == "5":
            print(
                f"\n\tMédia aritmética: ({process.sum_xi}/{len(process.list_xi)}) = {truncate(process.x1, process.decimal)}\n"
            )

        elif res2 == "5.1" and len(process.list_fi) == len(process.list_xi):
            weighted_average()

        elif res2 == "6":
            moda1()

        elif res2 == "6.1":
            mediana1()

        elif res2 == "6.2":
            pass

        elif res2 == "var":
            mod.print_dada()

        elif res2 == "6.3":
            adc_fi()
            if len(process.list_fi) == len(process.list_xi):
                continue

        elif res2 == "7":
            #Configurações
            config()
            continue

        elif res2 == "8":
            #Sair
            break
        else:
            continue

        input("...")
Ejemplo n.º 5
0
def data_entry(raw_data):
    """ Onde colhe os dados Dados brutos e Agrupados."""

    #Para dados brutos
    if raw_data == True:
        process.list_fi_xi = []
        print("\nExemplo de Entrada:\n\txi: ", end="")
        terminal.print_color("14,15,19,20,20,21,22\n", "red")

        string_xi = str(input("xi: ")).replace(" ", "")
        process.list_xi = func2.dismemberment(string_xi)
        process.quant_xi = len(process.list_xi)

        if len(process.list_xi) == 0:
            return

        else:
            terminal.clear_()
            print(f"xi = {process.list_xi}")
            input("...")

# --------#### Dados Agrupados #####--------------------------------------------------------------------

# Pede os dados e faz o pré- processamento das variáveis necessarias para funções em seguida
    else:
        #Demostração de entrada
        print("\nExemplo de Entradas:")
        print("\n\tfi:", end=" ")
        terminal.print_color("18,31,15,10,7,5,4", "red")
        print("\n\txi:\n\t  Xmin da 1° Classe:", end=" ")
        terminal.print_color("500", "red")
        print("\n\t  Amplitude da 1° classe:", end=" ")
        terminal.print_color("200", "red")
        print("\n")

        string_fi = str(input("fi: ")).replace(" ", "")
        try:

            process.initial = float(input("Xmin da 1° Classe: "))
            process.amplitude = float(input("Amplitude da classe: "))

            #Recebe a lista fi desmembrada
            process.list_fi = func2.dismemberment(string_fi)

            process.quant_fi = len(process.list_fi)

            #Calcula o xi com base nos dados de entrada e return uma lista
            process.list_xi = new_xi(process.initial, process.amplitude,
                                     process.quant_fi)
            process.list_xi = statistic.tr(process.list_xi)

            #Calcula a quantidade de classes com base na process.list_xi
            process.quant_xi = len(process.list_xi)
            process.list_fi_xi = []

            #Cria a lista nova xi.fi para média aritmetica dados agrupados
            for x in range(0, len(process.list_fi)):
                process.list_fi_xi.append(
                    Decimal(f"{process.list_xi[x]}") *
                    Decimal(f"{process.list_fi[x]}"))  #xi.fi
            #Pegando a soma das listas
            process.sum_xi = func2.sum_list(process.list_xi)
            process.sum_fi = func2.sum_list(process.list_fi)
            process.sum_fi_xi = func2.sum_list(process.list_fi_xi)

        except:
            pass

        if len(process.list_xi) == 0 or process.list_fi == 0 or len(
                process.list_xi) != len(process.list_fi):
            return

        else:
            #Gera a tabela de frequência
            terminal.clear_()
            print("\n")
            escopo = ["i", "  Dados", "fi", "xi"]
            process.gerar_matriz_table(escopo, True, 4)
            input("...")
Ejemplo n.º 6
0
def config():
    """Menu de configurações."""
    global commands3
    global modo_agrupados

    while 1:
        terminal.clear_()

        #Tabela de configuração
        print("\n")
        escopo = ["Configurações", " Status"]
        process.gerar_matriz_table(escopo, None, 5)
        print("\n")
        for i, command in enumerate(commands3):
            if modo_agrupados == True:
                print(command)
            else:
                if i < 3 or len(commands3) - 1 == i:
                    print(command)

        resposta = str(input("Opção: "))

        if resposta == "1":
            casa_decimal()

        elif resposta == "2":
            if process.sample:
                if process.populational == False:
                    process.populational = True
                process.sample = False
            else:
                process.sample = True

        elif resposta == "3":
            if process.populational:
                if process.sample == False:
                    process.sample = True
                process.populational = False
            else:
                process.populational = True

        elif resposta == "4":
            if process.list_config[0] == False:
                process.list_config[0] = True
            else:
                process.list_config[0] = False

        elif resposta == "5":
            if process.list_config[1] == False:
                process.list_config[1] = True
            else:
                process.list_config[1] = False

        elif resposta == "6":
            if process.list_config[2] == False:
                process.list_config[2] = True
            else:
                process.list_config[2] = False

        elif resposta == "7":
            if process.list_config[3] == False:
                process.list_config[3] = True
            else:
                process.list_config[3] = False

        elif resposta == "8":
            break
        else:
            pass
Ejemplo n.º 7
0
            process.gerar_matriz_table(escopo, True, 4)

        elif res2 == "8":
            #exit do submenu dos dados agrupados
            break
        else:
            continue
        input("...")


# ------------------------------------------------------------------------------------------
# ------------------------------- while principal do script ---------------------
# ------------------------------------------------------------------------------------------

while 1:
    terminal.clear_()

    #Escopo do While principal
    print(terminal.terminal_size(" Estatística ", "+"))
    print(terminal.terminal_size(f" Casa decimal: {process.decimal} ", " "))

    for command in commands1:
        print(command)

    try:
        res1 = input("Opção: ")
    except EOFError:
        pass

    if res1 == "1":
        #Dados brutos