-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcodigo.py
More file actions
141 lines (95 loc) · 4.45 KB
/
codigo.py
File metadata and controls
141 lines (95 loc) · 4.45 KB
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import pandas as pd
import os
import matplotlib.pyplot as plt
def criar_diretorio(diretorio):
if(not os.path.exists(diretorio)):
os.makedirs(diretorio)
def remover_arquivo(arquivo):
if(os.path.exists(arquivo)):
os.remove(arquivo)
def formatar_string(palavra):
fragmentado = palavra.split("_")
for i in range(len(fragmentado)):
#deixando a primeira palavra de cada em maiusculo
fragmentado[i] = fragmentado[i].capitalize()
#definindo titulo do grafico
return " ".join(fragmentado)
def criar_grafico(dados, diretorio):
criar_diretorio(os.path.join(diretorio))
criar_grafico_barra(dados, diretorio)
criar_grafico_pizza(dados, diretorio)
def criar_grafico_barra(dados, diretorio):
dados.plot(kind = "barh")
plt.xlabel('Pessoas')
plt.ylabel('Numero')
eixo_x = [x for x in range(0, dados.max() + 1, 1)]
plt.xticks(range(len(eixo_x)))
plt.grid(True)
titulo_grafico = formatar_string(dados.name)
plt.title(titulo_grafico)
caminho_arquivo_grafico = f"{os.path.join(diretorio, f'{titulo_grafico} - barra')}.jpg"
remover_arquivo(caminho_arquivo_grafico)
plt.savefig(caminho_arquivo_grafico)
plt.close()
def criar_grafico_pizza(dados, diretorio):
plt.pie(dados.values, autopct='%1.0f%%')
plt.legend(dados.index)
plt.xlabel('')
plt.ylabel('')
plt.loc = "center rigth"
titulo_grafico = formatar_string(dados.name)
plt.title(titulo_grafico)
caminho_arquivo_grafico = f"{os.path.join(diretorio, f'{titulo_grafico} - pizza')}.jpg"
remover_arquivo(caminho_arquivo_grafico)
plt.savefig(caminho_arquivo_grafico)
plt.close()
def criar_texto(dados, diretorio):
criar_diretorio(diretorio)
titulo_arquivo = formatar_string(dados.name)
caminho_arquivo_texto = f"{os.path.join(diretorio, titulo_arquivo)}.txt"
remover_arquivo(caminho_arquivo_texto)
arquivo_de_texto = open(caminho_arquivo_texto, 'a')
arquivo_de_texto.write(str(dados))
arquivo_de_texto.close()
#Variaveis de diretorio
diretorio_inicial = os.path.join(os.getcwd(), 'dados')
caminho_arquivo_de_dados = os.path.join(diretorio_inicial, 'respostas.xlsx')
#lendo o arquivo
df = pd.read_excel(caminho_arquivo_de_dados)
#Apagando as colunas da segunda parte do formulario
for i in range(20, 31):
nome = f"Unnamed: {i}"
df = df.drop(columns=[nome])
#lista para ler a lista de vencedores la na frente
lista_vencedores = []
#For que percorre as colunas
for i in range(len(df.columns)):
categoria = f'{df.columns[i]}'
#funçao que conta a frequencia de cada valor em uma tabela
#estou passando como parametro a tabela com apenas uma coluna
#formatar celula para remover os espaços
categoria_ranqueada = pd.value_counts(df[categoria])
criar_grafico(categoria_ranqueada, os.path.join(diretorio_inicial, categoria))
criar_texto(categoria_ranqueada, os.path.join(diretorio_inicial, categoria))
#for para se criar a contagem de vencedores
for j in range(len(categoria_ranqueada)):
numeroDeVotosDaVez = categoria_ranqueada[j]
#caso essa pessoa tenha o numero de votos maximo
if(numeroDeVotosDaVez == categoria_ranqueada.max()):
#dou o nome do 'vencedor' ao indice do dicionario por que por algum motivo os nomes
#das pessoas estao sendo colocadas como indices
vencedor = categoria_ranqueada.index[j]
#Adciona a categoria, o vencedor, e o numero de votos em forma de lista
lista_vencedores += [[categoria , vencedor, numeroDeVotosDaVez]]
#só pra ganhar tempo
else:
break
#cria o dataframe com os dados coletados no for acima
lista_vencedores_dataframe = pd.DataFrame(lista_vencedores, columns = ['Categoria', 'Vencedor', 'Votos'])
lista_vencedores_dataframe.name = "vencedores"
#criar_grafico(lista_vencedores_dataframe, diretorio_graficos)
criar_texto(lista_vencedores_dataframe, os.path.join(diretorio_inicial, 'resumo'))
lista_vencedores_ranqueada = lista_vencedores_dataframe.value_counts('Vencedor')
lista_vencedores_ranqueada.name = "ranquin_de_vencedores"
criar_grafico(lista_vencedores_ranqueada, os.path.join(diretorio_inicial, 'resumo'))
criar_texto(lista_vencedores_ranqueada, os.path.join(diretorio_inicial, 'resumo'))