Veri bilimi nedir? Veri bilimcisi kimdir

Daha büyük veri (big data) nedir ne değildir derken son yıllarda ortalıkta bir de veri bilimi, “datascience“, tabiri dolaşmaya başladı. Ülkemizin her ne kadar bu kavramlarla tanışıklığı yeni yeni olsa da dünyada epey bir yaygınlık kazanmaya başladığını görüyoruz. Aslında bu yaygınlık doğal bir gelişimin sonucu, yani kimse yapmacık yere veri bilimi, veri bilimci, “datascientist”, büyük veri, “big data” kavramlarını üretmiyor. Bu kavramlar şöyle bir doğal serüvenin sonunda patlamaya başladı: Bilgi sistemlerinde teknolojik ilerleme tüm hızıyla devam ediyor. Her geçen gün veriyi üretmek daha kolaylaşıyor. Üretilen bu verilerin bir yerden başka yere taşınması konusunda ağ teknolojilerinin veri iletim performansları fiber teknoloji ile birlikte akıl almaz hızlara ulaşmaya başladı. Veriyi saklamak için disk birim alan maliyeti oldukça düşük bir seviyeye inmiş durumda. Ayrıca şunu da belirtmeden geçmek istemem o da veri üreten kaynakların bolluğudur. Bilgi sistemleri gittikçe yaygınlaştı ve insan hayatının girmedik köşesini bırakmadı. Müşteri işlemleri, bankacılık işlemleri, e-ticaret işlemleri, ürün yorumları, RFID verileri, elektronik sağlık kayıtları, sigorta geri ödeme kayıtları, sensörler tarafından üretilen veriler gibi bir çok veri kaynağı bulunmaktadır. Hal böyle olunca dünyada bir veri bolluğu yaşanmaya başlandı.

Ancak veri üretme, iletme, işleme ve saklamanın kolaylığı ile beraber başka sorunlar da baş göstermeye başlıyor. Yığınlarla verimiz var. Eee ne olmuş yani? Peki bu kadar çok veriyi ne yapacağız? Sonsuza kadar turşusunu kuracak halimiz yok. Hangisini saklayıp, hangisini ne zaman çöpe atacağız? Ve asıl soru bu işi nasıl yapacağız? İşte bu noktada büyük veri teknolojileriyle birlikte veri bilimleri ve veri bilimci kavramları ortaya çıkmaya başladı. Veri bilimi adından da anlaşılacağı gibi veriyle uğraşan bilim. Ve bu bilimin odağında da yığınlarla veriden değer üretme, anlam çıkarma bulunuyor.

Çok yakın zamana kadar, büyük veri akımından önce diyelim, veri tabanları konusunda ilişkisel veri tabanı en yaygın veri tabanı olarak hemen hemen bütün ihtiyaçları gideriyordu. Ancak büyük veri akımıyla beraber ilişkisel veri tabanı büyük veri özelliklerine sahip (hacim, hız, çeşitlilik) veriyle başa çıkamaz duruma düştü. Yatay ölçekleme (scale out) kabiliyeti olmayan ilişkisel veri tabanlarının yerine yatay ölçekleme özelliğine sahip NoSQL veri tabanları ve büyük veri teknolojileri yer almaya başladı. Bu teknolojide bir sunucu kümesi (cluster) yüzlerce-binlerce düğüme (node) kadar genişleme imkanı sunmaktadır.

Özetlemek gerekirse veri bilimci; yığınlarla veriden değer üreten, iş problemlerini veriye dayalı çözebilen veya şirketin kurumun bir alandaki üstünlüğünü veriyi kullanarak arttıran pekiştiren kişidir diyebiliriz. Tabiri caizse modern çağın Simyacısı…

SQL’de Alt Sorgu (Subquery) Kullanımı

İstanbul’dan Arjantin’in başkenti Buenos Aires’e nasıl gidersiniz?

Cevabınız ne olur bilemiyorum ama bu yazının yazıldığı Kasım 2022 itibari ile direkt bir uçağa atlayıp gidemezsiniz. Buenos Aires’e gidebilmek için önce Amsterdam, Frankfurt veya Napoli gibi şehirlerden birine gidip, oradan aktarma yapmanız gerekir.

“Bir sorgu içerisinde yer alan sorgular” diyerek basitçe tanımlayabileceğimiz alt sorgular, bir nevi aktarma uçuşların yaptığı görevi görür. Bir işlemi birden fazla adımda gerçekleştirmeniz gerektiğinde kullanışlıdırlar.

Genellikle, istediğiniz bilgiyi elde etmek için seçme, filtreleme veya hesaplama yapmadan önce verileriniz üzerinde biraz çalışmanız gerekir. Alt sorgular, bu işi gerçekleştirmenin yollarından biridir.

Alt sorgular sayesinde dinamik sorgular oluşturabiliriz.

Devamı...

SQL’de CASE WHEN Kullanımı

Gündelik hayatta elde ettiğimiz sonuçlar veya verdiğimiz kararlar sıklıkla koşullardan etkilenir. Örnek olarak hava yağmurluysa dışarı çıkarken şemsiyenizi alırsınız veya güneşliyse tişört giyerek dışarı çıkarsınız. Elinizdeki veriyi koşullara göre yeniden düzenleyebilmek ve sorgulayabilmek için SQL’de CASE WHEN ifadesi kullanılır.

SQL’de CASE WHEN ifadesi ne iş yapar?

Veri tabanı ile konuşurken CASE WHEN ifadesi, birebir çeviri yapacak olursak durum bu olursa, o zaman şunu yap” anlamına gelir. Bu ifade, sorgulayıcı tarafından verilmiş belirli koşullara göre her bir satırı değerlendirerek belli bir sonuç üretir.

Ehliyet almak için bir sürücü kursuna başvuran adayların kayıt edildiği bir veri tabanını düşünelim. Ehliyet almak için 18 yaşından büyük olmak gerekmektedir. Bu nedenle 18 yaşından küçükler ehliyet sınavına kayıt olmak için uygun değildir. Başvurular “uygunluğa” göre kategorize edilmelidir. Buradaki ifadeyi şu şekilde görselleştirebiliriz:

Yukarıdaki koşulu SQL’de CASE WHEN ifadesi ile yerine getirebiliriz.

CASE WHEN ifadesi ile oluşan değerler her zaman tablo içerisinde yeni bir sütunda tutulur.

CASE WHEN ifadesinin söz dizimi (syntax)

SQL’de CASE WHEN ifadesinin söz dizimi aşağıdaki gibidir:

Devamı...

SQL’de Self Join Kullanımı (Tabloyu Kendisi ile Birleştirme İşlemi)

İlişkisel veri tabanları ile çalışırken veriler tek bir tabloda olabildiği gibi birden fazla tabloda da bulunabilir. JOIN işlemleri ile birden fazla tablo, ortak bulunan kolonlar yardımı ile birleştirilerek sorgulama işlemleri yapılabilmektedir.

Self Join ifadesi SQL’de bulunan özel bir JOIN işlemidir. Birbirinden farklı iki veya daha çok tablonun birleştirildiği diğer JOIN metotlarının aksine, Self Join işleminde tek bir tablo vardır ve bu tablo kendisi ile birleştirilir. Join işlemi tablo ve tablonun bir kopyası ile gerçekleşir.

Devamı...

Python yield kullanımı nasıldır? yield nerede kullanılır?

Python dilindeki yield deyimini anlamak için, generator’ları bilmek gerekiyor, generator’ları anlamak için de, iterator ve iterable kavramlarını anlamak gerekiyor. İngilizcede “iterate” kelimesi, tekrar tekrar uygulanmak veya işlenmek anlamına geliyor. Python’daki iterable ve iterator kavramları bu kelimeden türetilmiş. Python’da iter() yerleşik fonksiyona argüman olarak verebildiğimiz objelere iterable diyoruz. iter() fonksiyonu bize bir iterator döndürüyor. Iterator, objenin elemanları ne şekilde tanımlanırsa tanımlansın, bir koleksiyon içindeki tüm elemanlara sırasıyla erişebilmemiz için ortak bir arayüz oluşturan bir mekanizma. Kısacası, elemanları üzerinde sırasıyla gezinebildiğimiz, listeler ve demetler gibi objelere iterable diyoruz. Bu objeler, iter() fonksiyonu ile çağrıldığında, birer iterator döndürüyor, ve bu iterator’lar bir koleksiyondan sırasıyla eleman almak için kullanılıyor.

Devamı...

Javascript For/Of Döngüsü

Javascript for/of döngüsü ile iterable bir nesnenin tüm elemanlarına ulaşabiliriz. Iterable nesneler yapı itibariyle elemanları üzerinde döngüler ile gezilebilir nesnelerdir. Örneğin array, set, map, string gibi javascript nesneleri iterable nesnelerdir.

Kullanım şekli;

Devamı...

Javascript Koşul İfadeleri

Javascript uygulamalarında belli bir duruma bağlı olan farklı kod bloklarını çalıştırmak istediğimizde if-else ve else-if bloklarını kullanırız.

if Bloğu

if bloğu ile tanımladığımız koşul eğer doğru yani true bilgi üretiyorsa if bloğu kapsamındaki kodlar işletilir eğer false üretirse işletilmez.

Devamı...

Javascript ForEach Döngüsü

Js forEach() fonksiyonu ile bir dizideki tüm elemanlara kolaylıkla dolaşabiliriz.

Js forEach() fonksiyonu Array nesnesi yani bir dizi üzerinden çağrılmalıdır.

Js forEach() fonksiyonuna gönderdiğimiz callback fonksiyonu dizideki her bir elemana ulaşıldığında çağrılır.

Örnek:

Devamı...

Javascript String

Javascript string veri tipi karakter dizisi olarak anılır çünkü Javascript string bir ya da birden fazla karakterden oluşur. Örneğin; bir şehir ismi birden fazla karakterden oluşur. Javascript string veri tipi tek tırnak ya da çift tırnaklar arasına yazılabilir.

Devamı...

Javascript String Metotları

Javascript String Metotları Kullanımı

Javascript string nesnesi ile hazır olarak gelen bir çok kullanışlı string metodu vardır.

Javascript string metotlarına tanımladığımız string karakter dizisi üzerinden ulaşırız.

Aşağıdaki javascript string metotlarını sırasıyla öğrenelim;

  • String concat()
  • String indexof() ve lastindexof()
  • String search()
  • String toUpperCase() ve toLowerCase()
  • String trim()
  • String slice()
  • String substring()
  • String substr()
  • String replace()
  • String split()
Devamı...

Javascript Sayılar

Javascript ‘de bir sayı veri türü vardır. Tanımladığımız her sayısal veri tam sayı ya da ondalıklı sayı olabilir. 

Sayısal bir veri tanımlarken tırnak kullanmamalıyız.

Devamı...

Javascript Sayı Metotları

Javascript’ de metotlara nesne üzerinden ulaşabiliriz ayrıca kullanabileceğimiz global seviyede de metotlar da mevcuttur. Javascript metotlarını sırasıyla öğrenelim.Javascript’ de number nesnesini Number() metodu ile tanımlayabiliriz. Ancak tanımladığımız primitive tipteki (x=10) veriler de nesne olarak tanımlanırlar. Dolayısıyla;

Devamı...

Javascript Dizi Metotları

Javascript ile dizilere ekleme,silme,güncelleme gibi temel görevleri yapabilmek için kullanabileceğimiz dizi metotları hazır olarak gelir.

Diziye Eleman Ekleme

Javascript dizi üzerine bir eleman eklemek için push(), unshift(), splice()metotlarını kullanabiliriz.

Push() Metodu

Push() metodu dizinin sonuna bir eleman ekleyebiliriz.

Devamı...

Javascript Veri Tipleri

Javascript’ de veri tutmak için kullandığımız javascript veri tiplerini 2 ayrı grupta ele alabiliriz.

Basit Veri Tipleri: String, Number, Boolean ve undefined.

Referans Tipler: DiziNesne, Fonksiyonve null veri tipleridir. 

Javascript’ de değişken tiplerini belirtmek için her veri tipine özel bir komut yoktur. Her veri tipi var komutu ile tanımlanır ancak değişkene attığımız veri tipine göre değişken farklı veri tipinde değerlendirilir.

typeof operatörü ile bir değişkenin veri tipini öğrenebiliriz.

Javascript String

Javascript’ de karakter dizilerini string veri tipiyle saklarız.  

Devamı...