Last chance! 50% off DataCamp Premium
Sale ends in
Yapabildiğim için verileri elektronik tablolarda manipüle eden biriyim. Geçen hafta, ekip liderim proje kontrol listelerini güncellemeyen çalışanların bir listesini gönderdi ve ben hemen dosyayı açıp tablolar oluşturmaya, çalışan bazında özet istatistikler çıkarmaya başladım; sonra da ona çalışan bazında kırılımı olan bazı özet veriler gönderdim. Muhtemelen onu biraz çileden çıkardım ama elimde değil; veri analizi ve Excel’i seviyorum. 2001’den beri Excel kullanıyorum ve birkaç ay öncesine kadar veri düzenleme, analiz ve görselleştirme için tercih ettiğim araç oydu. Verileri düzenlemek, hesaplama ve analiz yapmak için harika ve basit bir veritabanı olarak bile işe yarıyor. Kişisel bütçe, harcama ve antrenman takibinden Orduda çok sayfalı personel mevcudu analiz raporlarına kadar her şey için kullandım. Excel çoğu durumda gayet iş gördü ve başka seçenek de yoktu. Güvenlik nedeniyle VBA, Python ya da herhangi bir otomasyon aracına erişimim yoktu. Veri kümeleri de onun kaldırabileceği kadar küçüktü.
Bugünden yaklaşık bir yıl önce, Cerner’ın Abilities Lab’inde yazılım performans testlerinde Sistem Mühendisi olarak çalışmaya başladım. Yaptığım işin kısa versiyonu: yazılım performans testi. Müşterilerimize sunulmadan önce yeni ve güncellenmiş yazılımları test ediyoruz ve her şeyi test ediyoruz: Windows ve Unix CPU ve bellek, Java Sanal Makinesi performansı, arka uç servislerde ve Kullanıcı Arayüzünde yanıt süreleri, Veritabanı performansı, mevcut yazılımımız üzerindeki etkisi, ağ performansı ve aklınıza gelebilecek hemen her şey. Hiçbir test tek bir makineyle sınırlı değil; çoğu zaman Windows ve Unix cihazlarının (fiziksel ve sanal), uç kullanıcı sistemlerinin ve sunucuların bir kombinasyonu söz konusu. Yer aldığım projelerden birinde verilerin toplanması gereken 20’den fazla sistemimiz vardı.
Bir projenin ne kadar sürdüğüne bağlı olarak incelenmesi, analiz edilmesi ve raporlanması gereken 50’ye kadar test olabiliyor. Tüm bu veriler, yazılım geliştirme ekibinin tüketmesi için dahili bir Jira proje sayfasına yüklenen nihai bir test sonuç raporunda özetlenmek zorunda. Çoğu veriyi toplayabilen kurum içi bazı özel araçlarımız var ama hepsini değil; ayrıca bu araçların ürettiği raporlar, benim yaptığım türde testler için gerektiği kadar özelleştirilemiyor. Bu raporları yazmak ve teslim etmek için tercih ettiğim araç Excel’di; neden olmasın? Excel’de güçlü bir geçmişe sahibim ve o zamanlar onunla her şeyi yapabileceğime inanıyordum.
Verileri kurum içi araçlarımızdan Excel’e aktarma zahmetli sürecinin ayrıntılarına girmeyeceğim ama Excel’de oldukça yetkin olmama rağmen benim için saatler alan bir süreçti. Verilerin kopyalanması, temizlenmesi, sıralanması ve filtrelenmesi gerekiyordu. Formülleri nasıl yazarsam yazayım, neredeyse her zaman ayarlanmaları, ardından proje boyunca kaydedilen test sayısına, düğümlere ve çeşitli yanıt sürelerine bağlı olarak tabloların ve grafiklerin düzenlenmesi gerekiyordu. Sonrasında, test adlarını düzeltmek için bul ve değiştir işlemleri, her sayfadaki her satırda sayı biçimlerinin ve vurgulamaların doğru olduğundan emin olmak ve genel veri temizliği geliyordu. Şablonlar, makrolar ve VBA betikleri yazmayı denedim. Yaptığım hiçbir şey, her testte hatırı sayılır bir temizlik gerektirmeden değişken sayıda testi, cihazı ve performans metriğini kaldırabilecek kadar uyarlanabilir değildi. Süreci hızlandıran bir şablon oluşturmayı başardım ama yine de işleri yoluna koymak yarım gün alıyordu.
O şablona giren, gülünç derecede karmaşık formülleri ve VBA betiklerini düşününce hâlâ biraz gülüyorum. Java sürümlerini güncellediğimizde ve kurum içi araçlarımız günlükleri doğru işleyemediğinde işler daha da kötüleşti. Excel’e yüklenebilen bir JSON dosyasına günlükleri ayrıştırmada harika iş çıkaran GC Easy adlı harici bir araca geçtik. JSON dosyaları PowerQuery ile yüklenebiliyor ama süreç yavaş ve zahmetli; bir de milyon satırı aşan 50+ JSON dosyasını ayrıştırmaya çalıştığınızda Excel’i sık sık çökertiyorsunuz. Buna, süreci otomatikleştirmenin bir yoluna da ihtiyacım olduğu gerçeğini ekleyin; bunun için iyi bir yol bulamadım. Verileri Excel’e yüklemeyi başardığımda bile görselleştirmeler (zaman içinde Heap Size’ı temsil eden yığılmış alan grafikler) donuyor ve daha fazla çöküşe neden oluyordu. O sorunu çözebilsem bile JSON dosyaları sadece başlangıçtı.
Verileri elle kopyalamak, temizlemek ve analiz etmek hatalara yol açacaktır. Hepimiz insanız; bir şeyleri gözden kaçırır, dikkatimizi dağıtır, yanlış tıklarız. Sürecim işe yaramıyordu ve ekibin tamamı Excel’de kapsamlı bir eğitimden geçmedikçe de kimse için işe yaramayacaktı. Belki askeri geçmişimden, belki de sadece kişilik yapımdan ötürü, süreçleri iyileştirmenin ve daha verimli hale getirmenin yollarını sürekli ararım; bu yüzden tüm süreci nasıl yalınlaştırabileceğimi düşünmeye başladım.
O zamanlar kurum içi aracımızın bir API’si ve çalışan bir dışa aktarma işlevi yoktu. Kopyala/yapıştır yapmadan doğrudan veri çekmenin bir yolu yoktu. Sonraki düşüncem doğrudan kaynağa gitmek oldu: testteki her cihazdan log dosyaları. Bu da bir test dizininde ve içindeki çok sayıdaki alt dizinde arama yapmayı, farklı biçimlerdeki birden fazla dosya türünden veri çekmeyi, tüm hesaplamaları yapmayı ve ihtiyaç duyduğum biçimde, görselleştirmeler ve koşullu biçimlendirme dahil olmak üzere, Excel’e yazmayı gerektiriyordu.
Ayrıştırmam gereken dosya türleri .txt, .csv, .json (çeşitli yapılarda), .xml (çeşitli yapılarda), .dat, .html ve bazı veriler bir Oracle Veritabanından çekilmeliydi. Değişken bir dizin yapısını, sayısı ve yapısı değişen dosyaları, kapanış etiketi olmayan .xml dosyalarını ve 10 GB’ı aşan dosya boyutlarını hesaba katmam gerekiyordu. Sürecin ayrıca kolay takip edilebilir, mümkün olan en üst düzeyde otomatikleştirilmiş ve milyonlarca satır veriyi kaldırabilir olması gerekiyordu. Excel bütün bunlar için kesinlikle ihtiyaçlarımı karşılamayacaktı; bu yüzden bazı popüler BI araçlarına yöneldim: PowerBI ve Tableau. Bu bir BI araçları incelemesi olmasın; kısaca söylemek gerekirse bunlar kategorik olarak ihtiyaçlarımı karşılamadı.
Peki Excel’in yapabildiği her şeyi yapabilen, Excel’de rapor yazabilen ve sıraladığım tüm gereksinimleri karşılayabilen bir araç nedir?
Excel’e biraz olsun aşinaysanız, Python için pandas’ı kesinlikle seveceğinizi düşünüyorum. pandas, Excel’in işlevselliğini Python dilinin gücüyle bir araya getirir. Excel sütunları pandas Series olur, tablolar DataFrame’e dönüşür ve karmaşık formüller Python fonksiyonlarına evrilir. pandas, Excel’in yapabildiği her şeyi yapabilir:
Excel düz dosyaları okumada fena değildir ve PowerQuery ile bazı .xml ve .json dosyalarını okumak ve veritabanlarını sınırlı ölçüde sorgulamak mümkündür. Belgeleri okursanız her şeyi okumak için mükemmel araçmış gibi görünür ama gerçek öyle değil. Arayüz hantal ve alışması zaman alıyor, süreci otomatikleştirmenin iyi bir yolu yok ve veri temizliği dişçiye gitmek kadar keyifli. Öte yandan pandas, veri okumayı çocuk oyuncağına çevirir.
Bu Python veri manipülasyonu kütüphanesi, çok sayıda kaynaktan veriyi yerel olarak okuyabilir. Tam liste için dokümantasyon sayfasına göz atın. Gerçekten harika olan şu ki, pandas yerel olarak okumuyorsa bile, bunu okuyacak bir Python paketi bulma ya da sorunu çözecek birkaç satır kod yazma şansınız yüksektir. Bu konuyu derinlemesine ele almak için DataCamp’in Python’da Veri Alma ders serisine ve diğer kurslara göz atın.
Daha önce bahsettiğim tüm dosya türlerini, kapanış etiketi olmayan o .xml dosyaları da dahil, pandas ile okuyabildim. Biraz yaratıcı doğal dil işleme ile ham .txt dosyalarından tüm test meta verilerini de çekebiliyorum; Excel ile yapamadığım bir şeydi çünkü bu dosyalar veri için biçimlendirilmemiş. Şu anda kullandığım betiğin sürümü yalnızca okumam gereken her dosya türünü okumakla kalmıyor, birkaç satır Python koduyla GC Easy’nin API’sine istek atarak Java Garbage Collection .json günlüklerini otomatik olarak almamı da sağlıyor; Excel ile asla yapamayacağım bir şeydi. Excel ile karşılaştırması nasıl? pandas kullanarak bir test dizininin tamamını arayıp tüm verileri yalnızca birkaç dakikada tertemiz DataFrame’ler halinde geri alabiliyorum. 10 GB’ı aşan o günlük dosyalarını bile rahatça kaldırıyor. Bu çok büyük bir boyut gibi görünmeyebilir ama o büyüklükte bir şeyi Excel ile okumaya iyi şanslar.
Hatta bu ham düz dosyaları okumaktan, çok terabaytlık bir Oracle Veritabanından veri çekmeye geçmeye başladım. Bu süreci Excel ile karşılaştıramam; onunla kısa bir deneme dışında Excel’de veritabanı sorgularından kaçındım. Hatırladığım kadarıyla tekrar yaşamak istemeyeceğim bir deneyimdi. Python üzerinden bağlanmak ise SQLAlchemy ile çocuk oyuncağı. Bağlanmak kolay ve sorgu hızı Excel’e tur bindiriyor. Konuya harika bir giriş için Python’da İlişkisel Veritabanlarına Giriş’e göz atın.
Görselleştirmeler bir yana, verilerin temiz, düzenli, biçimlendirilmiş ve etiketlenmiş tablolarda olması gerektiğine kesinlikle inanıyorum. Pandas’ın verileri temizlemek ve güzel biçimlendirilmiş tablolar sunmak için harika seçenekleri var. Resmi Pandas sitesindeki Stil sayfası, DataFrame biçimlendirme için favori rehberim. Birkaç satır kodla ondalık basamakları belirleyebilir, sayıları biçimlendirebilir, satır ve koşullu biçimlendirme ekleyebilir ve süreç sonsuz sayıda belgeye tutarlı şekilde uygulanabilir. Veri temizliğinin belirli kısımlarını, veri boyutu ne olursa olsun otomatikleştirebilmek bana sayısız saat kazandırdı.
Hakkını vermek gerekirse, verileri Excel’de de temizleyebilirsiniz. Bu amaç için yerleşik pek çok aracına sahip ve ihtiyacım olan tüm verileri (eninde sonunda) içine yüklediğim her seferinde yaptığım da buydu. Aşırı sayıda fare tıklaması içeren, büyük ölçüde manuel, yine hata yapmaya çok açık ve zaman tüketen bir süreçti. Excel’in sunduğu tüm araçlarda son derece yetkin olsanız bile hatalar kaçınılmaz. Formüller, makrolar ve VBA betikleriyle (birazdan geleceğim) hızlandırmanın yolları var ama mükemmel olmaktan çok uzak.
Burada çok net olacağım: veri analizinde pandas, Excel’i açık ara geride bırakır. İkisini adil bir şekilde karşılaştırmanın bir yolu yok. Excel’de verileri analiz etmek için formüller yazabilir ve bazı yerleşik işlevleri kullanabilirsiniz; yıllarca ben de aynısını yaptım ve işimi gördü. Excel’de veri analizi üzerine bazı dersler verdim, çeşitli durumlarda kullanımını savundum ve araç olarak Excel’in seçildiği bir istatistik dersi aldım. Kullanılamaz demiyorum. Ancak onu pandas ile kıyaslamak, kağıt-kalemle hesap makinesini kıyaslamak gibi; aynı ligde değiller.
Geçen yıl Ağustos’ta Kaggle, Python’un Veri Bilimi’nde R’yi geçtiğini bildirdi ve Aralık’ta Quartz, pandas’ı ‘Veri Bilimi’ndeki en önemli araç’ olarak nitelendirdi. Sanırım konu hakkında daha fazla bir şey söylememe gerek yok.
2012’de hâlâ aktif görevdeydim ve Texas, El Paso’daki Fort Bliss’te rutin bir dişçi randevusuna gitmem gerekiyordu. Koltuğa oturduğumda dişçi yirmilik dişlerimin çekilmesi gerektiğini söyledi ve zamanı olduğu için yalnızca lokal anestezi ile işlemi oracıkta yaptı. Berbat bir deneyimdi ve birkaç gün ağrı çektim. Bunu tekrar yaşamayı Excel Makrolarıyla veya Visual Basic ile çalışmaya tercih eder miydim? Sanırım daha fazla diş çektirmeyi seçerdim.
Bu alanlarda son derece yetkin pek çok kişi var ve zekice yazılmış VBA betikleriyle yapılan harika şeyler gördüm; onları takdir ediyorum. Ben açıkça hayranı değilim ve özellikle Python kullanabilecekken kimseye de önermiyorum. O kadar popüler bir VBA alternatifi ki Microsoft, Python’u Excel’e resmi bir betik dili olarak eklemeyi düşünüyor.
Her şeyi Python’da yapmak istesem de içinde bulunduğum koşullarda bu pek pratik değil. Şimdilik, analizimin sonuçları hâlâ Excel’de teslim edilmek zorunda. Neyse ki bunun için OpenPyXl ve XlsxWriter gibi paketler var. DataFrame’leri Excel’de formül, makro veya VBA betiği içermeyen, son derece profesyonel raporlara dönüştürmek için XlsxWriter’ı her gün kullanıyorum. Hatta görselleştirme bile yapıyor.
Hazır veri görselleştirmeden söz etmişken...
Hiçbir zaman bir veri görselleştirme meraklısı olmadım. Verileri satır ve sütunlarda, ilgi alanlarının vurgulandığı şekilde görmeyi, arada bir çubuk grafik eklemeyi tercih ederdim. Excel, verileri görselleştirmek için bol seçenek sunarak fena iş çıkarmaz ama benim bilgi düzeyim yığılmış alan, çubuk ve çizgi grafik yapmayla sınırlıydı. Her biri için verileri seçer, “Grafik Ekle”ye tıklar ve ihtiyacım olanı bulurdum. Sonrasında biraz filtreleme yapar, bir başlık eklerdim; o kadar.
Açık konuşmak gerekirse, Excel’de grafikleri özelleştirmek için bir sürü seçenek var ama süreç oldukça zor olabilir ve öğrenme eğrisi diktir. Excel’de grafik yapmayı hâlâ sevmiyorum ama Python ile durum farklı.
Artık veri görselleştirmeye gönülden inanıyorum ve analize yönelik harika görselleştirmeler üretmeye çok çaba harcıyorum. DataCamp’te dersler almaya başladığımda ve Matplotlib ile Bokeh gibi paketlerle tanıştığımda, verileri görselleştirmenin gerçek gücünü ve amacını anlamaya başladım. Matplotlib ile görselleştirmeler, pandas içinden veya pyplot’u içe aktararak kolayca yapılabilir. pyplot içindeki olası görselleştirmeler listesi en hafif ifadeyle oldukça geniştir ve bir grafiğin neredeyse tüm yönleri özelleştirilebilir. Python ile Veri Görselleştirmeye Giriş, Matplotlib ile mükemmel görselleştirmeler yapmayı gösteriyor.
Matplotlib ne kadar harika olsa da görselleştirmelerimde biraz daha etkileşime ihtiyaç duydum. Bir görselleştirmede seçim yapma, yakınlaştırma, üzerine gelme, sıralama ve filtreleme imkânı istedim ve kesinlikle react.js ya da D3 öğrenmek istemiyordum. Python öğrenmek bugün de devam eden bir zevkti ama JavaScript benim alanım değil. Neyse ki Python, Bokeh ve Dash gibi paketlerle yine imdadıma yetişiyor.
Bokeh, Anaconda tarafından desteklenir ve D3.js ile Python’u birleştirerek tamamen etkileşimli grafikler üretir; bu grafikler bağımsız html belgeleri olarak dışa aktarılabilir, web sayfalarına gömülebilir veya bir Bokeh Sunucusu üzerinde çalıştırılabilir. Matplotlib’den daha dik bir öğrenme eğrisi olsa da ürettiği görselleştirmelerin emeğe değdiğine katılacağınızı düşünüyorum; sadece Galeriye bakın, kendiniz görün. Bokeh konusunda planladığım kadar yetkin değilim ama Bokeh ile Etkileşimli Veri Görselleştirme’nin ilk dersinden beri favori görselleştirme paketlerimden biri oldu. Bokeh ihtiyaçlarınıza uymuyorsa Plotly ekibinden Dash var.
Dash, D3 yerine React.js’i kullanan, Python için bir başka ücretsiz ve açık kaynak görselleştirme aracıdır. Dash’i yakın zamanda keşfettim ve bir satır Javascript öğrenmeden gerçekten harika, etkileşimli görselleştirmeler üretiyor. Dash ile Bokeh’i karşılaştırmak zor çünkü ikisi de harika görseller üretebiliyor. Şimdilik Dash ile yaşadığım tek takılma, görselleştirmeleri yalnızca bir Dash sunucusunda çalıştırabilmiş olmam. Onları bağımsız belgelere, html sayfalarına veya Jupyter not defterlerine gömemedim. Yine de galerilerinde görebileceğiniz gibi büyük bir potansiyel taşıyor.
2014 yazında, o dönem çalıştığım organizasyonda bir sorunumuz vardı. Kara Kuvvetleri Yedeği, topluca “Hazırlık” denilen bir dizi sayı tarafından yönetilir. Bu, belirli bir organizasyona atanan personelin ne kadarının göreve çağrılabileceğini gösteren yüzde değerdir. Sayı; sağlık, diş, eğitim, fiziksel uygunluk ve bir dizi başka veriyi içeren çeşitli kategorilerle belirlenir. Burada bu sayıyı veremem ama bizimkisi gereken seviyenin oldukça altındaydı.
Çözümüm, çeşitli personel veritabanlarından derlenen, birden çok tablo ve grafikten oluşan çok sayfalı bir Excel raporuydu. Bu bilgiler; kurumla ilgili özet verileri, her ölçüm kategorisinde her bireye ilişkin bilgileri ve o hafta yürütülen mevcut faaliyetlere dayanarak önümüzdeki üç ayda sayının nerede olacağına ilişkin projeksiyonları içeriyordu. Aslında büyük bir başarıydı; ‘Hazırlık’ oranımız belirgin şekilde arttı ve çok uzun süre öyle kaldı.
İşe yaradı ama tam bir karmaşaydı. Pazartesi sabahları erken gelir, bilgileri tüm farklı kaynaklardan elle çeker, sonra verileri temizler ve o haftanın raporuna kopyalardım. Ardından en az bir saat rapordaki hataları kontrol eder ve daha fazla veri temizliği yapardım. Daha sonra veritabanlarında henüz olmayan güncellemeleri ekleyebilmeleri için raporun idari personele e-postayla gönderilmesi gerekirdi. Bu raporu göndermek ortalama üç gün sürüyordu. İnsan/saat maliyeti aşırı ve gereksizdi.
Biraz Python betiklemesiyle, tüm verileri çeşitli kaynaklardan otomatik olarak çekebilir, her şeyi pandas DataFrame’lerde birleştirir, tüm raporu Excel’e yazdırır ve idari personele otomatik olarak e-posta ile gönderebilirdim. En güzel yanı, bunun Pazartesi sabahı saat sıfır birde çalışacak şekilde zamanlanabilmesi ve sayısız saatlik işi kurtarmasıydı. Linux sistemlerde Python betiklerini belirli zamanlarda çalışacak şekilde crontab’e ekleyerek zamanlamak fazlasıyla kolay. Mevcut işimde o kadar çok sistemle çalışıyoruz ki crontab işin olmazsa olmazı ve görev zamanlama temel bir beceri. Dolayısıyla her gece yarısı veri çekip bir rapora yüklemeniz gerekse, Linux sistemde crontab en doğru yol olurdu.
Linux hayranıyım ama işimin aslan payını Windows’ta yapıyorum ve tercih ettiğim işletim sistemi o. Windows ile Windows Görev Zamanlayıcı, Schtask.exe veya Powershell üzerinden görev zamanlamak için çeşitli seçenekleriniz var. Bu seçeneklerin herhangi biriyle betiklerinizi, sistem kaynaklarının en serbest olduğu en az yoğun saatlerde çalışacak şekilde zamanlayabilir veya bir veri kaynağının güncellendiğini bildiğiniz anın hemen sonrasına ayarlayabilirsiniz. Keşke birkaç yıl önce sahip olsaydım dediğim bir seçenek.
Excel’i yıllardır kullandıktan sonra Python öğrenmek, hayatımı sadece bir penseyle geçirdikten sonra bir gün yepyeni aletlerle dolu bir takım çantasını keşfetmek gibiydi. Her biri harika ve kendi kullanım alanı var ama diğerlerinin hepsinden daha çok kullandığım bir araç varsa, o da Jupyter Notebooks. Python’da yazdığım her şey ya doğrudan kullanım için ya da daha sonra bağımsız bir Python betiği olarak kullanılmak üzere bir Jupyter Not Defteri’nde yazıldı. Jupyter; fonksiyon yazmak, kod test etmek, keşif amaçlı veri analizi yapmak ve hatta nihai bir ürün sunmak için harika bir araç. Hatta (bunun gibi) blog yazıları yazmak veya Github Pages ile kullanmak için bile kullanılabilir. DataCamp’teki eğitimlere göz atarsanız, birçoğunun aynı şekilde yazıldığını görebilirsiniz.
Excel hakkında konuşurken neden bahsediyorum?
Jupyter Not Defterleri, analizinizin çıktısı olarak Excel’in yerini alabilir. Kodunuzu yazabilir, pandas DataFrame’lerini, görselleştirmeleri ve sonuçları tek bir sayfada gösterebilir ve bunu tek tıkla HTML’e dönüştürebilirsiniz. Kişisel hedeflerimden biri tamamen Excel’den kopmak ve tamamlanmış raporları göndermek için bunun yerine Jupyter Not Defterlerini kullanmak. JupyterLab piyasaya sürüldüğünden beri bu seçenek daha da uygulanabilir hale geldi. Buna bir de widget’ları ekleyince bir Jupyter Not Defteri’ni etkileşimli bir veri analizi uygulamasına dönüştürebilirsiniz.
Excel’i hâlâ her gün kullanıyorum; çalıştığım kurum da dahil olmak üzere pek çok organizasyonda kökleşmiş harika bir araç. Hemen herkes ona aşina ve bilgi tüketmek ve basit veri analizi yapmak için kullanabiliyor. Birçok kişinin bilmediğini düşündüğüm şeyse, aynı analizi Pandas ve Python ile yapmanın yalnızca daha verimli değil, daha da kolay olduğudur.
Hedefim yılı bitirmeden Excel’den tamamen kopmak ve bunu bu yazıda bahsettiğim araçlarla yapabileceğim. Bir gecede uzman olmazsınız ama aynı şey Excel için de geçerli. Umarım bunu okuduktan sonra siz de Excel’den sıyrılıp bahsettiğim yeni araçları denemek için ilham almışsınızdır. Daha verimli, daha üretken olmanızı ve nihayetinde iş akışınızı hızlandırmanızı sağlayacaktır.
Python kursları
Kurs
Kurs
Kurs
blog
Dario Radečić
15 dk.

blog
Abid Ali Awan
14 dk.
Eğitim
Adel Nehme
Eğitim
Kurtis Pykes
8 dk.