Hem kolay anlaşılır hem de gelişmiş grafikler oluşturabilmek, başarılı bir veri bilimci olmanın kilit noktalarından biridir. Görselleştirme, verinizin altında yatan hikâyeyi anlatmanın harika bir yoludur. Verideki ilişkileri öne çıkarır ve yalnızca sayılarla aktarılamayan, insan gözüyle fark edilebilen bilgileri açığa çıkarır. Peki veri analizi için görselleştirmeden daha iyi olan ne var? Etkileşimli görselleştirmeler!
Ne yazık ki, yeni başlayanlar için bu göz korkutucu görünebilir. Python ve R bu konuda size yardımcı olacak çok sayıda araç ve püf noktası sunar. Bu eğitimde sizi Altair ile tanıştıracağız. Altair ile yalnızca birkaç satır kodla ve çok kısa sürede anlamlı, şık ve etkili görselleştirmeler oluşturabileceksiniz. Hadi başlayalım!
Altair nedir?
Altair, istatistiksel görselleştirme için tasarlanmış bir Python kütüphanesidir. Beyan edici (declarative) bir yapıya sahiptir (bu tanıma ileride döneceğiz). Vega ve Vega-Lite üzerine kuruludur; bunlar bir görselleştirmenin görsel görünümünü ve etkileşimli davranışını bir JSON formatında tanımlamanıza olanak tanıyan görselleştirme dilbilgileridir.
Emredici ve Beyan Edici API'ler
Daha önce belirtildiği gibi, Python'un veri görselleştirme için elinizin altında harika araç ve kütüphaneleri zaten vardır ve birçoğu etkileşimli görselleştirmeyi de destekler. Peki Altair’i öne çıkaran nedir?
Cevap, diğer emredici API’lerle karşılaştırıldığında beyan edici doğasında yatıyor.
Emredici API’lerde odak noktanızı 'ne yapmak istediğinizden' ziyade 'bir şeyi nasıl yapacağınıza' vermeniz gerekir. Görselleştirme oluşturmak için gereken koda daha çok kafa yorar, eksen sınırları, boyut, döndürme, lejantlar vb. çizim adımlarını tek tek belirtirsiniz.
Bir veri bilimci olarak Altair, zamanınızı ve enerjinizi gerekli kod yerine verinizi anlamaya, analiz etmeye ve görselleştirmeye yönlendirmenize olanak tanır. Yani verinizi ve beklediğiniz çıktıyı (görselleştirmenin sonunda nasıl görünmesi gerektiğini) tanımlarsınız; Altair gerekli düzenlemeleri sizin için otomatik olarak yapar.
Kurulum
Bu eğitimde Vega veri kümelerinden bir örnek veri kümesini kullanacağız. Altair’i Vega veri kümeleriyle birlikte kurmak için konsol penceresine şunları yazın:
Ardından Jupyter Notebook’a geçip Altair’i içe aktararak başlayabilirsiniz. Jupyter Notebook hakkında daha fazla bilgi için DataCamp’in Jupyter Notebook Kesin Kılavuzuna göz atın.
Veri
Artık Altair’i ve Vega veri kümesini kurduğumuza göre, biraz veri yükleme zamanı. Şu içe aktarmalarla başlayın:
Altair'deki veri yapısı Pandas DataFrame etrafında şekillendiği için, Altair’de veriyi tıpkı Pandas DataFrame’leriyle çalışır gibi işleyebilirsiniz.
Altair veriyi dahili olarak bir Pandas DataFrame biçiminde saklasa da veriyi içeri aktarmanın birden fazla yolu vardır:
bir Pandas DataFrame olarak
bir Data veya ilişkili nesne olarak (ör. UrlData, InlineData, NamedData)
JSON veya CSV biçimli bir metin dosyasına işaret eden bir URL dizesi olarak
geo_interface’ı destekleyen bir nesne olarak (ör. Geopandas GeoDataFrame, Shapely Geometrileri, GeoJSON Nesneleri)
Filmler Veri Kümesi
Bu eğitimde Vega veri kümesindeki Movies Dataset ile çalışacağız. Bu veya filmlerle ilgili benzer veri kümeleri, özellikle Öneri Motorları bağlamında, veri bilimi topluluğunda oldukça popülerdir. Ancak biz yalnızca Altair ile görselleştirmeler kullanarak veri analizi yapacağız.
Veri kümesi; filmin adı, Amerika’da ve dünya genelinde elde ettiği hasılat, yapım bütçesi, tür, IMDB ve Rotten Tomatoes puanları gibi bilgileri içerir. Tüm sütunlarla ilgilenmeyeceğiz; bunun yerine Altair’in bir görselleştirme aracı olarak nasıl çalıştığını daha iyi anlamak için yalnızca birkaçını kullanacağız.
Hadi veri kümesini alıp daha iyi anlamak için basit birkaç analiz yapalım.
# Vega Veri Kümesini içe aktarmafrom vega_datasets import data as vega_data
movies_df = pd.read_json(vega_data.movies.url)# Elde ettiğimiz verinin türünü kontrol ediyoruzprint("movies_df is of the type: ",type(movies_df))print("movies_df: ", movies_df.shape)Altyapı:
movies_df is of the type:<class'pandas.core.frame.DataFrame'>movies_df:(3201,16)Altyapı:
Gördüğünüz gibi, movies_df aslında bir pandas DataFrame’idir ve her biri 16 özellik bilgisi (sütun) içeren 3201 film (satır) barındırır. DataFrame içindeki verilere göz atalım.
Şimdi pandas içindeki to_datetime işlevini kullanarak Release_Date sütununu gerçek bir tarihe dönüştürecek ve ardından buradan 'year' değerini çıkaracağız. Daha sonra bu yeni oluşturduğumuz sütunu görselleştirmelerimizde kullanacağız.
Yukarıdaki kod, Altair’in Jupyter notebook içinde satır içi (inline) olarak render edilmesini sağlar; böylece oluşturduğumuz şekilleri görebiliriz. Daha fazla sorunla karşılaşırsanız, Altair’in sorun giderme sayfasına bakın.
Veriye ilk bakışta, filmin yapımına ne kadar para harcandığı (Production_Budget) ile filmin gerçekte ne kadar kazandığı (Worldwide_Gross) arasındaki ilişkiyi görmek ilginç olacaktır. Bu değerleri X ve Y eksenlerinde göstereceğiz.
Ancak veri kümesi nispeten büyük — odak noktamız Altair ile denemeler yapmak olduğundan, şimdilik yalnızca birkaç veri noktasıyla çalışacağız. Veri kümemizde belirli bir yılda kaç film olduğuna bakalım ve odaklanmak istediğimiz bir yıl seçelim.
Ancak tek başına grafik, yalnızca üzerinde çalışmak istediğiniz veriyi belirtir; ardından veriye ne yapmak istediğinizi sağlamanız gerekir. İşte burada işaretler (marks) devreye girer.
İşaretler (Marks)
Mark özelliği, verinin grafikte nasıl temsil edileceğini belirtmenizi sağlar. Altair’in sunduğu temel mark özellikleri şunlardır:
Mark özelliği için, DataFrame’deki her değerin grafikte bir nokta (daire) olarak işaretlenmesini istiyoruz. Dolayısıyla şöyle yazacağız:
Veriyi ve nasıl temsil edileceğini belirledikten sonra — nerede temsil edileceğini de belirtmek isteriz. Yani konumları, boyutu, rengi vb. ayarlamak gerekir. Burada da encoding’leri kullanırız. Dolayısıyla şunu elde ederiz:
Harika değil mi? Çok da bir şey yapmamıza gerek kalmadı — biraz terminolojiye aşina olup hepsini bir araya getirdik. Artık 2000 yılındaki filmlerin harcanan tutara karşılık dünya çapında elde ettikleri hasılatı gösteren bir grafik var.
Bu grafiği daha ilginç hale getirelim. Tüm noktaların aynı boyutta dairelerle işaretlenmesi yerine, işaretleyicileri ilgili US_Gross değerleri kadar büyük (veya küçük) yapmayı deneyelim. Bunun için Size özelliğini tanıtıyoruz. Yani dairenin boyutu büyüdükçe ABD gişe gelirleri de büyüktür. Ayrıca daire işaretleyicilerini sadece kenar çizgisiyle değil, renkle dolduralım; bunun için mark_point() özelliğine bir argüman ekleyeceğiz.
Şimdi yalnızca dört satırda her filmin bütçelerini betimleyen bir grafiğimiz var. Eksik olan ne? RENK!
Ancak sırf olsun diye rastgele bir renk eklemeyeceğiz! Grafiği ilginç tutmak için veri kümesinde bulunan bir bilgiyi daha ekleyeceğiz: Major_Genre. Filmin her türüne Color özelliğini kullanarak kendi rengini verecek ve renge biraz saydamlık katmak için OpacityValue ekleyeceğiz.
Bu haliyle güzel ama yeterince iyi değil! Grafikte dolaşabilsek ve veri noktasının temsil ettiği filmle ilgili ayrıntıları da görebilsek harika olurdu. Tooltip tam da bunu yapmamızı sağlıyor...
Havalı değil mi? Ama durun, daha fazlasını yapalım. Altair’i ilk etapta kullanmak istememizin nedeni neydi? Etkileşimli görselleştirmeler yapabilmekti. Tooltip, veri noktalarının üzerine geldiğinizde zaten bir miktar etkileşim sağlar. Ancak elimizdekilere basit bir interactive() işlevi daha ekleyelim...
Bu küçük kod parçasını eklemek, belirli bir alana yakınlaştırmanıza ve eksen değerlerini otomatik olarak ayarlayarak ilgi duyduğunuz bölgeye odaklanmanıza olanak tanır. Ancak grafiğinize ekleyebileceğiniz daha birçok gelişmiş etkileşimli özellik var. Bunlardan birine göz atabiliriz...
Artık verimizi sergilemek için havalı bir grafiğimiz var. Tüm veri noktalarını grafiğimize getirelim. Ama durun, tüm veri noktalarını tek bir görselleştirmeye koymak fazla olmaz mı? Ayrıca daha önce oluşturduğumuz Year değerine göre de ayırmak istiyoruz. Bunu yapmak için gelişmiş bir selection özelliğini kullanacağız.
Burada add_selection özelliğini kullanarak grafiğe tekli seçim özelliği olarak select_year’ı tanıtıyor, ardından transform_filter() uygulayarak dönüşümü gerçekten grafiğe uyguluyoruz.
Koddaki başka bir yeni eklemeyi fark ettiniz mi? Tooltip içine yerleştirilen 'Q' ve 'N'. Bunlar veri tipini belirtir: N-Nominal (kategorik veri), Q-Kantitatif (sayısal veri), O-Sıralı (ordinal veri) veya T-Zamansal (zaman noktaları veya aralıkları).
Veri kümesindeki en eski ve en yeni yıla bakın.
print("The oldest year is: ", movies_df["Year"].min())print("The latest year is: ", movies_df["Year"].max())Altyapı:
The oldest year is:1928
The latest year is:2046Altyapı:
Gördüğünüz gibi 'Select_Year' çubuğunu sürüklediğinizde, 1928 - 1967 yıllarında temsil edilen film sayısı çok az. Ayrıca 2018’den sonra ve elbette 2046’ya kadar kaydedilmiş film verisi yok. Yıllardaki aralığı ve adım boyutlarını belirtmek için binding_range() özelliğini kullanabiliriz.
Gerçek bir projede bu tür bulgular önemlidir ve veri toplama aşamanızda veya süreç içinde bir yerdeki hatalara işaret edebilir. Hatalarla etkili biçimde başa çıkmanız gerekir. Bu, veri ön işleme sırasında önemli bir adımdır. Bu hayati adımlara giriş için pandas ile Veri Hazırlama yazısına göz atın.
Hadi yılları ayarlayalım ve bununla birlikte nihai görselleştirmemiz hazır...
Bu eğitimde Altair ile tanıştınız. Birkaç satır kodla, verinizdeki hikâyeyi daha etkili biçimde anlatmanıza yardımcı olan, güzel ve etkileşimli grafikler oluşturabileceğinizi gördünüz. Bu eğitim Altair’in gücünü ve potansiyelini göstermeyi amaçlıyor. Altair hakkında daha fazla bilgi için resmi web sitesine gidin.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Hem kolay anlaşılır hem de gelişmiş grafikler oluşturabilmek, başarılı bir veri bilimci olmanın kilit noktalarından biridir. Görselleştirme, verinizin altında yatan hikâyeyi anlatmanın harika bir yoludur. Verideki ilişkileri öne çıkarır ve yalnızca sayılarla aktarılamayan, insan gözüyle fark edilebilen bilgileri açığa çıkarır. Peki veri analizi için görselleştirmeden daha iyi olan ne var? Etkileşimli görselleştirmeler!
Ne yazık ki, yeni başlayanlar için bu göz korkutucu görünebilir. Python ve R bu konuda size yardımcı olacak çok sayıda araç ve püf noktası sunar. Bu eğitimde sizi Altair ile tanıştıracağız. Altair ile yalnızca birkaç satır kodla ve çok kısa sürede anlamlı, şık ve etkili görselleştirmeler oluşturabileceksiniz. Hadi başlayalım!
Altair nedir?
Altair, istatistiksel görselleştirme için tasarlanmış bir Python kütüphanesidir. Beyan edici (declarative) bir yapıya sahiptir (bu tanıma ileride döneceğiz). Vega ve Vega-Lite üzerine kuruludur; bunlar bir görselleştirmenin görsel görünümünü ve etkileşimli davranışını bir JSON formatında tanımlamanıza olanak tanıyan görselleştirme dilbilgileridir.
Emredici ve Beyan Edici API'ler
Daha önce belirtildiği gibi, Python'un veri görselleştirme için elinizin altında harika araç ve kütüphaneleri zaten vardır ve birçoğu etkileşimli görselleştirmeyi de destekler. Peki Altair’i öne çıkaran nedir?
Cevap, diğer emredici API’lerle karşılaştırıldığında beyan edici doğasında yatıyor.
Emredici API’lerde odak noktanızı 'ne yapmak istediğinizden' ziyade 'bir şeyi nasıl yapacağınıza' vermeniz gerekir. Görselleştirme oluşturmak için gereken koda daha çok kafa yorar, eksen sınırları, boyut, döndürme, lejantlar vb. çizim adımlarını tek tek belirtirsiniz.
Bir veri bilimci olarak Altair, zamanınızı ve enerjinizi gerekli kod yerine verinizi anlamaya, analiz etmeye ve görselleştirmeye yönlendirmenize olanak tanır. Yani verinizi ve beklediğiniz çıktıyı (görselleştirmenin sonunda nasıl görünmesi gerektiğini) tanımlarsınız; Altair gerekli düzenlemeleri sizin için otomatik olarak yapar.
Kurulum
Bu eğitimde Vega veri kümelerinden bir örnek veri kümesini kullanacağız. Altair’i Vega veri kümeleriyle birlikte kurmak için konsol penceresine şunları yazın:
conda paket yöneticisini kullanıyorsanız, eşdeğeri şöyledir:
Ardından Jupyter Notebook’a geçip Altair’i içe aktararak başlayabilirsiniz. Jupyter Notebook hakkında daha fazla bilgi için DataCamp’in Jupyter Notebook Kesin Kılavuzuna göz atın.
Veri
Artık Altair’i ve Vega veri kümesini kurduğumuza göre, biraz veri yükleme zamanı. Şu içe aktarmalarla başlayın:
Neden Pandas içe aktarılıyor?
Altair'deki veri yapısı Pandas DataFrame etrafında şekillendiği için, Altair’de veriyi tıpkı Pandas DataFrame’leriyle çalışır gibi işleyebilirsiniz.
Altair veriyi dahili olarak bir Pandas DataFrame biçiminde saklasa da veriyi içeri aktarmanın birden fazla yolu vardır:
Filmler Veri Kümesi
Bu eğitimde Vega veri kümesindeki Movies Dataset ile çalışacağız. Bu veya filmlerle ilgili benzer veri kümeleri, özellikle Öneri Motorları bağlamında, veri bilimi topluluğunda oldukça popülerdir. Ancak biz yalnızca Altair ile görselleştirmeler kullanarak veri analizi yapacağız.
Veri kümesi; filmin adı, Amerika’da ve dünya genelinde elde ettiği hasılat, yapım bütçesi, tür, IMDB ve Rotten Tomatoes puanları gibi bilgileri içerir. Tüm sütunlarla ilgilenmeyeceğiz; bunun yerine Altair’in bir görselleştirme aracı olarak nasıl çalıştığını daha iyi anlamak için yalnızca birkaçını kullanacağız.
Hadi veri kümesini alıp daha iyi anlamak için basit birkaç analiz yapalım.
Gördüğünüz gibi,
movies_dfaslında bir pandas DataFrame’idir ve her biri 16 özellik bilgisi (sütun) içeren 3201 film (satır) barındırır. DataFrame içindeki verilere göz atalım.Sütun değerleri şunlardır:
Şimdi pandas içindeki
to_datetimeişlevini kullanarakRelease_Datesütununu gerçek bir tarihe dönüştürecek ve ardından buradan 'year' değerini çıkaracağız. Daha sonra bu yeni oluşturduğumuz sütunu görselleştirmelerimizde kullanacağız.Artık sütun değerlerini kontrol ederseniz, ilgili film için yıl değerlerini içeren
Yearadlı yeni bir sütun göreceksiniz.Şimdi bazı grafikler oluşturmaya geçeceğiz. Ama bunu yapmadan önce, şu kod parçasını çalıştırın:
Yukarıdaki kod, Altair’in Jupyter notebook içinde satır içi (inline) olarak render edilmesini sağlar; böylece oluşturduğumuz şekilleri görebiliriz. Daha fazla sorunla karşılaşırsanız, Altair’in sorun giderme sayfasına bakın.
Veriye ilk bakışta, filmin yapımına ne kadar para harcandığı (
Production_Budget) ile filmin gerçekte ne kadar kazandığı (Worldwide_Gross) arasındaki ilişkiyi görmek ilginç olacaktır. Bu değerleri X ve Y eksenlerinde göstereceğiz.Ancak veri kümesi nispeten büyük — odak noktamız Altair ile denemeler yapmak olduğundan, şimdilik yalnızca birkaç veri noktasıyla çalışacağız. Veri kümemizde belirli bir yılda kaç film olduğuna bakalım ve odaklanmak istediğimiz bir yıl seçelim.
Odağımızı 2000 yılına verelim ve yalnızca bu yıla ait verileri içeren
movies_2000adlı yeni bir dataframe oluşturalım. 188 satır (film) içermelidir.Şimdi ilk görselleştirmemize doğru ilerleyeceğiz. Bunu yapmak için Altair’in formatına biraz daha derinlemesine bakalım.
Grafikler
Grafikler Altair’de temel bir nesnedir ve tek bir argüman — bir dataframe — alır. Bir grafiği şu şekilde tanımlarız:
Ancak tek başına grafik, yalnızca üzerinde çalışmak istediğiniz veriyi belirtir; ardından veriye ne yapmak istediğinizi sağlamanız gerekir. İşte burada işaretler (marks) devreye girer.
İşaretler (Marks)
Mark özelliği, verinin grafikte nasıl temsil edileceğini belirtmenizi sağlar. Altair’in sunduğu temel mark özellikleri şunlardır:
Mark özelliği için, DataFrame’deki her değerin grafikte bir nokta (daire) olarak işaretlenmesini istiyoruz. Dolayısıyla şöyle yazacağız:
Kodlamalar (Encodings)
Veriyi ve nasıl temsil edileceğini belirledikten sonra — nerede temsil edileceğini de belirtmek isteriz. Yani konumları, boyutu, rengi vb. ayarlamak gerekir. Burada da encoding’leri kullanırız. Dolayısıyla şunu elde ederiz:
Tüm bunları bir araya getirip ilk görselleştirmemizi oluşturmak için ayrıntıları ekleyelim:
Harika değil mi? Çok da bir şey yapmamıza gerek kalmadı — biraz terminolojiye aşina olup hepsini bir araya getirdik. Artık 2000 yılındaki filmlerin harcanan tutara karşılık dünya çapında elde ettikleri hasılatı gösteren bir grafik var.
Bu grafiği daha ilginç hale getirelim. Tüm noktaların aynı boyutta dairelerle işaretlenmesi yerine, işaretleyicileri ilgili
US_Grossdeğerleri kadar büyük (veya küçük) yapmayı deneyelim. Bunun içinSizeözelliğini tanıtıyoruz. Yani dairenin boyutu büyüdükçe ABD gişe gelirleri de büyüktür. Ayrıca daire işaretleyicilerini sadece kenar çizgisiyle değil, renkle dolduralım; bunun içinmark_point()özelliğine bir argüman ekleyeceğiz.Şimdi yalnızca dört satırda her filmin bütçelerini betimleyen bir grafiğimiz var. Eksik olan ne? RENK!
Ancak sırf olsun diye rastgele bir renk eklemeyeceğiz! Grafiği ilginç tutmak için veri kümesinde bulunan bir bilgiyi daha ekleyeceğiz:
Major_Genre. Filmin her türüne Color özelliğini kullanarak kendi rengini verecek ve renge biraz saydamlık katmak için OpacityValue ekleyeceğiz.Bu haliyle güzel ama yeterince iyi değil! Grafikte dolaşabilsek ve veri noktasının temsil ettiği filmle ilgili ayrıntıları da görebilsek harika olurdu. Tooltip tam da bunu yapmamızı sağlıyor...
Havalı değil mi? Ama durun, daha fazlasını yapalım. Altair’i ilk etapta kullanmak istememizin nedeni neydi? Etkileşimli görselleştirmeler yapabilmekti. Tooltip, veri noktalarının üzerine geldiğinizde zaten bir miktar etkileşim sağlar. Ancak elimizdekilere basit bir
interactive()işlevi daha ekleyelim...Bu küçük kod parçasını eklemek, belirli bir alana yakınlaştırmanıza ve eksen değerlerini otomatik olarak ayarlayarak ilgi duyduğunuz bölgeye odaklanmanıza olanak tanır. Ancak grafiğinize ekleyebileceğiniz daha birçok gelişmiş etkileşimli özellik var. Bunlardan birine göz atabiliriz...
Artık verimizi sergilemek için havalı bir grafiğimiz var. Tüm veri noktalarını grafiğimize getirelim. Ama durun, tüm veri noktalarını tek bir görselleştirmeye koymak fazla olmaz mı? Ayrıca daha önce oluşturduğumuz
Yeardeğerine göre de ayırmak istiyoruz. Bunu yapmak için gelişmiş bir selection özelliğini kullanacağız.Burada
add_selectionözelliğini kullanarak grafiğe tekli seçim özelliği olarakselect_year’ı tanıtıyor, ardındantransform_filter()uygulayarak dönüşümü gerçekten grafiğe uyguluyoruz.Koddaki başka bir yeni eklemeyi fark ettiniz mi? Tooltip içine yerleştirilen 'Q' ve 'N'. Bunlar veri tipini belirtir: N-Nominal (kategorik veri), Q-Kantitatif (sayısal veri), O-Sıralı (ordinal veri) veya T-Zamansal (zaman noktaları veya aralıkları).
Veri kümesindeki en eski ve en yeni yıla bakın.
Gördüğünüz gibi 'Select_Year' çubuğunu sürüklediğinizde, 1928 - 1967 yıllarında temsil edilen film sayısı çok az. Ayrıca 2018’den sonra ve elbette 2046’ya kadar kaydedilmiş film verisi yok. Yıllardaki aralığı ve adım boyutlarını belirtmek için
binding_range()özelliğini kullanabiliriz.Gerçek bir projede bu tür bulgular önemlidir ve veri toplama aşamanızda veya süreç içinde bir yerdeki hatalara işaret edebilir. Hatalarla etkili biçimde başa çıkmanız gerekir. Bu, veri ön işleme sırasında önemli bir adımdır. Bu hayati adımlara giriş için pandas ile Veri Hazırlama yazısına göz atın.
Hadi yılları ayarlayalım ve bununla birlikte nihai görselleştirmemiz hazır...
Bu eğitimde Altair ile tanıştınız. Birkaç satır kodla, verinizdeki hikâyeyi daha etkili biçimde anlatmanıza yardımcı olan, güzel ve etkileşimli grafikler oluşturabileceğinizi gördünüz. Bu eğitim Altair’in gücünü ve potansiyelini göstermeyi amaçlıyor. Altair hakkında daha fazla bilgi için resmi web sitesine gidin.