01.
import
operator
02.
import
pylab
03.
04.
def
le_ficheiro(nome):
05.
f_in
=
open(nome,
'r'
)
06.
dados
=
[]
07.
linha
=
f_in.readline()
08.
while
linha !
=
'
' and linha != '
\n':
09.
pos
=
linha[:
-
1
].split()
10.
dados.append((int(pos[
0
]), int(pos[
1
])))
11.
linha
=
f_in.readline()
12.
13.
f_in.close()
14.
return
dados
15.
16.
def
analisa_frequencias(dados):
17.
frequencias
=
{}
18.
for
valor
in
dados:
19.
frequencias[valor]
=
frequencias.get(valor,
0
)
+
1
20.
# completa
21.
for
valor
in
range(
1
,
13
):
22.
frequencias[valor]
=
frequencias.get(valor,
0
)
23.
return
frequencias
24.
25.
26.
def
visualiza_frequencias(ocorrencias):
27.
""" A partir do dicionário das ocorrências produz o plot
28.
das percentagens.
29.
"""
30.
lista_ocorrencias
=
ocorrencias.items()
31.
lista_ocorrencias.sort(key
=
operator.itemgetter(
0
))
32.
total
=
sum(ocorrencias.values())
33.
34.
percentagem
=
[ float(valor[
1
])
/
total
for
valor
in
lista_ocorrencias]
35.
pylab.ylabel(
'Percentagem'
)
36.
pylab.xlabel(
'Numeros'
)
37.
xx
=
range(
1
,
13
)
38.
pylab.plot(xx,percentagem,
'r-o'
)
39.
pylab.show()
40.
41.
42.
43.
def
main614(ficheiro):
44.
# Leitura dos dados
45.
pares
=
le_ficheiro(ficheiro)
46.
soma_pares
=
[sum(par)
for
par
in
pares]
47.
# Frequências
48.
frequencias
=
analisa_frequencias(soma_pares)
49.
50.
# Visualização de frequências
51.
visualiza_frequencias(frequencias)
Comecemos... pelo fim. O nosso programa principal, main614, divide o problema em tês partes: obtenção dos dados, cálculo das percentagens e visualização. A leitura dos dados no formato de pares por linha já foi visto várias vezes. Usamos listas por compreensão para transformar a lista de pares numa lista de somas de pares. O cálculo das percentagens socorre-se de um dicionário. Como podem existir somas que nunca ocorreram e cuja percentagem será zero, somos obrigados a vertificar esse facto colocando entradas no dicionário (número:0), nessas situações. Delegamos depois no pylab a tarefa de visualizar o resultado. Aqui surge a questão dos dicionários serem colecções não ordenadas de pares chave : valor. Por isso temos que passar tudo para uma lista, que é ordenada por chave. Feito isso, podemos mandar desenhar o gráfico. A imagem ilustra o que é mostrado.

Sem comentários:
Enviar um comentário