-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathfuncoes.py
More file actions
228 lines (155 loc) · 10 KB
/
funcoes.py
File metadata and controls
228 lines (155 loc) · 10 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
#Função para juntar todos as tabelas filtradas
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
colors = ['#1f77b4', '#ff7f0e', '#d62728', '#9467bd', '#666666']
#Função para juntar todas as tabelas filtradas
def juntar_tabelas(dataframe, coluna, valor):
dataset_concatenado = pd.concat(dataframe)
concatenado = dataset_concatenado.groupby(coluna)[valor].sum()
return concatenado.reset_index()
#Função para mostrar descrição da tabela
def descricao_tabela(dataframe, coluna, name):
return dataframe[dataframe[coluna] == name].describe()
#Função para Montar o grafico dos mapas;
def mostraGraficoMap(maps_vct):
bar_width = 0.4
bar_positions = np.arange(len(maps_vct))
fig, ax = plt.subplots(figsize=(15, 8))
ax.barh(bar_positions + bar_width/2, maps_vct['Total Defender Side Win Percentage'], bar_width, label='Defesa', color=colors[0])
ax.barh(bar_positions - bar_width/2, maps_vct['Total Attacker Side Win Percentage'], bar_width, label='Ataque', color=colors[1])
ax.set_yticks(bar_positions)
ax.set_yticklabels(maps_vct['Map'])
ax.set_ylabel("Mapas")
ax.set_xlabel('Porcentagem de Vitória')
ax.set_title('Porcentagem de Vitória por Mapa e Lado')
ax.legend(loc="lower right")
for pos in range (10, 51, 10):
ax.axvline(x=pos, color=colors[4], linestyle='dotted')
plt.show()
#Função para Montar o grafico dos agentes
def mostraGraficoAgent(agents_vct):
colors = {'Controlador': '#008000', 'Iniciador': '#0047AB', 'Sentinela': '#FFC300', 'Duelista': '#DC143C'}
# Configurando o estilo seaborn
sns.set(style="whitegrid")
# Criando o gráfico de barras horizontais com seaborn
plt.figure(figsize=(10, 8))
sns.barplot(x='Pick Rate (%)', y='Agent', data=agents_vct, hue='Role', palette=colors)
plt.xlabel('Porcentagem de Escolha')
plt.ylabel('Agentes')
plt.title('Porcentagem de Escolha por Agente')
plt.legend(title='Funções')
plt.show()
#Função para mostrar o melhor jogador de uma região
def bestPlayerRegion(dataset, times, tournament):
lista_jogadores = []
for team in times:
players = dataset[
(dataset['Tournament'] == tournament) &
(dataset['Stage'] == 'All Stages') &
(dataset['Match Type'] == 'All Match Types') &
(dataset['Team'] == team)
]
players_grouped = players.groupby('Player').agg({
'Kills': 'sum',
'Kills Per Round': 'mean',
'Average Damage Per Round': 'mean',
'Headshot %': lambda x: pd.to_numeric(x.str.replace('%', ''), errors='coerce').mean(),
'Kills:Deaths': 'mean'
}).reset_index()
players_grouped['Kills Mean'] = players_grouped['Kills'] / players_grouped.shape[0]
players_grouped['Kills Per Round Mean'] = players_grouped['Kills Per Round']
players_grouped['Average Damage Per Round Mean'] = players_grouped['Average Damage Per Round']
players_grouped['Headshot % Mean'] = players_grouped['Headshot %']
players_grouped['Kills:Deaths Mean'] = players_grouped['Kills:Deaths']
lista_jogadores.append(players_grouped)
jogadores = pd.concat(lista_jogadores).reset_index(drop=True)
best_player = jogadores.sort_values(by='Kills Mean', ascending=False).head(1)
return best_player
def agentsKD(dataset, tournament):
players = dataset[(dataset['Tournament'] == tournament) &
(dataset['Stage'] == 'All Stages') &
(dataset['Match Type'] == 'All Match Types')]
# filtra as linhas onde o número de agents é exatamente 1
players = players[players['Agents'].str.count(',') == 0]
agents_kd = players[['Agents', 'Kills:Deaths']]
agents_kd = agents_kd.groupby('Agents')['Kills:Deaths'].mean().reset_index()
agents_kd = agents_kd.sort_values(by='Kills:Deaths', ascending=False).round(2)
return agents_kd
def mudancaValores(dataset):
if dataset['Team A'] == 'Team Vikings':
if dataset['Team A Score'] > dataset['Team B Score']:
return 1
elif dataset['Team A Score'] < dataset['Team B Score']:
return 0
elif dataset['Team B'] == 'Team Vikings':
if dataset['Team B Score'] > dataset['Team A Score']:
return 1
elif dataset['Team B Score'] < dataset['Team A Score']:
return 0
def partidasGanhas(dataset, time, tournament):
dataset['Tournament'] = dataset['Tournament'].astype(str)
dataset['Team A'] = dataset['Team A'].astype(str)
dataset['Team B'] = dataset['Team B'].astype(str)
matches_champions = dataset[
(dataset['Tournament'] == tournament) &
((dataset['Team A'] == time) |
(dataset['Team B'] == time))
]
matches_champions.loc[:, 'Team A Score'] = matches_champions['Team A Score'].astype(int)
matches_champions.loc[:, 'Team B Score'] = matches_champions['Team B Score'].astype(int)
matches_champions_copy = matches_champions.copy()
matches_champions_copy['Result'] = matches_champions_copy.apply(mudancaValores, axis=1)
matches_champions_copy.drop('Match Result', axis=1, inplace=True)
return (matches_champions_copy['Result'] == 1).sum()
def mapasJogados(dataset, time, tournament):
matches_champions = dataset[
(dataset['Tournament'] == tournament) &
dataset['Match Name'].str.contains(time)]
return matches_champions['Map'].count()
def acsOverview(teams, dataset):
team_means = []
for team in teams:
team_acs_mean = dataset[dataset["Team"] == team]["Average Combat Score"].mean().round(2)
team_means.append(team_acs_mean)
team_matches_count = [len(dataset[dataset["Team"] == team]["Match Name"].unique()) for team in teams]
overview_table = pd.DataFrame({
"Team": teams,
"Matches Count": team_matches_count,
"Mean ACS": team_means
})
return overview_table
def agentsYear(dataset, year):
agents_vctYear_bar = dataset
agents_vctYear_bar['Year'] = year
agents_vctYear_ord = dataset.sort_values(by='Pick Rate', ascending=False)
agents_vctYear_ord = agents_vctYear_ord.head(22)
return agents_vctYear_ord
def mediaMap(maps_vct_total):
# Aplicando a media nas vazias da linha da Fracture, para que os dados fique mais facil a visualização
media_fracture_attack = (maps_vct_total.loc[maps_vct_total['Map'] == 'Fracture', 'Attacker Side Win Percentage_y'] + maps_vct_total.loc[maps_vct_total['Map'] == 'Fracture', 'Attacker Side Win Percentage'])/2
media_fracture_defender = (maps_vct_total.loc[maps_vct_total['Map'] == 'Fracture', 'Defender Side Win Percentage_y'] + maps_vct_total.loc[maps_vct_total['Map'] == 'Fracture', 'Defender Side Win Percentage'])/2
maps_vct_total.loc[maps_vct_total['Map'] == 'Fracture', 'Attacker Side Win Percentage_x'] = round( media_fracture_attack ,1)
maps_vct_total.loc[maps_vct_total['Map'] == 'Fracture', 'Defender Side Win Percentage_x'] = round(media_fracture_defender ,1)
# Aplicando a media nas vazias da linha da Pearl, para que os dados fique mais facil a visualização
media_pear_attack = (maps_vct_total.loc[maps_vct_total['Map'] == 'Pearl', 'Attacker Side Win Percentage_y'] + maps_vct_total.loc[maps_vct_total['Map'] == 'Pearl', 'Attacker Side Win Percentage'])/2
media_pear_defender = (maps_vct_total.loc[maps_vct_total['Map'] == 'Pearl', 'Defender Side Win Percentage_y'] + maps_vct_total.loc[maps_vct_total['Map'] == 'Pearl', 'Defender Side Win Percentage'])/2
maps_vct_total.loc[maps_vct_total['Map'] == 'Pearl', 'Attacker Side Win Percentage_x'] = round(media_pear_attack ,1)
maps_vct_total.loc[maps_vct_total['Map'] == 'Pearl', 'Defender Side Win Percentage_x'] = round(media_pear_defender ,1)
# Aplicando a media nas vazias da linha da Breeze, para que os dados fique mais facil a visualização
media_breeze_attack = (maps_vct_total.loc[maps_vct_total['Map'] == 'Breeze', 'Attacker Side Win Percentage_y'] + maps_vct_total.loc[maps_vct_total['Map'] == 'Breeze', 'Attacker Side Win Percentage_x'])/2
media_breeze_defender = (maps_vct_total.loc[maps_vct_total['Map'] == 'Breeze', 'Defender Side Win Percentage_y'] + maps_vct_total.loc[maps_vct_total['Map'] == 'Breeze', 'Defender Side Win Percentage_x'])/2
maps_vct_total.loc[maps_vct_total['Map'] == 'Breeze', 'Attacker Side Win Percentage'] = round(media_breeze_attack ,1)
maps_vct_total.loc[maps_vct_total['Map'] == 'Breeze', 'Defender Side Win Percentage'] = round(media_breeze_defender ,1)
# Aplicando a media nas vazias da linha da Icebox, para que os dados fique mais facil a visualização
media_icebox_attack = (maps_vct_total.loc[maps_vct_total['Map'] == 'Icebox', 'Attacker Side Win Percentage_y'] + maps_vct_total.loc[maps_vct_total['Map'] == 'Icebox', 'Attacker Side Win Percentage_x'])/2
media_icebox_defender = (maps_vct_total.loc[maps_vct_total['Map'] == 'Icebox', 'Defender Side Win Percentage_y'] + maps_vct_total.loc[maps_vct_total['Map'] == 'Icebox', 'Defender Side Win Percentage_x'])/2
maps_vct_total.loc[maps_vct_total['Map'] == 'Icebox', 'Attacker Side Win Percentage'] = round( media_icebox_attack ,1)
maps_vct_total.loc[maps_vct_total['Map'] == 'Icebox', 'Defender Side Win Percentage'] = round( media_icebox_defender ,1)
# Usando os dados para prencher dados vacios na tabela, esse é da lotus
maps_vct_total.loc[maps_vct_total['Map'] == 'Lotus', 'Attacker Side Win Percentage_x'] = maps_vct_total.loc[maps_vct_total['Map'] == 'Lotus', 'Attacker Side Win Percentage']
maps_vct_total.loc[maps_vct_total['Map'] == 'Lotus', 'Defender Side Win Percentage_x'] = maps_vct_total.loc[maps_vct_total['Map'] == 'Lotus', 'Defender Side Win Percentage']
maps_vct_total.loc[maps_vct_total['Map'] == 'Lotus', 'Attacker Side Win Percentage_y'] = maps_vct_total.loc[maps_vct_total['Map'] == 'Lotus', 'Attacker Side Win Percentage']
maps_vct_total.loc[maps_vct_total['Map'] == 'Lotus', 'Defender Side Win Percentage_y'] = maps_vct_total.loc[maps_vct_total['Map'] == 'Lotus', 'Defender Side Win Percentage']
return maps_vct_total