İyi şanslar, bu gece "tavuk yeme" şeklindeki doğru duruşun kilidini açmak için Python nasıl kullanılır?

İ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).

4 yıllık en iyi takım Meizhou antrenmanı, ilk kampüs milli takımı ordu olmak üzere
önceki
20 yıllık duygu araba modeli Audi TT 20. yıl dönümü hatıra modelini başlattı
Sonraki
Google, Apple ve Amazon kısa süre önce satın alınan şirketler, sıradaki siz misiniz?
Borgward'ın güncellenmiş BX7 casus fotoğrafları, elektronik vardiya kolları ile ortaya çıktı / resmi olarak 2019 sonbaharında listelendi
Bahar Şenliği sırasında ücretsiz otoyol nasıl sayılır? Bilmiyorsam yine de ödemek zorundayım!
Pekin "Sanyuanli" Sebze Pazarı: Sebze pazarında, kalkınmaya ve dünyaya ayak uydurmaya odaklanan İnternet ünlü mağazaları
Hyundai Genesis GV80'in iç mekanı metal dokunmatik kaydırma tekerleği ile ortaya çıktı / 2019'un ikinci yarısında tanıtıldı
Tek vergi çağı geliyor Bir kız arkadaş bulmana yardım etmesi için Python kullanmadın mı?
Facebook'un gizli sunucusu aslında internetin askeri köklerini mi gizler?
Liu Qiangdong, herkes@
Morning Post: Anautovic nerede?
Ligde arka arkaya altı galibiyet! Bayern, manyetik kartların çift çınlamasıyla Hoffenheim'ı 3-1 deplasmanda yendi
Geely MPV Jiaji Interior Interiors Resmi Resmi Yayınlandı: 3 Koltuk Düzeni, 3 Çeşit Güç
Yüksek kaliteli bir dadı arabasını beklemek zorunda mısınız? Elfa'nın yanı sıra seçilecek bunlar var
To Top