-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetodos.py
123 lines (107 loc) · 3.81 KB
/
metodos.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import math
class MetodosMatematicos():
def __init__(self, dados):
"""
Iniciando a classe
"""
self.dados = dados
self.novos_dados = []
self.tamanho_amostra = len(self.dados)
self.media = self.calcular_media()
self.media = self.calcular_media()
self.mediana = self.calcular_mediana()
self.amplitude = self.calcular_amplitude()
self.k = self.calcular_k()
self.c = self.calcular_c()
self.variancia = self.calcular_variancia()
self.limite_inferior = self.calcular_limite_inferior()
self.dados_tabela = self.montar_tabela()
self.li, self.lf = self.montar_listas_intervalos()
def calcular_media(self):
"""
Método Responsável por calcular a média
"""
media = sum(self.dados)/self.tamanho_amostra
return media
def calcular_mediana(self):
"""
Método Responsável por calcular a mediana
"""
mediana = (self.dados[int(self.tamanho_amostra / 2)] + self.dados[int(self.tamanho_amostra / 2) + 1]) / 2 if self.tamanho_amostra % 2 == 0 else self.dados[int((self.tamanho_amostra - 1) / 2)]
return mediana
def calcular_amplitude(self):
"""
Método responsável por calcular a amplitude
"""
amplitude = max(self.dados) - min(self.dados)
return amplitude
def calcular_k(self):
"""
Método responsável por calcular o k
"""
k = round(math.sqrt(self.tamanho_amostra))
return k
def calcular_c(self):
"""
Método responsável por calcular o c
"""
c = round(self.amplitude / (self.k - 1), 2)
return c
def calcular_variancia(self):
"""
Método responsável por calcular a Variância
"""
soma = 0
for valor in self.dados:
soma += (self.media - valor) ** 2
variancia = soma/self.tamanho_amostra
return variancia
def calcular_limite_inferior(self):
"""
Método responsável por calcular o limite inferior
"""
limite_inferior = min(self.dados) - self.c/2
return limite_inferior
def montar_listas_intervalos(self):
"""
Método responsável por calcular os intervalos
"""
lista_intervalos_ini = []
lista_intervalos_fim = []
for b in range(0, self.k):
lista_intervalos_ini.append(round(self.limite_inferior + self.c*b, 3))
lista_intervalos_fim.append(round(self.limite_inferior + self.c*(b+1), 3))
return lista_intervalos_ini, lista_intervalos_fim
def printar_classes(self):
"""
Método responsável por printar as classes baseado nos dados
"""
for key, value in self.dados_tabela.items():
print(key, value)
def montar_tabela(self):
"""
Método responsável por criar a tabela
"""
fi = []
fr = []
fac = []
li, lf = self.montar_listas_intervalos()
intervalos = []
for c in range(0, self.k):
cont_fi = 0
for valor in self.dados:
if li[c] <= valor < lf[c]:
cont_fi += 1
self.novos_dados.append(li[c])
fi.append(cont_fi)
fr.append(round(cont_fi/self.tamanho_amostra, 3))
intervalos.append(f"{li[c]} --| {lf[c]}")
if c == 0:
fac.append(fr[0])
else:
fac.append(round(fac[c-1] + fr[c], 3))
intervalos.append("Total")
fi.append(sum(fi))
fr.append(sum(fr))
fac.append(None)
return {'Intervalos': intervalos, 'fi' : fi, 'fr' : fr, 'fac' : fac}