Pazarlamacılar İçin Veri Türleri: Sayılar, Diziler ve Booleanlar
Yayınlanan: 2017-08-10Not: Bu blog yazısı, Sr. Web Analistimiz Adrian Palacios tarafından yazılan bir dizinin üçüncüsüdür ve pazarlamacılara programlama dili Python'u yüklemek için gereken bilgileri ve talimatları sağlamak üzere tasarlanmıştır. Kaçırmış olmanız durumunda, Adrian'ın ilk gönderisi pazarlamacıların neden bunu yapmayı düşünmeleri gerektiğini açıklıyor ve ikinci gönderisi Python'un nasıl kurulacağını açıklıyor.
Programlamayı öğrenmeye başladığımda “veri türleri” kavramıyla çok uğraştım. Her zaman tartışılan ilk konulardan biriydi, ama aynı zamanda en soyut olanlardan biriydi. Anlamamaktan kaynaklanan hüsranla, genellikle veri türleriyle ilgili herhangi bir tartışmayı atlar ve kendi kendime “Bunların ne önemi var?” diyerek mantıklı hale getirirdim. Ancak programlamayı günlük işimin bir parçası haline getirdikten birkaç yıl sonra, veri türleri (yavaşça) anlamlı olmaya başladı.
Veri türleri nelerdir?
Veri türleri, Python ile yapabileceklerinizi (ve yapamayacaklarınızı) yöneten bir dizi kuraldır. Gerçek dünyada her gün benzer kısıtlamalarla karşılaşıyorsunuz: Restoranın sadece nakit kabul ettiği bir yemek için kredi kartıyla ödeme yapmayı deneyin. Kano veya kano kullanmak yerine nehirde bisiklet sürmeyi deneyin. Veya şeker yerine tuzlu bir kek pişirmeyi deneyin. Gerçekten istersen bunları deneyebilirsin, ama sonuçtan memnun olacağından şüpheliyim.
Benzer şekilde, programlamayı pişirme olarak düşünüyorsanız, veri türleri herhangi bir Python kodunun temel bileşenleridir; tıpkı yumurta, un, tereyağı, kabartma tozu ve şekerin bir pasta yapmak için temel bileşenler olması gibi. Ya da belki bir turta istersin? Daha az un kullanın, kabartma tozunu tamamen bırakın, belki bir meyve dolgusu ekleyin ve işte, turta yapma yolundasınız. Bunun nereye gittiğini görüyor musun? Her bir veri türünün neler yapabileceğini ve bunların nasıl karıştırılacağını anlamak, daha iyi bir programcı olmanın anahtarıdır.
Python'da sadece birkaç yaygın veri türü:
Diğer türlere ayrılan sayılar, örneğin:
Tamsayılar: 0, 1, 2, 3
Yüzer: 0.0, 1.0, 2.5, 3.145
Dizeler: 'Farklı Düşün', 'Netflix ve Chill'
Booleans: Doğru, Yanlış
Python'da daha birçok veri türü vardır, ancak şimdilik bu üçüne odaklanacağız.
Bu yazıda Python'daki temel veri türleri ile yapabileceğiniz bazı şeyleri ve veri türlerinin neden önemli olduğunu öğreneceksiniz.
Tecrübelerime göre, bu, herhangi bir “Nasıl Yapılacağını Öğrenin” kitabının/videosunun/çevrimiçi kursunun en sıkıcı kısmı olma eğilimindedir, ancak veri türleri programlama için çok önemli olduğundan, bu gönderiyi atlamamanızı şiddetle tavsiye ederim.
sayılar
Python'daki iki ana sayı türü tam sayılar (tam sayılar) ve kayan sayılardır. Şamandıralar ondalık sayılar olarak düşünülebilir, ancak bazı büyük farklılıklar vardır ve bunlardan biri daha sonra tartışılacaktır.
Sayılarla yapabileceğimiz en bariz şey… matematik! Python'da matematik yapmak için kullanılan bazı özel karakterler şunlardır:
Bu temel işlemlerle artık birkaç senaryo üzerinde çalışabiliriz.
Senaryo 1
İçerik ekibiniz, blogun iki hafta önce 80.000 sayfa görüntüleme oluşturduğunu ve bu hafta 105.000 sayfa görüntüleme oluşturduğunu bildirdi; sayfa görüntülemelerindeki haftalık artış nedir? Yapabileceğiniz yüzde değişimini hesaplamak için bunu hatırlayın (Yeni Sayı – Eski Sayı) ÷ Eski Sayı:
Bu pek doğru görünmüyor. Neden? Her iyi matematikçi gibi Python da yazdığımız ifadedeki işlem sırasını takip etti. Burada Python'a gerçekten istediğimiz sırayı söylemek için parantez kullanabiliriz:
Bu daha iyi. Unutmayın, bir yüzdeye bakıyoruz, bu durumda ondalık basamağı iki basamak sağa kaydırmak bize ihtiyacımız olanı verecektir. Görünüşe göre bloga gelen trafik haftadan haftaya %31,25 arttı.
Senaryo 2
Geniş formatlı banner ve video reklamları içeren özel bir kampanya yürütmek için çevrimiçi bir yayıncıyla çalışıyorsunuz. Yayıncı, paketin sabit maliyetinin 15.000 ABD Doları olduğunu ve 550.000 gösterim oluşturmasını beklediğini belirten bir teklif gönderdi; Bu teklifi diğer seçeneklerle daha iyi karşılaştırmak için BGBM'yi hesaplamak istiyorsunuz.
BGBM'yi bulmak için Kampanya Maliyeti ÷ (Toplam Gösterim Sayısı ÷ 1000) formülünü kullanırız:
Bu sefer işlem sırasını doğru aldık; kampanyanın BGBM'si yaklaşık 27,27 $ gibi görünüyor.
Python'u bu şekilde kullanmak gerçekten sıkıcıdır, özellikle uzun formüller yazarken yalnızca tek bir ölçüm döndürür. Bu örnekler basit olsa da, yüz binlerce (hatta milyonlarca) veri satırına daha karmaşık matematiksel işlemleri uygulamanın yolları vardır.
Python'un daha eski sürümleri (sürüm 2.7 ve daha düşük), 1 ÷ 3'ü bölmek gibi bir kayan nokta ile sonuçlanacak tamsayıları bölmeye geldiğinde bazı garip cevaplar verir. Bu iki örnekte, tam sayıları böldük ve sonunda kayan noktalarla bitirdik. Python'un daha yeni bir sürümünü kullanmanın büyüsünün bir parçası olan sorunsuz. Şu soruyu soruyor: neden ondalık basamaklı sayılara ondalık sayılar yerine kayan noktalar denir? Jackie Kazil ve Katharine Jarmul, Data Wrangling With Python adlı kitaplarında harika bir örneğe sahiptir: birçok programlama dilinde 0.1 + 0.2, 0.3'e eşit değildir. Kendiniz deneyin: terminalinize 0.3 yazın, ardından 0.1 + 0.2 ile takip edin
Garip, değil mi? Mark Lutz, Learning Python adlı kitabında bu tuhaflık hakkında daha fazla ayrıntıya giriyor, ancak pazarlamacıların genellikle sayıları milyonuncu derecede hesaplamaları gerekmediğinden, bu konuyu tam olarak anlamak kritik değildir ve sadece var olduğunu bilmek yeterince iyidir. Ama gerçekten merak ediyorsanız, işte daha fazlasını açıklayan bazı gönderiler:
- Floating Point Demystified, Bölüm 1
- Kayan Nokta Demystified, Bölüm 2
Teller
Dizeler, tırnak içine alınmış karakterler olarak düşünülebilir. Bu, bayt dizileri, Unicode, ASCII, vb. arasındaki nüansları göz ardı ettiği için fazlasıyla basitleştirilmiş bir tanımdır, ancak şimdilik bu tür ayrıntılara girmenin gereksiz olduğunu düşünüyorum.
Tırnak içine alınmış karakterler nasıl düzgün bir şekilde girilir? Birkaç farklı yoldan daha fazlası olduğu ortaya çıktı. Örneğin, tutarlı kaldığınız sürece, çoğu zaman tek tırnak mı yoksa çift tırnak mı kullanmanız önemli değildir:
Üçüncü dizede çift tırnak ile başlayıp tek tırnak ile bitirerek bir hatayla karşılaştık. Muhtemelen tek ve çift tırnakları bilerek karıştırmazsınız, ancak dikkat edilmesi gereken nokta kesme işaretleridir:
Çift tırnak içine alınan ilk dizenin kesme işaretini iyi işlediğine, ikinci dizenin ise işlemediğine dikkat edin. Niye ya? Python ikinci tek alıntıyla karşılaştığında dizenin bitmesini bekledi, ancak harfler devam etti. Cümleyi kesmek hatayı susturur:
Ancak bir cümlenin yalnızca bir kısmına sahip olmak yararlı değildir. Gerçekten, gerçekten tek tırnak kullanmak istiyorsanız, bir seçenek kesme işaretinden "kaçmaktır". Bunu, cümlenizdeki kesme işaretinin hemen önüne bir ters eğik çizgi (\) koyarak yapabilirsiniz. Bu, Python'a bir sonraki karaktere özel bir şekilde davranmasını söyler:

Kesme işaretinden kaçmak, aynı dizede tek tırnak ve kesme işareti kullanmaya devam etmemize izin verdi.
Python'da karakter dizileri oluşturmanın başka bir yolu daha vardır: üçlü tırnak. Çok satırlı bir dize yazdığınızda, sonraki satırı başlatmak için enter tuşuna basmanız gerektiğine dikkat edin; bu aynı zamanda Terminal'i yeni satırınızın solunda …: gösterecek şekilde değiştirir. Birden çok kod satırı yazmaya başladığımızda bu tekrar görünecektir.
Son olarak, dizede bazı tuhaf karakterler fark edebilirsiniz: \n. Bu, bilgisayara yeni bir satır girdiğiniz yeri söyler; dizeyi yeniden yazdırmanız gerekiyorsa ve biçimlendirme konusunda kesin olmak istiyorsanız bu yararlıdır.
Tamam, şimdi tüm bu zamanı bir dizgeyi nasıl düzgün bir şekilde gireceğimize bakarak harcadık (Biliyorum, değil mi? Bu kadar basit bir şey için çok fazla iş…), eğlenceli kısma geçmenin zamanı geldi: dizeleri manipüle etmek.
Dizeler için çok, çok daha fazla yöntem vardır; kalıp eşleştirme ve dilimleme gibi daha sonra ele alacağımız başka konular da var. Temel bilgiler ortadan kalktığında, gerçek bir örnek üzerinden çalışalım.
Senaryo 1
Diyelim ki AdWords'e yüklenmesi gereken yeni bir kopyanız var, ancak kopyanın tamamı küçük harfli ve başlıkların 30 karakterlik sınırın içinde olup olmadığından emin değilsiniz. Uzunluğu kontrol edelim ve başlık vakasına “paris'e en ucuz uçuşlar” başlığını yazdıralım:
İlk örnek teknik olarak bir fonksiyon, ikincisi ise bir yöntemdir. Şu anda umursadığımız tek şey, her birinin farklı şekilde yazılması: bir fonksiyonla önce “len(”, sonra dizenin kendisini ve son olarak da son parantez “)” yazıyoruz. İyi haber şu ki, başlık AdWords tarafından zorunlu kılınan 30 karakterlik sınırın içinde.
Ardından, yöntemle önce dizeyi yazarız, ardından kapanış alıntısından sonra (boşluksuz!) .title() öğesini ekleriz.
Son olarak, kendinize "Aynı formüller Excel'de mevcutken bunu neden Python'da yapıyorum?" diye soruyor olabilirsiniz. Bu adil bir nokta.
Başlıkları karıştırmak aptalca bir örnek olsa da, konunun açık olduğunu umuyorum: Python ile metni işlemek için birçok seçenek var. Ve önceki senaryoda olduğu gibi, BGBM'leri veya yüzde değişimini hesaplayarak, binlerce karakterlik metni yalnızca birkaç satır kodla değiştirebilmek, kullanışlı olması için çok güçlü bir araçtır.
Örneğin, bunun beni kurtardığı en büyük baş ağrısı, Google Analytics'ten milyonlarca satır URL'yi temizlemek. Bu alıştırmanın ikinci noktası, gelecekte başka acılardan kurtarabilecek bir şeye işaret etmektir: Excel veya Google Dokümanlar'da formülleri nasıl kullanacağınızı biliyorsanız, programlamayı anlamada zaten bir adım öndesiniz demektir. Excel'den Python'a çevrilecek pek çok benzerlik var.
Boole değerleri
Python'daki iki ana boole, Doğru ve Yanlış'tır. Anlamları gerçekten açıktır: Doğru, doğru anlamına gelir ve Yanlış, yanlış anlamına gelir.
Python'da mantığı kullanmaya başlayana kadar, booleanları bir benzetmeyle açıklamak en iyisidir. Bir Facebook video reklam kampanyası oluşturduğunuzda, hangi reklam öğesinin kullanılacağına karar vermeniz gerekir. Marka bilinirliğini hedefleyen popüler yeni video mu yoksa net bir harekete geçirici mesajı olan eski ama savaşta test edilmiş videoya mı bağlı kalmalısınız? Neyi başarmaya çalıştığınıza bağlı, değil mi? Benzer şekilde, bilgisayarınıza hangi yolu izleyeceğinizi söylemek için bir mantık oluşturmanız gereken bir nokta olacaktır ve boolean'lar bu görevi gerçekleştirmenin bir yoludur.
Python'da boolean gibi davranabilen başka nesneler de vardır, ancak şimdilik sadece True ve False'ı tanıtmak yeterli olacaktır. Bu konuyu gelecekteki bir gönderi ile daha derinlemesine ele alacağız.
Ne olmuş?
Bu yazının başında, veri türlerini ilk öğrenmeye çalıştığımda sürecin sıkıcı ve konu sıkıcı olduğundan bahsetmiştim. Tıpkı lise geometri dersindeki sabırsız gencin bir öğretmene "Bu gereksiz saçmalığı ne zaman bilmem gerekecek?" sorusuyla kışkırtması gibi.
Veri türleriyle ilgili tüm bu Kuralları gözden geçirmenin anlamsız olduğunu hissettim. Ancak kuralları takdir etmeye başladım çünkü bu Kuralları çiğnemeye çalıştığınızda (çoğu zaman) bir hata ortaya çıkıyor. Sorumlu bir programcıysanız ve kodunuzu önceden test ediyorsanız, bu hatalarla karşılaşmanız sizi kodunuzda gerçekten önemli olduğunda kritik hatalar yapmaktan kurtarabilir. Hataların ortaya çıkabileceği bazı yolları keşfedelim.
Sayı türleriyle matematik uyguladığınız senaryolarda, bu hesaplamaları yaparken virgül kullanılmadığını fark ettiniz mi? Muhtemelen sayıları virgülle (veya Avrupalı arkadaşlarımız için ondalık sayılarla) yazmaya alışkınsınız, ancak bunu Python'da denerseniz, bazı garip davranışlarla karşılaşacaksınız:
hmmm; hiç de beklediğin gibi değil. Bu sayıya virgül koyarak, bilmeden bir “tuple” oluşturduk; Şu anda bir demetin ne olduğunu bilmek gerekli değildir, ancak virgülün sayıyı 500 ve 0'a böldüğünü görmek önemlidir, ki bu beş yüz binden çok farklıdır.
Bu örnek ayrıca kod yazmanın çok önemli bir yönünü de vurgulamaktadır: tek bir yanlış yazılmış karakter büyük sorunlara neden olabilir. Kodu düzeltmek ilk başta zordur, ancak pratikle daha iyi olacaksınız. Beklenmeyen sonuçlar veya hatalar paniğe neden olmaz; korkutucu gelebilir, ancak genellikle yalnızca çeviride bir şeylerin kaybolduğu anlamına gelir.
Muhtemelen beklediğiniz bir kural, bir tamsayı ve bir dize eklemeye çalışırken bir hata almanızdır:
Ve haklı olurdun. İkinci kod satırında '1' dizgisine 1 tamsayısını eklemeye çalıştık ve bu bir hatayla sonuçlandı. Kendi kendinize “Bu çok kötü bir örnek; biri ne zaman bir dizgeye tamsayı eklemeye çalışır ki?” Bir dize olarak kaç API'nin sayı döndürdüğüne şaşıracaksınız. Bunu yapmak için çok iyi nedenler var, ancak bir API ile uğraşırken, bir sayının sayı olacağını varsaymak güvenli bir bahis değildir. Harika bir örnek, en yeni Google Analytics Raporlama API'sidir. Bir rapor istediğinizde Google Analytics'in size verdiği verilerin ekran görüntüsüne bakın. Sürpriz! Tüm sayılar ("değerler" alanlarına bakın) tırnak içine alınır.
Bu tür şeylere bir İngiliz anahtarı atıyor, değil mi? Öyle olurdu, ancak API belgelerini önceden okursanız, bu sorunu bekliyor olacaksınız. Neyse ki Python'da bize yardımcı olabilecek int() işlevi gibi bazı araçlar da var:
'1' dizesini int() işlevinin içine yerleştirerek Python'a bunu bir tamsayı gibi ele almak istediğimizi söylüyoruz; şimdi bu sayıları toplayabilir ve hayatınıza devam edebilirsiniz.
Bunlar, veri türlerinin Python'da neler yapabileceğinizi nasıl belirleyebileceğine dair birkaç olasılıktır, ancak aynı zamanda bu sorunları çözmenin neredeyse her zaman bir yolu olduğunu da gösterirler. Veri türleri hakkında herhangi bir sorunuz varsa lütfen bana twitter'dan ulaşın.