Adım Adım Veri Görselleştirme
Veri bilgi yolunda elimizdeki en küçük parçadır. Araştırma konumuza dair bilgi elde etmek için gözlemleyerek, ölçerek, sayarak nitelikleri tanımlayacak değerler elde ederiz ve bunlara veri deriz. Bu verileri anlamlandırma süreçlerinden sonra elde ettiğimiz bilgilerle aksiyonlar alır ve mevcut sorunlarımızla daha iyi başa çıkabiliriz.
Sorun derken direkt başa dert konulardan bahsetmiyorum; belki hastalığın tedavisinde daha iyi bir yol izlememizi, belki sıradaki İzban’a (İzmir Banliyö Sistemi) binecek kişinin oturacağı koltuğun olasılığını bulmamızı, belki de o en çok sevdiğimiz çikolatanın sınıf arkadaşlarımızca tercih edilme yüzdesini öğrenmemiz gibi çözümler sağlıyor olur. Veri deyince akla binlerce satırlık, aylarca tutulmuş sayısal değerler gelmemeli sadece; sorulara verilen evet – hayır cevapları, attığımız bir tweet veya duraktaki anlık insan sayısı da bir veridir. Bu verileri belli bir amaca yönelik ve düzenli olarak derledikten sonra o konuyla ilgili uzun yollar katedilmektedir. Verilerden elde ettiğimiz bilgiler bir yana, bunları sunuşumuz ve ilgili kişilere sayılara hızlıca görünmeyenleri etkili bir şekilde göstermemiz de çok önemlidir. Her kesimden ilgililere bilgileri ortak bir dille sunma amacımızda ise veri görselleştirme teknikleri imdadımıza yetişmektedir.
Bir görsele bakınca saniyesinde resmin ayrıntılarını fark etmeye başlıyoruz. Belki de bazen total sayıları bilmeden durumun ciddiyeti hakkında bilgi sahibi olmamızı sağlıyor görselleştirme teknikleri. Uç noktalar, kıvrımlar, renkler ve diğer ayrıntılar… Çoğu yerde konunun uzmanları tarafından dahi sayısal değerlerden daha fazla ilk vurucu etkiyi, detayları görmeyi sağlıyor görseller. Evet sayısal değerleri görmek çok daha fazlasını sunuyor fakat etkili görseller tüm sayılarda boğulmadan hızlıca doğru noktaya odaklanmayı sağlıyor.
Veri Görselleştirme Yol Haritası
Bu veri görselleştirme serimizin ilk yazısı. Bu yazıda genel olarak aslında grafik çeşitlerine değineceğim. Daha sonraki yazılarda:
- Bazı Python kütüphaneleriyle örnekler sunacak,
- Farklı ve detaylı görselleştirme örnekleri gerçekleştirecek,
- Bir veri seti özelinde çoklu grafikleri sunduğumuz bir dashboard örneği paylaşacağım
- Ve sonunda arka planda makine öğrenmesi modelleriyle beslediğimiz son kullanıcıyı direkt olarak etkileyebileceğimiz bir örnekle veri görselleştirme serimizi sonlandıracağım.
Görselleştirme Tekniğine Nasıl Karar Veriyoruz?
Elimizdeki verileri grafiğe dökmeden önce görselleştirmek istediğimiz değişkenlerin türüne ve ne istediğimize karar vermemiz gerekiyor.
- Değişkenlerimiz sürat, ağırlık veya sıcaklık gibi sayısal değişkenler mi? Yoksa renk, cinsiyet, ülke/şehir gibi kategorik değişkenler mi?
- Aradaki farklara mı dikkat çekmek istiyoruz, yoksa aralarındaki ilişkiler hakkında mı bilgi sunmak istiyoruz?
- Verilerimiz zamana bağlı mı değişiyor, yoksa zamandan bağımsız mı?
Tüm bunlar görselleştirme araçlarını seçimimizde bizi yönlendirecek olan sorular.
Kategorik Verileri Görselleştirme
Öncelikle kategorik değişkenlerin görselleştirmesinde yoğun olarak kullanılan yöntemlere bir bakalım. Sınıflanabilir, özellik belirten değişkenlere kategorik değişken diyoruz; kategorik değişkenleri sayısal değişkenler gibi toplayıp çıkartamıyor, birbirlerine oranlayamıyoruz. Kategorik değişkenleri görselleştirirken amaçladığımız şey genellikle grupların aldığı değerlerin birbirlerine oranları, toplam sayıları hakkında bilgi verme ve diğer kategorilerle bir nevi karşılaştırmalı değerleri gözlemleyebilmek oluyor. Renkler, cinsiyetler ve evet-hayır gibi cevaplardan oluşan veriler kategorik değişkenlere en basit örnekler. Bu değişkenleri görselleştirme için ne kullanıyoruz?
Pie Chart (Pasta Grafiği)
Kategorik değişkenleri görselleştirmede ilk akla gelen Pie Chart ve Bar Chart. Eğer kategorik değişkenlerimizin total grup içerisindeki yüzdesel dağılımını görmek istiyorsak pie chart en iyi seçim olacaktır. Bir kaç örnekle daha iyi canlanacaktır akıllarda:
Örnekte İBB Açık Veri Portalı (https://data.ibb.gov.tr/dataset/sehir-tiyatrolari-veri-seti/resource/79465ce9-8755-4b57-8e6c-def0c0caadc8) 2017-09-19 / 2020-11-17 tarihleri arasında tutulmuş Şehir Tiyatrolarında Sahnelenen Oyunlar Verisi kullanılmıştır.
Kayıtlara göre sahnelenen oyunların kategorilerine göre yüzdesel ağırlıkları üstteki pie chartta gösterilmektedir. Bu grafikle daha sonrasında sayısal değerler akıllarda kalmasa bile görseldeki renk dağılımı sayesinde yüzdeler hakkında elde edilen bilgi akılda kalıcı olacaktır. Küçük bir hesaplamayla sahnelenen 27.291 oyunun 17.949’unun %63.6’lık bir yüzdeye karşılık geldiğinin sağlaması da yapılabilir. Alttaki örnekte ise bu sefer kategorilere göre gösterilere katılan seyircilerin oranları gösterilmektedir.
Her iki görselde de aslında oyun kategorisi değişkeni özelinde bilgiler sunuluyor olsa da farklı bilgiler sunmak üzere farklı alt sütunlar kullandık. Kategorilere göre sahnelenen oyunların gösteriminde (üstte) sahnelenen oyunların bilgilerini kullanırken, kategorilere göre toplam izleyici sayıları bilgisini sunmakta (altta) ise oyunlara katılım sağlayan kişi toplam sayılarından yola çıktık. Yani pie chart ile gruplara göre oransal dağılımları farklı değişkenlerle harmanlayarak göstermek mümkün.
Pie chart oluştururken şu hususlara dikkat ederek amacınıza uygun daha etkili görseller sunabilirsiniz:
- Dilimlere sayı ve oran bilgilerini ekleyerek tek seferde daha fazla bilgi sunulabilir.
- Pie chart içerisinde çok sayıda nitelik var ise (mesela 15-20 seviyeli), yüksek yoğunlukta olan ilk X sayıdaki nitelik yüzdeleri ile birlikte belirtilip diğerleri “diğer” olarak belirtilerek dar alanda oluşacak karmaşanın önüne geçilebilir.
- Dilim boyutlarını büyükten küçüğe doğru olacak şekilde sıralayarak daha düzenli ve okunaklı bilgi sunulabilir.
- Sunburst benzeri pie chart türevleri dikkatinizi çekebilir.
Bar Chart (Çubuk Grafiği)
Pie chartın yanında diğer bir kategorik değişkenleri görselleştirme opsiyonu ise bar charttır. Bar chart ile kategorik değişkenlerin temsil ettikleri değerler çubuklarla/sütunlarla gösterilir ve çubukların yükseklikleri temsil ettiği niteliğin aldığı değerle orantılıdır. Niteliklerin sayılarının karşılaştırılarak gösterimi için kullanılır. Genel kullanım amacı grupların birbiri ile karşılaştırılması ve aralarındaki oransal farkı daha iyi bir şekilde görebilmektir. Bar chartın çok çeşitli türevi bulunmaktadır ve daha fazla niteliği bir arada görselleştirmede karmaşaya mahal vermemesinden dolayı kullanım alanına göre pie charta göre üstünlüğü olabilmektedir.
Örnekte İBB Açık Veri Portalı (https://data.ibb.gov.tr/dataset/sehir-tiyatrolari-veri-seti/resource/79465ce9-8755-4b57-8e6c-def0c0caadc8) 2017-09-19 / 2020-11-17 tarihleri arasında tutulmuş Şehir Tiyatrolarında Sahnelenen Oyunlar Verisi kullanılmıştır.
Örnekte yine aynı veri setindeki İstanbul Sahneleri’nin topladığı total izleyici sayıları sahneler bazında gösterilmiştir. Aslında tutulan kayıtlar kapsamında veri setinde 76 farklı tiyatro Sahnesi bulunuyor, fakat bütün sahneleri ayrı ayrı göstermek 76 çubuktan oluşacak bir grafik yaratacağı ve bilgi sunmaktan çok karmaşa yaratacağı için öncelikli olan 10 kadarının total bilgilerini vermek ve diğerlerini ayrı olarak değerlendirmek daha doğru olacaktır. Sayısal değerleri direkt kesin olarak okuyamıyor olsanız da en çok seyirci toplayan sahnenin Harbiye MES olduğu ve Harbiye MES’in hemen hemen Gaziosmanpasa Sahnesi’nden üç kat daha fazla seyirci topladığını farketmeniz sadece saniyeler alacaktır.
Bar Chart ile ilgili dikkat edilmesi gereken hususlar ise:
- Bar chart ve histogram aynı şey değildir, histogram sayısal değişkenler ile dağılımı göstermek amaçlı kullanılır.
- Bar chartlar yatay ve dikey çubuklar ile farklı şekillerde kullanılabilir,
- Y-axis başlangıç değerini 0 yapmak veya niteliklerin aldığı en düşük değere göre gösterilecek minimum değeri ayarlamak görsel etkinliğini ciddi derecede etkileyebilir.
- Grid kullanımı, gruplanmış çubuklar ile birden fazla değişkenin karşılaştırılması, toplamlı (stacked) bar chart kullanımı, sıralama ve renklendirme bar chartların etkinliğini ciddi derecede etkiler.
Numerik Verileri Görselleştirme
Bölünüp toplanabilir, birbirlerinin oranı veya katları cinsinden ifade edilebilir değerlere sayısal değişkenler diyoruz. Sürekli değişkenler kendi içinde oransal ve aralıklı ölçekli olarak ikiye ayrıldığı için farklı yaklaşımlar gerektiriyor. Eğer bu farkı bilmiyorsanız 2 dakikalık bir araştırma ile ölçek türleri ve kapsamları hakkında fikir sahibi olabilirsiniz.
Sürekli değişkenleri görselleştirmede yine birçok seçenek olmakla birlikte öncelikli olarak birkaç tanesini ele alacağız.
Scatter Plot (Serpme Diyagramı)
Scatter plot iki değişkenin arasındaki ilişkiyi ve birlikte değişimlerini gözlemlemede kullanılan bir veri görselleştirme tekniğidir. Eldeki gözlemlerde herhangi bir değişkenin aldığı değerin diğer değişkende karşılık geldiği değeri gözlemleme, aralarındaki örüntüyü/ilişkiyi gözlemleme amaçlı kullanılır. Tanımdan da akıllara geleceği üzere scatter plot değişkenler arasındaki korelasyon hakkında da bir öngörüde bulunmamızı sağlar. Bununla birlikte, eğer değişkenler arasında bilinen bir korelasyon var ise korelasyonu bozan (sapan değer şüphelisi) gözlemlere de odaklanmamızı, bu değerlerin dikkat çekmesini sağlar.
Örnekte İBB Açık Veri Portalı’ndan(https://data.ibb.gov.tr/dataset/saatlik-trafik-yogunluk-veri-seti/resource/fdbc8e2f-0cf1-4952-b50f-df8f40d5a649) “sxk3pj” Geohash’a sahip yoldan 01-03-2021 ve 11-03-2021 tarihleri arasında geçen araç saatlik verisi kullanılmıştır.
Görselde yine “sxk3pj” geohash koduna sahip yolun saatlik ortalama hız ve geçen araç sayısı ile scatter plot örneği verilmiştir. Gördüğümüz basit görselde direkt ortalama hız ve araç sayısı arasında çok da güçlü olmayan bir negatif korelasyon olduğunu görebiliyoruz. Mantıklı da aslında; araç sayısı fazla ise trafik vardır, trafik var ise araçlar hızlı geçiş yapamaz. Görsel sebebi bize söylemese de fikir yürütmemize yardımcı olabiliyor. 20km ortalama hıza sahip 380 civarı araç geçişi olan en soldaki noktanın bulunduğu saatte bir kaza olması da muhtemel. Görüldüğü gibi araştırma konumuzda scatter plot ile bir görselleştirme bize odaklanmamız gereken noktaları gösterebilir.
Scatter plotın kullanımında aklımızda bulundurmakta fayda olan noktalar ise;
- Scatter plot bize değişkenlerin korelasyonu hakkında bilgi sunar.
- Nokların farklı bir değişkene göre renklendirilmesi ve/veya ebatlarının ayarlanması tek seferde daha fazla bilgi sunmamıza olanak tanır.
- Kümeleme analizleri çıktılarının 2 boyutlu görselleştirilmesinde kümeleri tanımada ve değerlerin benzerliklerinde hızlı bir fikir sahibi olmamızda faydalı olur.
- 3D Scatter plot, ve line plot ile birleştirme gibi opsiyonlar, eksenlere box-plot ekleyerek sunulan bilgiyi arttırmak mümkündür.
Line Plot (Çizgi Grafik)
Zamana veya aynı mantıkla diğer değişkence düzenli bir şekilde değişimini gözlemlemek istediğimiz verileri görselleştirmekte line plot kullanıyoruz. line plot aslında en çok aşina olduğumuz görselleştirme çeşidi. Doların günden güne veya saatlik değişimi, korona virüs vakalarının günlük değişimi gibi zamana bağlı verilerin sunumunda ilk başvurulan yöntem olarak karşımıza çıkıyor. Bu şekilde odaklandığımız konunun trendini, tepe ve dip noktalarını ve kritik noktaların oluştuğu tarihleri gözlememesi/okuması çok çok kolaylaşıyor.
Örnekte İBB Açık Veri Portalı’ndan](https://data.ibb.gov.tr/dataset/saatlik-trafik-yogunluk-veri-seti/resource/fdbc8e2f-0cf1-4952-b50f-df8f40d5a649) “sxk3pj” Geohash’a sahip yoldan 01-03-2021 ve 11-03-2021 tarihleri arasında geçen araç saatlik verisi kullanılmıştır.
Genel olarak birbirini izleyen bir desen olmasına rağmen 6 Mart tarihinde azalmış bir yoğunluk ve 7 Mart tarihinde ise normalin 1/3’ü bir yoğunluk göze çarpıyor. Evet, tahmin ettiğiniz gibi 6 Mart cumartesi gününe denk geliyor ve 7 Mart ise günü tam kapamalı bir pazar günü. Line plot görüldüğü gibi trend, olayların gerçekleşme anları ve sıklığı bilgilerini hızlıca okumada işimizi çokça kolaylaştıran bir yöntem. Daha iyi line plotlar oluşturmak için şu noktalar işe yarayacaktır:
- Kırılma noktalarına marker eklemek.
- Eğer var ise minimum ve maksimum eşik değerlerine sınır çizgisi çizmek.
- Aynı tarihsel skalada birden fazla değişkeni birden göstermek.
- 2 farklı değişkenin gösterildiği durumda; değerlerin kesişim noktalarını işaretlemek, değer çizgileri arasını renklendirme.
Histogram
Histogram ile bar plot aynı şey değildir, ilk bilinmesi gereken nokta olarak bunu belirtmek gerek. Görsel olarak birbirlerine çok benzeyebilirler fakat kullanım alanları ve mantıkları birbirinden farklıdır. Bar plotı zaten görmüştük, bar plot kategorik değişkenlerin görselleştirmesinde her bir gruba ait bilgilerin sunulmasında kullanılıyordu. Histogram ise sayısal değişkenlerin aralıklara indirilerek gösteriminden oluşuyor. Bar plot direkt olarak “hayvanlar” değişkeninin değerleri olan “memeliler”, “sürüngenler”, “deniz canlıları” gibi gruplara ait grupların bilgilerini çubuklar ile sunuyor ve karşılaştırma yapmamızı sağlıyor iken; Histogram “yaş” gibi sayısal bir değişkenin “0-9”, “10-19″,”20-29” … “60-69”, “70-79” gibi aralıkları çubuklayarak bu aralıkların dağılımı/yoğunluğu hakkında bilgi sahibi olmamızı sağlıyor. Görsellere dikkat ederseniz de barplot çubukları arasında boşluklar bulunurken histogram çubukları arasında boşluk olmaksızın çubuklar dipdibe sıralanır.
Görselde yine aynı veri setinin sadece pazartesi günü verileri kullanılarak tüm yollarda gözlenen araçların ortalama geçiş hızları dağılımı histogram ile gösterilmiştir. Genel olarak geçiş hızları 85 ve 30km üzerinde yoğun olduğu görülüyor. Histogram ile ilgili olarak, aralıkları kendimiz belirlememiz mümkündür, yani görselimiz için istersek 0-19, 20-39, 40-59, 60-79, 80-99 olarak 5 çubuktan oluşacak şekilde çubuk/aralık genişlikleri de belirleyebilirdik. İstatistikte önerilen aralık sayısı(çubuk diye düşünebiliriz) ise gözlem sayısının köküdür.
- Histogramın köşeli ve aralıklı gösterdiği dağılım bilgisini distribution (dağılım) grafiği ile çizgiler şeklinde göstermek de mümkün. Görsel olarak farklı da olsalar çok benzer bir bilgiyi sunacaklardır.
Daha Başka Ne Var?
Bahsettiklerimiz temel bilgiler ve temel araçlardı. Farklı senaryolarda kullanılması gereken ve/veya kullanılması daha doğru olan görselleştirme teknikleri de bulunmakta. Korelasyon matrislerinde başvurduğumuz heatmapler, sapan değer tespitinde kullandığımız box plotlar, meta analizde kullandığımız funnel plotlar, tree mapler, tree diagramlar ve daha niceleri. Bazı özel görevler özel plotlar gerektiriyor, bazı basit görevleri daha iyi sunmak için farklı görselleştirme seçenekleri çok etkili olabiliyor. Ne kadar fazla aletimiz var ise çantamızda, o kadar fazla problemi halledebilir hale geliyoruz. Renk paleti seçimleri, grafik üzerine eklenecek legendlar, kutuların sayısal değer bilgilerini ekleme, gridler, sınırlar gibi daha bir sürü küçük detay senaryoya ve hitap edeceğimiz kitleye göre tercih edilesi oluyor, sunumumuzu ileriye götürüyor veya gerekli değillerse karmaşa yaratıyor. Veri görselleştirmede deneyim elde ettikçe elimizdeki ham veriden iyi bir şekilde bilgi edinebilir veya bitmiş bir projemizin çıktılarını etkili bir şekilde kitlelere sunabiliriz.
Sonuç
Genel olarak veri görselleştirmenin temellerini oluşturan tekniklerin mantığını basit bir düzeyde aktarmaya çalıştım. Bahsettiklerim genel olarak olabildiğince özet bilgiler olmakla birlikte hataya düşmemek için daha derinlemesine araştırma yapmak ve kullanım örneklerini incelemek gerekiyor; ve biraz da hata yapmak gerekiyor. Bilgileri pratiğe dökerken zaman zaman hatalar yapıyoruz ve bunlar sonraki seferlerde daha az hata yaparak ilerlememizi sağlıyor. Uygulamalarımız sırasında aklımıza yeni soru işaretleri de takıyor, kilit nokta o soru işaretlerini göz ardı edip bildiklerimizle yürümek değil soru işaretlerini aşmaya çalışmaktır.
Veri görselleştirmeyle ilgili şunu da akıllarda bulundurmak gerek diye düşünüyorum: Şu veriyi şöyle görselleştireyim diyemiyoruz, nasıl görselleştirilmesi gerektiğini veri bize söylüyor, biraz kulak vermek gerek. Buraya kadar geldiyseniz zaman ayırdığınız için teşekkür ederim. Herhangi bir soru, öneri veya görüş için bana ulaşmaktan çekinmeyin. Serimizin devam yazılarında görüşmek üzere.
Ben Bilal Latif Ozdemir, DEU İstatistik bölümü mezunuyum ve su an Ege Üniversitesi Bilgi Teknolojileri programında yüksek lisans yapıyorum.
Aynı zamanda su an İzmir'de veri bilimci olarak çalışıyorum. Veri bilimi, Python ve istatistiksel analizler üzerine kendimi geliştirmeyi seviyorum ve bu alanda çalışan kişilere destek olmaya çalışıyorum.
Merhabalar,
Ben bilgisayar mühendisliği öğrencisiyim ve veri görselleştirme uygulaması yazma projem var. Bunu web sitesi formunda yapmayı düşünüyorum ama nereden başlayacağımı tam olarak bilmiyorum. Yol gösterecek fikirlerinize ihtiyacım var.
Teşekkür ederim.