İyi şanslar, bu gece tavuk ye ~ Bugün arkadaşlarımla birkaç tavuk oynadım ve çeşitli ölüm yollarını deneyimledim.Ayrıca, bir yumrukla dövülerek öldürülmek ve paraşütle çatıya düşmek gibi kızların tavukları yiyerek ölmesinin 100 yolu ile alay edildim. Uçurumun kenarında düştü, hızlı araba olarak tavuk yeme oynadı, araba yetenek gösterisinde öldürüldü ve takım arkadaşları tarafından molotof kokteyli kullanılarak yakılarak öldürüldü. Benim için bu tür bir oyun, ölmenin böyle bir yolu olduğunu fark etmemi sağlayan bir oyun. Ama eğlence için, hala öğrenmeye bağımlı olduğumu iddia etmelisiniz, bu yüzden bugün tavuk yeme olasılığınızı nasıl artırabileceğinizi görmek için tavuk yeme yarışmasının gerçek verilerini kullanacağım.
Daha sonra aşağıdaki ruh sorularını yanıtlamak için veri analizi için Python ve R kullanacağız?
Önce verilere bakın:
Atlamak nereye tehlikeli?
Benim gibi her zaman oyalanmayı seven vicdanlı bir oyuncu için nehre inme konusunda sayısız trajik deneyim yaşadıktan sonra, P City gibi yoğun binalara sahip, fakir ve fakir bir şehir seçmemeye kararlıyım ama hayat önemli. Bu yüzden hangi yerlere inmenin daha kolay olduğunu saymaya karar verdik? İlk 100 saniyede ölen oyuncuların yerlerini görsel analiz için taradık. Tutku Çöl Haritasındaki elektrik santrali, Picardo, villa bölgesi ve Ebo Şehri en tehlikeliler iken, tren istasyonu ve termik santral nispeten güvenlidir. Jedi Adası'ndaki P şehri, askeri üsler, okullar, hastaneler, nükleer santraller ve hava saldırısı sığınakları kesinlikle tehlikeli bölgelerdir. Malzeme açısından zengin Port G nispeten güvenlidir.
Np olarak 1import numpy
2import matplotlib.pyplot olarak plt
3 pandaları pd olarak içe aktarın
Seaborn'u sns olarak içe aktar
5from scipy.misc.pilutil import imread
6import matplotlib.cm cm olarak
7
8 # Bazı verileri içe aktarın
9deaths1 = pd.read_csv ("ölümler / kill_match_stats_final_0.csv")
10deaths2 = pd.read_csv ("ölümler / kill_match_stats_final_1.csv")
11
12 ölüm = pd.concat ()
13
14 # İlk 5 sütunu yazdırın, değişkenleri anlayın
15print (deaths.head (), '\ n', len (ölümler))
16
17 # İki çeşit harita
18miramar = ölümler
19erangel = ölümler
20
21 # Başlamadan 100 saniye önce ölüm ısı haritası
22position_data =
23 position_data'daki konum için:
24 miramar = miramar.apply (lambda x: x * 1000/800000)
25 miramar = miramar
26
27 erangel = erangel.apply (lambda x: x * 4096/800000)
28 erangel = erangel
29
30n = 50000
31mira_sample = miramar.sample (n)
32eran_sample = erangel.sample (n)
33
34 # miramar ısı haritası
35bg = imread ("miramar.jpg")
36fig, ax = plt.subplots (1,1, incir boyutu = (15,15))
37ax.imshow (bg)
38sns.kdeplot (mira_sample, mira_sample, n_levels = 100, cmap = cm.Reds, alpha = 0.9)
39
40 # erangel ısı haritası
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, alpha = 0.9)
Devam etmek mi yoksa dışarı çıkmak mı?
Odada kalmalı mıyım yoksa dışarı çıkıp düşmanla savaşmalı mıyım? Yarışmanın ölçeği farklı olduğu için, burada 90'dan fazla katılımcının yer aldığı yarışmanın verilerini seçiyoruz ve ardından tavuğu başarıyla yiyen son takım verisi olan takım yerleştirmeyi filtreliyoruz:
1. Önce tavuk yiyen takım tarafından öldürülen ortalama düşman sayısını hesaplayın Dört oyunculu modun oyun verileri burada hariç tutulmuştur, çünkü çok fazla kişiden oluşan bir takım ortalama sayıdaki eşitsizlik nedeniyle anlamsız hale gelecektir;
2. Bu nedenle, her tavuk grubunda sonuna kadar hayatta kalan üyeler tarafından öldürülen düşman sayısını gruplamayı ve saymayı düşünüyoruz, ancak burada veri istatistiklerinin hayatta kalma süresi değişkenlerinin ekibin nihai hayatta kalma süresine göre kaydedildiğini gördük, bu yüzden fikir başarısız oldu;
3. Son olarak, her tavuk takımındaki öldürme sayısının istatistiklerini sayın Tekli modun verileri burada hariç tutulmuştur, çünkü tek modun sayısı her gruptaki öldürme sayısıdır. Sonunda, hala 60 öldürme olduğu keşfedildi ve bir açıklık olup olmadığından şüphe ettim. Tavuk yemek istiyorsanız, yine de nişancılık pratiği yapmalısınız, sadece etrafta dolaşmak yeterli değil.
1 kitaplık (dplyr)
2 kitaplık (tidyverse)
3library (data.table)
4 kitaplık (ggplot2)
5pubg_full < -fread ("../ agg_match_stats.csv")
6 # Tavuk takımı tarafından öldürülen ortalama düşman sayısı
7attach (pubg_full)
8pubg_winner < -pubg_full% > % filtresi (team_placement == 1party_size < 4oyun_boyutu > 90)
9detach (pubg_full)
10team_killed < -aggregate (pubg_winner $ player_kills, by = list (pubg_winner $ match_id, pubg_winner $ team_id), EĞLENCE = "ortalama")
11team_killed $ death_num < -tavan (takım x $ kazandı)
12ggplot (data = team_killed) + geom_bar (mapping = aes (x = death_num, y = ..count ..), color = "steelblue") +
13 xlim (0,70) + labs (title = "PUBG Kazanan Takımın Öldürdüğü Ölüm Sayısı", x = "Ölüm Sayısı")
14
15 # Hayatta kalan son tavuk takımı tarafından öldürülen oyuncu sayısı
16pubg_winner < -pubg_full% > % filter (pubg_full $ team_placement == 1)% > % group_by (match_id, team_id)
17attach (pubg_winner)
18team_leader < -aggregate (player_survive_time ~ player_kills, data = pubg_winner, FUN = "max")
19detach (pubg_winner)
20
21 # Tavuk takımında öldürülen düşman sayısı
22pubg_winner < -pubg_full% > % filter (pubg_full $ team_placement == 1pubg_full $ party_size > 1)
23attach (pubg_winner)
24team_leader < -aggregate (player_kills, by = list (match_id, team_id), FUN = "max")
25detach (pubg_winner)
26ggplot (data = team_leader) + geom_bar (mapping = aes (x = x, y = ..count ..), color = "steelblue") +
27 xlim (0,70) + labs (title = "PUBG Kazananının Öldürdüğü Ölüm Sayısı", x = "Ölüm sayısı")
28
Hangi silah daha fazla oyuncu öldürdü?
İyi bir silah seçtiğin için şanslıysan, hangisini seçmekte tereddüt ediyor musun? Resimden M416 ve SCAR iyi silahlardır ve almaları nispeten kolaydır.Kar98k'in tek atışla öldürebilen iyi bir silah olduğu anlaşılmaktadır.Görece düşük sıralarda olmasının sebebi de bu silahın rekabette görece nadir olmasıdır. , Ve düşmana hemen vurmak güç gerektirir. Benim gibi 98k alan ve 8x lens takan ancak 1 dakikadan fazla kapatmayan oyuncular buna değmez.
1 # Silahları öldürme sıralaması
2death_causes = deaths.value_counts ()
3
4sns.set_context ('konuşma')
5fig = plt.figure (şekil boyutu = (30, 10))
6ax = sns.barplot (x = death_causes.index, y =)
7ax.set_title ('Ölüm Nedenlerinin Oranı')
8ax.set_xticklabels (death_causes.index, rotation = 90)
9
10 # En iyi 20 silah
11rank = 20
12fig = plt.figure (şekil boyutu = (20, 10))
13ax = sns.barplot (x = death_causes.index, y =)
14ax.set_title ('Ölüm Nedenlerinin Oranı')
15ax.set_xticklabels (death_causes.index, rotasyon = 90)
16
17 # İki haritayı ayrı ayrı alın
18f, eksen = plt.subplots (1, 2, figsize = (30, 10))
19axes.set_title ('Ölüm Nedenleri Oranı: Erangel (En İyi {))'. Format (sıralama))
20axes.set_title ('Ölüm Nedenleri Oranı: Miramar (Üst {))'. Format (sıralama))
yirmi bir
22counts_er = erangel.value_counts ()
23counts_mr = miramar.value_counts ()
yirmi dört
25sns.barplot (x = counts_er.index, y =, ax = eksenler)
26sns.barplot (x = counts_mr.index, y =, ax = eksenler)
27axes.set_ylim ((0, 0.20))
28axes.set_xticklabels (counts_er.index, rotation = 90)
29axes.set_ylim ((0, 0.20))
30axes.set_xticklabels (counts_mr.index, rotation = 90)
31
32 # Tavuk yemek ve silah arasındaki ilişki
33win = ölümler
34win_causes = win.value_counts ()
35
36sns.set_context ('konuşma')
37fig = plt.figure (şekil boyutu = (20, 10))
38ax = sns.barplot (x = win_causes.index, y =)
39ax.set_title ('Kazanın Ölüm Nedenleri Oranı')
40ax.set_xticklabels (win_causes.index, rotasyon = 90)
Takım arkadaşlarımın asistleri tavuk yememe yardım edecek mi?
Bazen dikkat etmeden yere serilirim Neyse ki ekip arkadaşlarımın beni kurtarması için hızlı süründüm. Burada, tavuğu başarıyla yiyen takımı seçin ve ekibin bir yardımı kabul etme olasılığı% 29'dur, bu nedenle takım arkadaşlarının asistleri hala çok önemlidir (artık beni domuz takım arkadaşları ile azarlamayın, sizi kurtarmamayı da seçebilirim .) Takım arkadaşları için 9 kurtarma bile var, sen de bir yeteneksin.
1 kitaplık (dplyr)
2 kitaplık (tidyverse)
3library (data.table)
4 kitaplık (ggplot2)
5pubg_full < -fread ("E: /aggregate/agg_match_stats_0.csv")
6attach (pubg_full)
7pubg_winner < -pubg_full% > % filtresi (team_placement == 1)
8detach (pubg_full)
9ggplot (data = pubg_winner) + geom_bar (mapping = aes (x = player_assists, y = ..count ..), fill = "# E69F00") +
10 xlim (0,10) + labs (title = "Desteklenen Oyuncu Sayısı", x = "Ölüm sayısı")
11ggplot (data = pubg_winner) + geom_bar (mapping = aes (x = player_assists, y = ..prop ..), fill = "# 56B4E9") +
12 xlim (0,10) + labs (title = "Desteklenen Oyuncu Sayısı", x = "Ölüm sayısı")
Düşman bana ne kadar yakınsa o kadar tehlikeli mi?
Verideki katil_konum ve kurban_konum değişkenlerinin Öklid mesafesini hesaplayın, ikisi arasındaki düz çizgi mesafesini ve devrilmiş olanın dağılımını kontrol edin, belirgin bir sağa eğik dağılım göstererek. Avlanmayı önlemek için hala yakındaki düşmanı gözlemlemeniz gerekiyor gibi görünüyor. Düşmanın nerede olduğunu bilmiyorum.
1 # python kodu: öldürme ve mesafe arasındaki ilişki
2import matematiği
3def get_dist (df): #distance işlevi
4 dist =
Df.itertuples () satır için 5:
6 alt küme = (row.killer_position_x-row.victim_position_x) ** 2 + (row.killer_position_y-row.victim_position_y) ** 2
7 alt küme ise > 0:
8 dist.append (math.sqrt (alt küme) / 100)
9 başka:
10 dist. Ekleme (0)
11 dönüş mesafesi
12
13df_dist = pd.DataFrame.from_dict ({'dist (m)': get_dist (erangel)})
14df_dist.index = erangel.index
15
16erangel_dist = pd.concat (, axis = 1)
17
18df_dist = pd.DataFrame.from_dict ({'dist (m)': get_dist (miramar)})
19df_dist.index = miramar.index
20
21miramar_dist = pd.concat (, axis = 1)
yirmi iki
23f, eksen = plt.subplots (1, 2, figsize = (30, 10))
24plot_dist = 150
25
26axes.set_title ('Etkileşim Dist .: Erangel')
27axes.set_title ('Etkileşim Dist .: Miramar')
28
29plot_dist_er = erangel_dist
30plot_dist_mr = miramar_dist
31
32sns.distplot (plot_dist_er, ax = eksenler)
33sns.distplot (plot_dist_mr, ax = eksenler)
Takımda ne kadar çok insan olursa, o kadar uzun yaşar mıyım?
Verilerdeki party_size değişkeninin hayatta kalma analizi, aynı hayatta kalma oranı altında, dört kişilik ekibin hayatta kalma süresinin iki kişilik ekibin ve ardından tek kişilik modunun hayatta kalma süresinin daha yüksek olduğunu gösteriyor, bu nedenle daha fazla insan var demek mantıksız değil.
Yolculuk daha uzun mu yaşıyor?
Ölüm nedeninin analizi, birçok oyuncunun da Bluezone'dan öldüğünü ortaya çıkardı.Herkes, saf bir şekilde, bandajları alarak zehirlenebileceklerini düşündü. Verilerdeki player_dist_ride değişkeninin hayatta kalma analizi, aynı hayatta kalma oranında, sürüş deneyimi olan oyuncuların hayatta kalma süresinin sadece yürüyen oyunculara göre daha yüksek olduğunu göstermektedir.Sadece bacaklarınıza güvenerek zehiri çalıştıramazsınız.
Adada ne kadar çok insan varsa, o kadar uzun yaşar mıyım?
Game_size değişkeninin hayatta kalma analizi, küçük bir oyunda hayatta kalmanın hala daha kolay olduğunu göstermektedir.
1 # R dil kodu aşağıdaki gibidir:
2 kitaplık (magrittr)
3 kitaplık (dplyr)
4library (hayatta kalma)
5 kitaplık (tidyverse)
6 kitaplık (data.table)
7 kitaplık (ggplot2)
8 kitaplık (hayatta kalan)
9pubg_full < -fread ("../ agg_match_stats.csv")
10 # Veri ön işleme, sürekli değişkenleri kategorik değişkenler olarak sınıflandırın
11pubg_sub < -pubg_full% > %
12 filtre (player_survive_time < % 2100 > %
13 mutate (drive = ifelse (player_dist_ride > 0, 1, 0))% > %
14 mutate (size = ifelse (game_size < 33, 1, ifelse (game_size > = 33 game_size < 66,2,3)))
15 # Canlı bir nesne oluşturun
16surv_object < -Surv (zaman = pubg_sub $ player_survive_time)
17fit1 < -survfit (surv_object ~ party_size, data = pubg_sub)
18 # Hayatta kalma oranını görselleştirin
19ggsurvplot (fit1, data = pubg_sub, pval = TRUE, xlab = "Oynatma süresi", surv.median.line = "hv",
20 legend.labs = c ("SOLO", "DUO", "SQUAD"), ggtheme = theme_light (), risk.table = "yüzde")
21fit2 < -survfit (surv_object ~ drive, data = pubg_sub)
22ggsurvplot (fit2, data = pubg_sub, pval = TRUE, xlab = "Oyun süresi", surv.median.line = "hv",
23 legend.labs = c ("yürüme", "yürüme sürücüsü"), ggtheme = theme_light (), risk.table = "yüzde")
24fit3 < -survfit (surv_object ~ boyut, veri = pubg_sub)
25ggsurvplot (fit3, data = pubg_sub, pval = TRUE, xlab = "Oynatma süresi", surv.median.line = "hv",
26 legend.labs = c ("küçük", "orta", "büyük"), ggtheme = theme_light (), risk.table = "yüzde")
Son zehir çemberi nerede görünecek?
Sonuna kadar hayatta kalma yeteneğine sahip olan karşımda, son zehir çemberinin nerede görüneceğini nasıl tahmin edebilirim? Agg_match_stats verileri tablosundan birinci sıradaki takımı bulun ve ardından gruplanmış verilerdeki en büyük player_survive_time değerini bulmak için match_id'e göre gruplayın ve ardından kill_match_stats_final tablosundaki verileri buna göre eşleştirin ve bu verilerde ikinci ölüm yerini alın ve arsa Passion Desert'taki zehir çemberinin, Picardo, San Martin ve Villa Bölgesi'nde görünme olasılığının yüksek olmasıyla önemli ölçüde daha yoğun olduğu bulundu. Jedi Adaları daha rastgeledir, ancak askeri üslerin ve dağların son zehirli çemberler olma ihtimalinin daha yüksek olduğu hala görülebilmektedir.
1 # Son Zehirli Daire Konumu
2import matplotlib.pyplot olarak plt
3 pandaları pd olarak içe aktarın
Seaborn'u sns olarak içe aktar
5from scipy.misc.pilutil import imread
6import matplotlib.cm cm olarak
7
8 # Bazı verileri içe aktarın
9deaths = pd.read_csv ("ölümler / kill_match_stats_final_0.csv")
10 # Toplu verileri içe aktarın
11aggregate = pd.read_csv ("aggregate / agg_match_stats_0.csv")
12print (aggregate.head ())
13 # Son üç kişinin nerede öldüğünü öğrenin
14
15team_win = toplam # İlk takım
16 # Her yarışmada ilk takım için en uzun yaşayan oyuncuyu bulun
17grouped = team_win.groupby ('match_id'). Uygula (lambda t: t)
18
19deaths_solo = ölümler
20deaths_solo_er = deaths_solo
21deaths_solo_mr = deaths_solo
yirmi iki
23df_second_er = deaths_solo_er.dropna ()
24df_second_mr = deaths_solo_mr.dropna ()
25print (df_second_er)
26
27position_data =
28 position_data'daki konum için:
29 df_second_mr = df_second_mr.apply (lambda x: x * 1000/800000)
30 df_second_mr = df_second_mr
31
32 df_second_er = df_second_er.apply (lambda x: x * 4096/800000)
33 df_second_er = df_second_er
34
35df_second_er = df_second_er
36 # erangel ısı haritası
37sns.set_context ('konuşma')
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, alpha = 0.7, shade = True)
42
43 # miramar ısı haritası
44bg = imread ("miramar.jpg")
45fig, ax = plt.subplots (1,1, incir boyutu = (15,15))
46ax.imshow (bg)
47sns.kdeplot (df_second_mr, df_second_mr, cmap = cm.Blues, alpha = 0.8, shade = True)
Veri adresini alın: https://www.kaggle.com/skihikingkevin/pubg-match-deaths#aggregate.zip.
Bu makale çok çaba harcadı. Beğeniler ve yeniden paylaşımlar, yazarı takdir etmek ve desteklemek içindir.
Son olarak herkese diliyorum:
Sorumluluk Reddi: Bu makale, veri analizinden aktarılan yazarlar: havuç sosunu öğrenmek için yetkili bir kişi tarafından yönetilir.
"Belgeler için çağrı"
CSDN kamu hesabı, "on milyonlarca teknik insanla büyüme" kavramını destekler. Teknik insanların ilk kez ilgilendiği endüstri odak olaylarını teknik insanların benzersiz bakış açılarından açıklamak için yalnızca "inek başlıkları" ve "konuşma" sütunlarını kullanmakla kalmaz, aynı zamanda "Teknik Başlıklar" sütunu, sektördeki popüler teknolojilerin ve uygulamaların derinlemesine bir yorumunu sunarak, tüm geliştiricilerin teknolojik trendlere ayak uydurmasına, uyanık bir teknolojik anlayışı sürdürmesine ve sektör eğilimleri ve teknolojileri hakkında daha kapsamlı bir anlayışa sahip olmasına olanak tanır.
Yüksek kaliteli makaleleriniz veya endüstrinin sıcak olayları, teknoloji trendleri hakkında içgörüler veya derinlemesine uygulama uygulamaları, senaryolar vb. Hakkında yeni içgörüleriniz varsa, lütfen gönderimler için CSDN ile iletişime geçin. İletişim: WeChat (guorui_1118, lütfen gönderim + ad + şirket pozisyonunu not edin), e-posta (guorui@csdn.net).