Boa sorte esta noite ~ Hoje jogo frango frango com alguns amigos, passou por todos os tipos de dado, também zombou 100 tipos de carne de frango para morrer na meninas, como a morte de um punho acenando, pára-quedismo queda telhado borda caiu para a morte, jogando para o frango é montanha-russa morta tecnologia do carro show, sendo companheiros de equipe com coquetéis molotov queimou. Este é um jogo para mim para me informar do jogo, bem como forma original de morrer. Mas o jogo e vá jogar, ainda tem que fingir que eu sou viciado à aprendizagem, por isso hoje usando jogo de frango dados reais para ver como melhorar suas chances de comer frango.
Em seguida, fazemos a análise de dados com a alma R e Python para responder às seguintes perguntas?
Primeiro, olhe para os dados:
Onde saltar perigoso?
Para mim, este tem sido os jogadores consciência como Gou, depois de inúmeras pouso na experiência dolorosa rio, eu estava determinado a não optar por ignorar este edifício densa cidade P urbana, de propriedade dos pobres mais pobres, mas uma matéria de seguro de vida. Então, no final, decidimos olhar para as estatísticas que coloca mais propensos a cair no rio? Nós tela para análise visual dos ex-jogadores colocam 100 segundos de morte. Mapa de planta Passion deserto, Picado, moradias, mais perigoso, estação ferroviária relativamente seguro de Ybor City, usinas térmicas. ilha P Jedi na cidade, bases militares, escolas, hospitais, usinas nucleares, ar-raid abrigo são zona de perigo absoluto. material de G-rico é realmente porto relativamente seguro.
numpy 1import como np
matplotlib.pyplot 2import como plt
pandas 3import como Pd
Seaborn 4import como sns
5from scipy.misc.pilutil imread importação
matplotlib.cm 6import como centímetros
7
Os dados de lead-in porção 8 #
9deaths1 = pd.read_csv ( "mortes / kill_match_stats_final_0.csv")
10deaths2 = pd.read_csv ( "mortes / kill_match_stats_final_1.csv")
11
12deaths = pd.concat ( )
13
14 # 5 antes da impressão, variável compreender
15print (deaths.head (), '\ n', len (mortes))
16
Dois mapa # 17
18miramar = mortes
19erangel = mortes
20
21 # 100 segundos antes do início da heatmap morte
22position_data =
23 Porque posição em position_data:
24 miramar = Miramar .Aplique (lambda x: x * 1000/800000)
25 = miramar miramar
26
27 erangel = Erangel .Aplique (lambda x: x * 4096/800000)
28 erangel = erangel
29
30n = 50.000
31mira_sample = miramar .sample (n)
32eran_sample = erangel .sample (n)
33
FIG 34 # miramar termodinâmico
35bg = imread ( "miramar.jpg")
36fig, Ax = plt.subplots (1,1, figsize = (15,15))
37ax.imshow (bg)
38sns.kdeplot (mira_sample , mira_sample , n_levels = 100, cmap = cm.Reds, alfa = 0,9)
39
40 # erangel heatmap
41bg = imread ( "erangel.jpg")
42fig, Ax = plt.subplots (1,1, figsize = (15,15))
43ax.imshow (bg)
44sns.kdeplot (eran_sample , eran_sample , n_levels = 100, cmap = cm.Reds, alfa = 0,9)
Gou encaminhar ou secar?
Eu ainda sair e Gou no final é o inimigo de forma imprudente no quarto? Como o tamanho do jogo aqui não é o mesmo, aqui selecionar o número de participantes é maior do que 90, os dados do jogo, e depois filtrar o frango equipa team_placement e sucesso final dos dados da equipe:
1, a primeira equipe para calcular o número médio de galinha para matar o inimigo, aqui exclui os quatro modos de dados do jogo, porque o número de muita disparidade entre a equipe média por causa do número torna-se sem sentido;
2, consideramos o último membro sobrevivente de um número de inimigos para matar cada grupo por grupo de estatísticas de frango, mas aqui encontrou estatística variável tempo de sobrevivência é o tempo de sobrevivência final de acordo com o registro da equipe, então a idéia de fracasso;
3, as estatísticas finais para cada equipe no frango matar o maior número de número de estatísticas, excluindo os dados aqui modo single player, porque o número de modo single-player é matar o maior número em cada grupo. E, finalmente, na verdade, descobriu que há um número de mata até 60, não há dúvida se aberta. Frango ou quer sair para a prática pontaria, com apenas Gou não é suficiente.
1library (dplyr)
2library (tidyverse)
3library (data.table)
4library (ggplot2)
5pubg_full < - fread ( "../ agg_match_stats.csv")
6 # número de inimigos para matar galinha média equipe
7attach (pubg_full)
8pubg_winner < - pubg_full% > % Filter (team_placement == 1 & PARTY_SIZE < 4 & game_size > 90)
9detach (pubg_full)
10team_killed < - agregados (pubg_winner $ player_kills, por = list (pubg_winner $ match_id, pubg_winner $ team_id), FUN = "média")
11team_killed $ death_num < - teto (team_killed $ x)
12ggplot (dados = team_killed) + geom_bar (mapeamento = AES (x = death_num, y = ..count ..), cor = "Steelblue") +
13 xlim (0,70) + laboratórios (title = "Número de Morte que a equipe PUBG Winner Matou", x = "Número da morte")
14
# 15 da equipe último sobrevivente de frango matar o número de jogadores
16pubg_winner < - pubg_full% > % Filter (pubg_full $ team_placement == 1)% > % Group_by (match_id, team_id)
17attach (pubg_winner)
18team_leader < - agregado (~ player_survive_time player_kills, dados = pubg_winner, FUN = "máximo")
19detach (pubg_winner)
20
# 21 da equipe em frango matar o maior número de inimigos
22pubg_winner < - pubg_full% > % Filter (pubg_full $ team_placement == 1 & pubg_full $ PARTY_SIZE > 1)
23attach (pubg_winner)
24team_leader < - agregados (player_kills, por = lista (match_id, team_id), FUN = "máximo")
25detach (pubg_winner)
26ggplot (dados = team_leader) + geom_bar (mapeamento = AES (x = x, y = ..count ..), cor = "Steelblue") +
27 xlim (0,70) + laboratórios (title = "Número de morte que PUBG Winner Matou", x = "Número da morte")
28
Que tipo de arma para matar mais jogadores?
Boa sorte para escolher uma boa arma quando você hesita em escolher qual deles? A partir da visualização do mapa, M416 e SCAR é uma boa arma, mas também relativamente fácil pode pegar armas, reconhecemos Kar98k é uma boa arma pode ser baleado e morto, porque os rankings por comparação, é porque esta arma no jogo relativamente raro mas também precisa de acertar a força do inimigo, como me pegou 98k também equipado com espelho de 8 vezes, mas não cobrir os seus jogadores estão aquecendo até um minuto não merece isso.
Classificação nº 1 arma do crime
2death_causes = mortes . Value_counts ()
3
4sns.set_context ( 'falar')
5fig = plt.figure (figsize = (30, 10))
6AX = sns.barplot (x = death_causes.index, y = )
7ax.set_title ( 'taxa de morte Causas')
8ax.set_xticklabels (death_causes.index, rotação = 90)
9
Armas top 10 classificado # 20
11rank = 20
12fig = plt.figure (figsize = (20, 10))
13ax = sns.barplot (X = death_causes .Index, y = )
14ax.set_title ( 'taxa de morte Causas')
15ax.set_xticklabels (death_causes.index, rotação = 90)
16
Mapa # 17 para tomar dois separados
18f, eixos = plt.subplots (1, 2, figsize = (30, 10))
19axes .set_title ( 'Death Causas Classificação: Erangel (Top {}). Format (classificação))
20axes .set_title ( 'Death Causas Classificação: Miramar (Top {}). Format (classificação))
21
22counts_er = erangel . Value_counts ()
23counts_mr = Miramar . Value_counts ()
24
25sns.barplot (x = counts_er .Index, y = , ax = eixos )
26sns.barplot (x = counts_mr .Index, y = , ax = eixos )
27axes .set_ylim ((0, 0.20))
28axes .set_xticklabels (counts_er.index, rotação = 90)
29axes .set_ylim ((0, 0.20))
30axes .set_xticklabels (counts_mr.index, rotação = 90)
31
# 32 relações frango e armas
33win = mortes
34win_causes = ganhar . Value_counts ()
35
36sns.set_context ( 'falar')
37fig = plt.figure (figsize = (20, 10))
38ax = sns.barplot (X = win_causes .Index, y = )
39ax.set_title ( 'taxa de morte Causas de Win')
40ax.set_xticklabels (win_causes.index, rotação = 90)
companheiros Quer me ajudar a comer frango?
Às vezes, um desatento derrubado, mas, felizmente, subi rapidamente para seus companheiros de equipe para me salvar. Aqui escolha de frango equipes bem sucedidas, os membros da equipe finalmente aceitou probabilidade 1 útil onde o frango é de 29%, de modo que assistências para seus companheiros de equipe é muito importante (e, em seguida, não me chame de companheiros de porco, e eu posso optar por não poupar .) Mas ainda há nove vezes para salvar os companheiros de equipe, você também é um talento.
1library (dplyr)
2library (tidyverse)
3library (data.table)
4library (ggplot2)
5pubg_full < - fread ( "E: /aggregate/agg_match_stats_0.csv")
6attach (pubg_full)
7pubg_winner < - pubg_full% > Filtrar% (team_placement == 1)
8detach (pubg_full)
9ggplot (dados = pubg_winner) + geom_bar (mapeamento = AES (x = player_assists, y = ..count ..), preenchimento = "# E69F00") +
10 xlim (0,10) + laboratórios (title = "Número de Jogador assistida", x = "Número da morte")
11ggplot (dados = pubg_winner) + geom_bar (mapeamento = AES (x = player_assists, y = ..prop ..), preenchimento = "# 56B4E9") +
12 xlim (0,10) + laboratórios (title = "Número de Jogador assistida", x = "Número da morte")
Dos meus inimigos mais perto ainda mais perigosa?
Killer_position de variáveis de dados e victim_position cálculo da distância euclidiana, ver a distância em linha reta entre os dois com a distribuição de um abatido, mostrando uma distribuição óbvio direito do enviesada, ao que parece, necessidade de sempre observar o inimigo nas proximidades, de modo a não eliminar todos Eu não sei onde o inimigo.
1 # código python para: assassinato e relacionamento à distância
matemática 2import
get_dist 3def (df): função # distância
4 dist =
5 para a linha em df.itertuples ():
6 subconjunto = (row.killer_position_x - row.victim_position_x) ** 2 + (row.killer_position_y - row.victim_position_y) ** 2
7 se subconjunto > 0:
8 dist.append (Math.sqrt (subconjunto) / 100)
9 pessoa:
10 dist.append (0)
dist 11 de retorno
12
13df_dist = pd.DataFrame.from_dict ({ 'dist (m)': get_dist (erangel)})
14df_dist.index = erangel.index
15
16erangel_dist = pd.concat ( , Eixo = 1)
17
18df_dist = pd.DataFrame.from_dict ({ 'dist (m)': get_dist (miramar)})
19df_dist.index = miramar.index
20
21miramar_dist = pd.concat ( , Eixo = 1)
22
23F eixos = plt.subplots (1, 2, figsize = (30, 10))
24plot_dist = 150
25
26axes .set_title ( 'Engagement Dist :. Erangel')
27axes .set_title ( 'Engagement Dist:. Miramar')
28
29plot_dist_er = erangel_dist
30plot_dist_mr = miramar_dist
31
32sns.distplot (plot_dist_er , ax = eixos )
33sns.distplot (plot_dist_mr , ax = eixos )
Quanto mais as pessoas da equipe eu viver mais tempo?
PARTY_SIZE dados variáveis em análise de sobrevivência, pode ser visto na mesma taxa de sobrevivência, quatro vezes maior do que equipa a sobrevivência dos dois da equipe, e, em seguida, o modo single-player, assim que a força em números esta frase não é razoável.
Se viajar viver mais tempo?
Causa da morte análise descobriu que há muitos jogadores morreram Bluezone, ingênuo pensar que todo mundo vai ser capaz de pegar bandagens correu veneno. dados variáveis Player_dist_ride em análise de sobrevivência, pode ser visto na mesma taxa de sobrevivência, há jogadores experientes levou tempo de sobrevivência do que apenas jogadores a pé, você está executando pernas sozinho, mas tóxico.
Os mais ilhas I Mestre viver mais tempo?
variáveis Game_size para análise de sobrevivência encontrada ou pequeno jogo mais fácil para sobreviver.
1 # códigos de linguagem R são os seguintes:
2library (magrittr)
3library (dplyr)
4library (sobrevivência)
5library (tidyverse)
6library (data.table)
7library (ggplot2)
8library (survminer)
9pubg_full < - fread ( "../ agg_match_stats.csv")
Dados pré-processamento # 10, designado como as variáveis de classificação variável contínua
11pubg_sub < - pubg_full% > %
12 filtro (player_survive_time < 2100)% > %
13 de mutação (unidade = ifelse (player_dist_ride > 0, 1, 0))% > %
14 de mutação (tamanho = ifelse (game_size < 33, 1, ifelse (game_size > = 33 & game_size < 66,2,3)))
# 15 Criar um alvo sobrevivência
16surv_object < - Surv (tempo = pubg_sub $ player_survive_time)
17fit1 < - survfit (surv_object ~ PARTY_SIZE, dados = pubg_sub)
Visualization sobrevivência # 18
19ggsurvplot (FIT1, data = pubg_sub, pval = TRUE, XLAB = "Tempo de reprodução "Surv.median.line =" hv",
20 legend.labs = C ( "solo", "DUO", "PLANTEL"), ggtheme = theme_light (), risk.table = "percentagem")
21fit2 < - survfit (surv_object ~ unidade, dados = pubg_sub)
22ggsurvplot (FIT2, data = pubg_sub, pval = TRUE, XLAB = "Tempo de reprodução "Surv.median.line =" hv",
23 legend.labs = c ( "caminhada", "Walk & unidade"), ggtheme = theme_light (), risk.table = "porcentagem")
24fit3 < - survfit (surv_object ~ tamanho, dados = pubg_sub)
25ggsurvplot (Flt3, data = pubg_sub, pval = TRUE, XLAB = "Tempo de reprodução "Surv.median.line =" hv",
26 legend.labs = C ( "pequeno", "médio", "grande"), ggtheme = theme_light (), risk.table = "percentagem")
Finalmente, há lugares anel de veneno que podem surgir?
Gou ter a capacidade de ser capaz de enfrentar o meu passado, como prever o anel final da droga em que posição. Agg_match_stats dados da tabela para descobrir a equipe número um, e siga os grupos match_id para descobrir o valor máximo player_survive_time de dentro de pacote de dados, e depois de acordo para combinar com o kill_match_stats_final mesa dentro os dados, os dados dentro da segunda morte ocorra, mapeamento encontrado anel de veneno paixão deserto significativamente mais focado algum grande probabilidade no Picado, San Martin e área de jardim. ilha Jedi é mais aleatória, mas ainda ser capaz de ver a base militar local e as montanhas são mais propensos a ser o último anel de drogas.
# 1 posição do anel última droga
matplotlib.pyplot 2import como plt
pandas 3import como Pd
Seaborn 4import como sns
5from scipy.misc.pilutil imread importação
matplotlib.cm 6import como centímetros
7
Os dados de lead-in porção 8 #
9deaths = pd.read_csv ( "mortes / kill_match_stats_final_0.csv")
Importar dados agregar 10 #
11aggregate = pd.read_csv ( "agregado / agg_match_stats_0.csv")
12print (aggregate.head ())
13 # para descobrir a localização dos últimos três mortes
14
15team_win = agregado # equipa classificou-top
16 # para descobrir todos os jogos da primeira equipe a viver mais tempo que o jogador
. 17grouped = team_win.groupby ( 'match_id') aplicam-se (lambda t: t )
18
19deaths_solo = mortes
20deaths_solo_er = deaths_solo
21deaths_solo_mr = deaths_solo
22
23df_second_er = deaths_solo_er == 2)>. Dropna ()
24df_second_mr = deaths_solo_mr == 2)>. Dropna ()
25print (df_second_er)
26
27position_data =
28for posição em position_data:
29 df_second_mr = Df_second_mr .Aplique (lambda x: x * 1000/800000)
30 df_second_mr = df_second_mr
31
32 df_second_er = Df_second_er .Aplique (lambda x: x * 4096/800000)
33 df_second_er = df_second_er
34
35df_second_er = df_second_er
FIG 36 # erangel termodinâmico
37sns.set_context ( 'falar')
38bg = imread ( "erangel.jpg")
39fig, Ax = plt.subplots (1,1, figsize = (15,15))
40ax.imshow (bg)
41sns.kdeplot (df_second_er , df_second_er , cmap = cm.Blues, alfa = 0,7, sombra = True)
42
43 # Miramar heatmap
44bg = imread ( "miramar.jpg")
45fig, Ax = plt.subplots (1,1, figsize = (15,15))
46ax.imshow (bg)
47sns.kdeplot (df_second_mr , df_second_mr , cmap = cm.Blues, alfa = 0,8, sombra = True)
Obter dados Endereço: https: //www.kaggle.com/skihikingkevin/pubg-match-deaths#aggregate.zip.
Este artigo passou um grande esforço, polegares acima, aprovação e apoio são encaminhadas ao autor.
Finalmente, eu desejo a todos vocês:
Aviso: Este artigo é administrado por uma pessoa autorizada para aprender transferido a partir da análise dos dados, os autores: molho de cenoura.
"amigos Chamada de Trabalhos"
CSDN No. defender o conceito do público "e dez milhões de pessoas crescimento total de tecnologia", não só para "geeks manchetes", coluna "Chatteris" pela primeira vez uma perspectiva descrição técnica exclusiva da pessoa que se importa indústria de tecnologia, o foco do evento, mais "manchetes técnicos" coluna, ea cena na profundidade aplicação indústria de tecnologia quente da interpretação, de modo que todos os desenvolvedores manter o ritmo com as tendências da tecnologia, permanecem sentido vigilante da tecnologia cheiro, as tendências da indústria, a tecnologia é a cognição mais abrangente.
Se você tem novos insights sobre artigos de alta qualidade ou eventos da indústria quente, tecnologia tendências insights ou aplicação prática da profundidade de programas de cena, por favor contacte CSDN submissão, Contato: Micro carta (guorui_1118, por favor, anote o nome contribuição + + trabalhos incorporados), caixa de correio (guorui@csdn.net).