📊 Büyük Veri Teknolojileri
📅 BÖLÜM 2

Veri Modelleme, Dosya Formatları ve Pandas'a Giriş

Veri hiyerarşisini, dosya türlerini (text, binary, CSV, JSON, Excel), Pandas kütüphanesini ve büyük veri platformlarını öğreniyoruz.

📖 Teori: 2 saat 💻 Uygulama: 3 saat 📊 Seviye: Giriş

🎯 Bu Haftanın Kazanımları

📊 Bölüm 1: Veri Nedir? — Tanım, Köken ve Önemi

Data meme
😄 Veri dünyasına hoş geldiniz!

📖 "Data" Kelimesinin Kökeni

"Data" kelimesi Latince "datum" sözcüğünün çoğuludur. Latince'de dare fiili "vermek" anlamına gelir. Datum bu fiilin geçmiş zaman ortacıdır (past participle) ve "verilmiş olan şey" (something given) demektir. Çoğulu olan data ise "verilmiş olan şeyler" — yani gerçek dünyadan elde edilen, henüz işlenmemiş ham gerçekler.

Türkçe'deki "veri" kelimesi de aynı mantıkla "vermek" fiilinden türetilmiştir. Yani hem İngilizce'de hem Türkçe'de bu kelime dışarıdan bize verilen, gözlemlenen, ölçülen şeyler fikrini taşır.

💡 "Data" Tekil mi Çoğul mu?

Gramer kurallarına göre data çoğuldur ve "The data are collected" denmelidir. Ancak günlük ve modern İngilizce'de data tekil bir isim gibi kullanılır: "The data is collected." Her iki kullanım da kabul edilmektedir. Akademik metinlerde ise "datum" (tek bir veri noktası) hâlâ kullanılır.

TerimDilAnlamÖrnek Kullanım
DareLatince (fiil)Vermek (to give)Kök fiil — datum ve data buradan türer
DatumLatince (tekil)Verilmiş olan tek bir şey"This datum suggests a temperature of 38°C"
DataLatince→İngilizce (çoğul)Verilmiş olan şeyler"Big data is transforming industries"
VeriTürkçeData'nın Türkçe karşılığı"Vermek" fiilinden türetilmiş (TDK, 1960'lar)
InformationİngilizceBilgi — işlenmiş veri"Data becomes information when processed"
Insightİngilizceİçgörü, kavrayış — derin anlam"Customer insights drive business decisions"

📌 Veri ile Bilgi Arasındaki Fark

Veri ile bilgiyi karıştırmak çok kolaydır. Aralarındaki farkı net anlamak, bu dersin en temel yapı taşlarından biridir:

📝 Veri (Data) — Ham Gerçekler
  • 38.5 — tek başına hiçbir anlam ifade etmez
  • "İstanbul" — bir şehir adı, ama ne bağlamda?
  • 1453 — bir sayı, ne anlama geliyor?
  • [23, 45, 67, 12, 89] — bir sayı listesi, nedir bunlar?

Veri bağlamdan yoksundur. Ne, neden, nerede sorusuna cevap vermez.

📊 Bilgi (Information) — Anlam Kazanmış Veri
  • 38.5 → "Hastanın vücut sıcaklığı 38.5°C"
  • "İstanbul" → "Sipariş İstanbul'dan geldi"
  • 1453 → "İstanbul'un fetih yılı 1453"
  • [23, 45, 67, 12, 89] → "Öğrencilerin sınav notları, ort: 47.2"

Bilgi, veriye bağlam (context) eklenmesiyle elde edilir.

🎯 Analoji: Bulmaca Parçası

Tek bir veri noktasını bir bulmaca parçası gibi düşünün. Tek başına bir parça anlamsızdır. Ama doğru yere koyduğunuzda resmin bir parçası ortaya çıkar — bu bilgidir. Tüm parçaları birleştirdiğinizde resmin tamamını (büyük tabloyu) görürsünüz — bu da içgörüdür (insight).

💎 "Insight" (İçgörü) Nedir?

Insight (Türkçe: içgörü, kavrayış), büyük veri dünyasının en değerli çıktısıdır. Insight, veriden elde edilen derin, beklenmeyen ve eyleme dönüştürülebilir anlam demektir. Basitçe: "Aha! İşte bu yüzden!" anı.

🛒
E-Ticaret Insight Örneği

Veri: 1 milyon satış kaydı

Bilgi: "Cuma günleri satış %30 artıyor"

Insight: "Müşteriler maaş gününden sonraki ilk cuma alışveriş yapma eğiliminde — Cuma günlerine özel kampanya düzenle!"

🏥
Sağlık Insight Örneği

Veri: 50.000 hasta kaydı

Bilgi: "Kış aylarında grip vakaları artıyor"

Insight: "Grip vakalarının artışı hava nemine değil, kapalı mekanlarda geçirilen süreye bağlı — havalandırma iyileştirilmeli!"

📱
Sosyal Medya Insight Örneği

Veri: 10 milyon tweet

Bilgi: "Ürün hakkında %60 pozitif yorum var"

Insight: "Pozitif yorumların %80'i 18-24 yaş grubundan, ama en çok satış 35-44 yaş grubuna — gençlerin tavsiyesi yaşlıları etkiliyor!"

🌍 Veri Neden Bu Kadar Önemli?

21. yüzyılda veri, "yeni petrol" olarak adlandırılıyor (bu ifade ilk kez 2006'da İngiliz matematikçi Clive Humby tarafından kullanıldı). Ancak ham petrol gibi, ham veri de işlenmeden pek bir işe yaramaz. Veriyi değerli kılan, onu bilgiye ve içgörüye (insight) dönüştürebilmektir.

🛢️ "Veri Yeni Petroldür" — Ama Neden?

Petrol ham haliyle yakıt olarak kullanılamaz; rafine edilmesi gerekir. Aynı şekilde ham veri de işlenmeden değersizdir. İşlenmiş petrol nasıl ekonomileri ayakta tutuyorsa, işlenmiş veri de modern şirketlerin kararlarını yönlendiriyor:

  • 🏪 Walmart, kasırga öncesi satış verilerini analiz ederek kasırga yaklaşırken raflara çilek Pop-Tart koyar — çünkü veri bu ürünün kasırga öncesi %7 kat arttığını gösterdi.
  • 🎬 Netflix, izleme verilerinize göre dizi önerir. "House of Cards" dizisi tamamen veri analizine dayanarak üretildi (Kevin Spacey + David Fincher + politik drama = izlenme garantisi).
  • 🚗 Tesla, tüm araçlarından gelen sürüş verisini toplayarak otonom sürüş algoritmasını sürekli iyileştirir — her Tesla kullanıcısı aslında bir veri kaynağıdır.
  • 🏥 Google DeepMind, göz tarama verilerini analiz ederek 50+ göz hastalığını doktorlardan daha doğru teşhis eden bir yapay zeka geliştirdi.

⏰ Neden Şimdi? — Veri Her Zaman Vardı!

Veri aslında insanlık tarihi kadar eski bir kavram. Eski Mısırlılar papirüse nüfus sayımı yazardı, Osmanlılar tahrir defterleri tutardı. Peki neden "büyük veri" kavramı son 15-20 yılda bu kadar önemli hale geldi?

FaktörAçıklamaSonuç
📱 İnternet & Akıllı TelefonlarDünya nüfusunun %60+'ı internet kullanıyor. Herkes sürekli veri üretiyor.Veri miktarı katlanarak arttı
💰 Ucuzlayan Depolama1 GB depolama: 1980'lerde $100.000+, bugün < $0.01Her şeyi saklamak mümkün hale geldi
⚡ İşlem Gücü (Moore Yasası)İşlemci hızı her ~2 yılda ikiye katlanıyorDevasa veri setlerini işleyebiliyoruz
🌐 IoT (Nesnelerin İnterneti)Sensörler, kameralar, akıllı cihazlar sürekli veri üretiyorİnsan üretmese bile makineler veri üretiyor
🧠 Yapay Zeka & MLMakine öğrenmesi algoritmaları veriden öğrenebiliyorVeri ne kadar çoksa, model o kadar iyi
🏢 İş Dünyası RekabetiVeriye dayalı karar veren şirketler %5-6 daha verimliVeri kullanmayan rekabette geri kalıyor
📖 İlginç Anekdot: Cholera Haritası (1854)

Büyük verinin atası sayılabilecek bir olay: Londra'da 1854 kolera salgınında doktor John Snow (evet, isim tesadüf 😄), ölüm verilerini bir haritaya işleyerek suyun kirlenmesinden kaynaklandığını kanıtladı. Bu, tarihteki ilk "veri görselleştirme" ve "veri tabanlı karar verme" örneklerinden biridir. Üstelik mikrop teorisi henüz bilinmiyordu — sadece veri konuştu!

💥 İnternet Çağında Veri Patlaması (Data Explosion)

İnternetin yaygınlaşmasıyla üretilen veri miktarı inanılmaz bir hızla artıyor. Ama sadece internet değil — akıllı telefonlar, sensörler, sosyal medya, IoT cihazları, güvenlik kameraları, araçlar, hastaneler, bankalar… neredeyse her şey sürekli veri üretiyor. İnsan üretmese bile makineler üretiyor.

Bir perspektif vermek gerekirse: siz bu cümleyi okurken, dünyada tahminen 1.7 MB veri kişi başına her saniye üretiliyor. İşte bazı çarpıcı istatistikler:

📈
Dakikada Üretilen Veri (2024)
  • 📧 231 milyon e-posta gönderiliyor
  • 🔍 6.3 milyon Google araması yapılıyor
  • 📱 66 bin saat Netflix izleniyor
  • 💬 16 milyon mesaj gönderiliyor (WhatsApp, iMessage)
  • 📸 65 bin fotoğraf Instagram'a yükleniyor
  • 🐦 360 bin tweet atılıyor
🗄️
Toplam Veri Miktarı
  • 2010: 2 Zettabyte
  • 2020: 64 Zettabyte
  • 2025: 181 Zettabyte (tahmini)
  • 2030: 612 Zettabyte (tahmini)

1 Zettabyte = 1 trilyon Gigabyte! 😱

BirimKısaltmaBoyutGünlük Karşılık
ByteB1 karakterTek bir harf
KilobyteKB~1.000 BKısa bir metin dosyası
MegabyteMB~1.000 KBBir fotoğraf (3-5 MB)
GigabyteGB~1.000 MBBir film (1-2 GB)
TerabyteTB~1.000 GB500 saatlik HD video
PetabytePB~1.000 TBABD Kongre Kütüphanesi'nin 50 katı
ExabyteEB~1.000 PBİnternetteki tüm web sayfaları (~)
ZettabyteZB~1.000 EBDünyada yılda üretilen toplam veri
⚠️ Problem: Veri Çok Ama Anlamlandırmak Zor!
İnsanlık tarihinde son 2 yılda üretilen veri, önceki tüm tarihi boyunca üretilenden daha fazladır. Ancak bu verinin büyük çoğunluğu (%80+) yapılandırılmamış ve anlamlandırılmamıştır. İşte Büyük Veri Teknolojileri'nin varlık sebebi budur: bu devasa veri yığınından anlam çıkarmak, içgörü (insight) elde etmek.
❌ Neden Excel Yetmiyor?

"Tabloyu Excel'de açsak olmaz mı?" — Hayır! İşte somut sebepleri:

  • 📊 Excel'in satır limiti 1.048.576 satır. Bir e-ticaret sitesinin günlük tıklama verisi bunun 10 katı olabilir.
  • 🐌 10 MB'lık bir CSV'yi bile Excel dakikalarca açabilir. 1 GB'lık bir dosya? Çökme garantili.
  • 🖥️ Excel tek bilgisayarın RAM'inde çalışır. 100 GB veriyi 8 GB RAM'li bir bilgisayara sığdıramazsınız.
  • 🔄 Excel'de gerçek zamanlı (real-time) veri işleme mümkün değildir.

İşte bu yüzden Hadoop, Spark, Kafka gibi dağıtık sistemlere ihtiyaç var: veriyi birden fazla bilgisayara yayıp paralel işliyorlar. Bu derste bunları öğreneceğiz!

📐 Büyük Verinin 5V'si (The 5 V's of Big Data)

Peki bir veri ne zaman "büyük veri" sayılır? Sadece boyutu büyük olması yetmez. Büyük veri, geleneksel araçlarla (Excel, tek sunucu, basit SQL) işlenemeyecek kadar büyük, hızlı ve karmaşık veri kümelerini tanımlar. Bu kavram genellikle 5V ile karakterize edilir. İlk 3V (Volume, Velocity, Variety) 2001 yılında Gartner analisti Doug Laney tarafından tanımlandı; sonradan Veracity ve Value eklendi.

📦
1. Volume (Hacim)
Verinin miktarı, boyutu. Artık Gigabyte değil, Terabyte, Petabyte, hatta Exabyte seviyesindeyiz.
  • 📹 YouTube'a dakikada 500 saat video yükleniyor
  • 📘 Facebook günde 4 Petabyte veri üretiyor
  • 🔬 CERN parçacık hızlandırıcısı saniyede 1 Petabyte ham veri üretiyor (bunun ancak %0.001'i saklanabiliyor!)

Problem: Bu kadar veriyi Excel'de açamazsınız. Hadoop, Spark gibi dağıtık sistemler tam da bu yüzden geliştirildi.

2. Velocity (Hız)
Verinin üretilme ve işlenme hızı. Bazı veriler anında işlenmezse değerini kaybeder.
  • 📈 Borsa verileri milisaniye içinde değişir — 1 saniye gecikme milyonlarca dolar kayıp demek
  • 💳 Kredi kartı dolandırıcılığı işlem anında tespit edilmeli, sonra zaten para gitti
  • 🚦 Otonom araçlar anlık sensör verisini değerlendirmeli, 1 saniyelik gecikme kaza demek

Kavram: Batch processing (yığın işleme) vs Stream processing (akış işleme). İkisini de bu derste öğreneceğiz.

🎭
3. Variety (Çeşitlilik)
Verinin farklı kaynaklardan, farklı formatlarda gelmesi. Hepsi bir arada analiz edilmeli.
  • 📊 Yapılandırılmış: SQL tabloları, CSV dosyaları (%20)
  • 📋 Yarı-yapılandırılmış: JSON, XML, log dosyaları (%10)
  • 📄 Yapılandırılmamış: E-postalar, tweetler, fotoğraflar, videolar (%70-80)

Problem: Bir hastanenin veritabanı (tablo) + röntgen görüntüleri (resim) + doktor notları (metin) = hepsi farklı format. Birleştirmek zor!

🎯
4. Veracity (Doğruluk)
Verinin güvenilirliği, kalitesi, tutarlılığı. Kirli veri, yanlış karar demektir.
  • 🗑️ Garbage In, Garbage Out (GIGO): Çöp veri girersen, çöp sonuç alırsın
  • 📱 Twitter'da botlar sahte trendler oluşturuyor — bu veri güvenilir mi?
  • 📊 Anket verilerinde insanlar gerçeği söylemeyebilir (toplumsal baskı etkisi)

Çözüm: Veri temizleme (data cleaning), veri doğrulama (validation), aykırı değer (outlier) tespiti — Hafta 12'de detaylı göreceğiz.

💎
5. Value (Değer)
Veriden elde edilen iş değeri, fayda. Sonuçta amaç veriyi biriktirmek değil, ondan değer çıkarmak.
  • 🏪 Walmart kasırga öncesi çilek Pop-Tart satışlarını analiz edip raflara koyar — satışlar %7x arttı
  • 🎬 Netflix veri analizi sayesinde "House of Cards" dizisini üretti — tarihin ilk data-driven dizisi
  • 💰 McKinsey'e göre veri odaklı şirketler, rakiplerine göre %23 daha kârlı

Mesaj: Veri tek başına değersizdir. Onu insight'a dönüştüren süreç değer yaratır.

🧠 5V Özet Formülü

Büyük veri = Çok veri (Volume) + Hızlı akan (Velocity) + Çeşitli formatlarda (Variety) + Güvenilirliği sorgulanması gereken (Veracity) + İş değeri çıkarılabilecek (Value) veri kümeleri.

Bir veri kümesi bu 5 özelliğin hepsini veya birkaçını barındırıyorsa, artık geleneksel araçlarla değil, büyük veri teknolojileriyle (Hadoop, Spark, Kafka...) işlenmelidir. Bu derste bu araçları öğreneceğiz!

📚 Okuma ve İzleme Önerileri

Aşağıdaki kaynaklar bu bölümdeki konuları farklı açılardan ele alıyor. Hepsini incelemeniz gerekmez, ama en az 2-3 tanesine göz atmanızı tavsiye ediyoruz:

KaynakTürSüre / BoyutLink
DOMO — Data Never Sleeps (her yıl güncellenen infografik)📊 İnfografik1 sayfadomo.com/data-never-sleeps
How Much Data Is Created Every Day?📄 Makale~10 dkexplodingtopics.com
Big Data In 5 Minutes — Simplilearn🎬 Video (EN)5 dkYouTube
Büyük Veri Nedir? — IBM Türkiye🎬 Video (TR)~5 dkYouTube
What is Big Data? — Fireship🎬 Video (EN)~5 dkYouTube
The Human Face of Big Data (Belgesel)🎥 Belgesel60 dkYouTube'da ara
John Snow ve Kolera Haritası📄 Makale~5 dkWikipedia
Clive Humby: "Data is the new oil"📄 Makale~3 dkana.blogs.com
Veri Okuryazarlığı Nedir?📄 Blog~5 dkTableau — Data Literacy
📖 Kitap Önerileri (İsteğe Bağlı)
  • 📕 "Everybody Lies" — Seth Stephens-Davidowitz: Google arama verilerinin insanlar hakkında ortaya koyduğu şaşırtıcı gerçekler. Çok eğlenceli ve kolay bir okuma.
  • 📗 "Weapons of Math Destruction" — Cathy O'Neil: Büyük veri ve algoritmaların toplumda yarattığı eşitsizlikler. Verinin karanlık yüzü.
  • 📘 "Big Data" — Viktor Mayer-Schönberger & Kenneth Cukier: Büyük veriye giriş için klasik kaynak.

📊 Bölüm 2: DIKW Piramidi

"Veri" kelimesini her gün duyuyoruz ama veri tam olarak nedir? Ve "büyük veri" neden bu kadar önemli? Bunu anlamak için veri hiyerarşisinden (DIKW piramidi) başlayalım.

DIKW Piramidi (Data → Information → Knowledge → Wisdom)

graph TB D["📝 VERİ (Data)
Ham, işlenmemiş gerçekler
Örn: 38.5"] --> I["📊 BİLGİ (Information)
İşlenmiş, anlamlı veri
Örn: Hastanın ateşi 38.5°C"] I --> K["🧠 BİLGİ BİRİKİMİ (Knowledge)
Bilginin yorumlanması
Örn: Hasta yüksek ateşli, enfeksiyon olabilir"] K --> W["💡 BİLGELİK (Wisdom)
Doğru karar verme
Örn: Antibiyotik tedavisi başlanmalı"]
Şekil 1: DIKW Piramidi — Veriden bilgeliğe giden yol
DIKW Piramidi — Sketchplanations
Kaynak: Sketchplanations — DIKW (Jono Hey)
KatmanNe Demek?Günlük Hayat ÖrneğiBüyük Veri Örneği
VeriHam, işlenmemiş gerçekler"25", "İstanbul", "Yağmurlu"Milyonlarca satırlık log dosyası
Bilgiİşlenmiş, bağlamlandırılmış veri"İstanbul'da hava 25°C ve yağmurlu"Günlük ortalama sıcaklık tablosu
Bilgi BirikimiBilgiden çıkarılan anlam"Yağmurda şemsiye almalıyım"Yağış trendleri ve mevsimsel kalıplar
BilgelikDoğru zamanda doğru karar"Yağmur devam edecek, dışarı çıkmayı ertele"Hava durumu tahmin modeli
💡 Büyük Veri Bağlamı
Büyük Veri Teknolojileri dersi olarak bizim işimiz, ham veriyi toplayıp, işleyip, bilgiye dönüştürmektir. Bu bilgiden bilgi birikimi ve bilgelik elde etmek ise veri analizi ve makine öğrenmesi ile mümkün olur.

Veri Türleri: Yapılandırılmış, Yarı-Yapılandırılmış, Yapılandırılmamış

Veriler yapılarına göre üç kategoriye ayrılır. Bu ayrımı bilmek önemlidir çünkü hangi aracı kullanacağımız buna bağlıdır.

📊
Yapılandırılmış (Structured)
Satır ve sütunlardan oluşan tablo formatındaki veriler.
Örnekler: Excel tabloları, SQL veritabanları, CSV dosyaları
Araçlar: SQL, Pandas, Excel
Oran: Tüm verilerin ~%20'si
📋
Yarı-Yapılandırılmış (Semi-structured)
Tablo formatı değil ama belirli bir yapısı/etiketleri var.
Örnekler: JSON, XML, HTML, log dosyaları
Araçlar: Python json, NoSQL (MongoDB)
Oran: Tüm verilerin ~%10'u
📄
Yapılandırılmamış (Unstructured)
Hiçbir standart formatı olmayan veriler.
Örnekler: Metin belgeleri, resimler, videolar, ses dosyaları, e-postalar
Araçlar: NLP, bilgisayar görüşü, derin öğrenme
Oran: Tüm verilerin ~%70-80'i

İşaretli vs İşaretsiz Veri (Labeled vs Unlabeled Data)

Makine öğrenmesinde veriler bir de işaretli (labeled) ve işaretsiz (unlabeled) olarak ayrılır. Bu ayrım, hangi öğrenme yöntemini kullanacağımızı belirler.

🏷️ İşaretli Veri (Labeled Data)

Her veri noktasının bir etiketi / doğru cevabı var.

  • 📧 E-posta → "spam" veya "spam değil"
  • 🖼️ Fotoğraf → "kedi" veya "köpek"
  • 📊 Öğrenci notu → "geçti" veya "kaldı"

Kullanım: Gözetimli öğrenme (Supervised Learning)

❓ İşaretsiz Veri (Unlabeled Data)

Veri var ama etiketi/doğru cevabı yok.

  • 📧 Binlerce e-posta — hangisi spam bilmiyoruz
  • 🖼️ Binlerce fotoğraf — ne olduğu belirtilmemiş
  • 👥 Müşteri verileri — grupları bilinmiyor

Kullanım: Gözetimsiz öğrenme (Unsupervised Learning)

💡 Neden Önemli?
Dünyada üretilen verinin çok büyük çoğunluğu işaretsizdir. Çünkü veriyi etiketlemek pahalı ve zaman alıcıdır (insan gücü gerekir). Büyük veri teknolojileri sayesinde hem işaretli hem işaretsiz verilerden anlam çıkarılabilir.

Veri Nereden Gelir? — Veri Toplama Yöntemleri

Büyük veride veriler birçok farklı kaynaktan toplanır:

Yöntem (TR)İngilizceAçıklamaÖrnek
APIApplication Programming InterfaceProgramlar arası veri alışverişi. Uygulamalar birbirleriyle API üzerinden konuşur.Twitter API, Hava durumu API
Web KazımaWeb ScrapingWeb sayfalarından veri çekme. HTML içeriğini parse ederek veri elde etme.Fiyat karşılaştırma, haber toplama
Ağ ÖrümceğiWeb Crawler / SpiderWeb sitelerini otomatik olarak dolaşıp indexleme. Sayfadan sayfaya link takip eder.Googlebot, Bing crawler
SensörlerSensors / IoTFiziksel ortamdan veri toplayan cihazlar.Sıcaklık, nem, GPS sensörleri
Log DosyalarıLog FilesSistemlerin otomatik tuttuğu kayıtlar.Sunucu logları, uygulama logları
Formlar/AnketlerForms / SurveysKullanıcılardan doğrudan toplanan veri.Google Forms, anket siteleri
Açık VeriOpen DataKamuya açık paylaşılan veri setleri.Kaggle, TÜİK, data.gov
💜 Crawler vs Scraper Farkı
Crawler (örümcek), web sitelerini dolaşır ve keşfeder — Google'ın yaptığı budur. Scraper ise belirli bir sayfadaki veriyi çeker/toplar. Crawler daha geniş ölçekli, scraper daha hedeflidir. Python'da requests + BeautifulSoup ile basit scraping yapılabilir; Scrapy kütüphanesi ise profesyonel crawling için kullanılır.
💜 Neden Önemli?
Dünyada üretilen verilerin büyük çoğunluğu (%70-80) yapılandırılmamıştır. Büyük veri teknolojilerinin asıl gücü, bu yapılandırılmamış verileri de işleyebilmesidir.

📁 Bölüm 3: Dosya Kavramları

Bilgisayarda her şey dosyalarda saklanır. Büyük veri ile çalışırken sürekli dosyaları okuyup yazacağız. O yüzden dosya kavramını iyi anlamak önemlidir.

Text Dosyalar vs Binary Dosyalar

Bilgisayardaki dosyalar temelde iki kategoriye ayrılır:

📄 Text (Metin) Dosyalar
  • İçeriği okunabilir karakterlerden oluşur
  • Notepad/TextEdit ile açıp okuyabilirsiniz
  • Her satır bir satır sonu karakteri (\n) ile biter
  • Boyutu genellikle daha büyük (çünkü her karakter ayrı kodlanır)

Örnekler:

.txt, .csv, .json, .py, .html, .xml, .md, .log
🔢 Binary (İkili) Dosyalar
  • İçeriği 0 ve 1'lerden (byte dizilerinden) oluşur
  • Notepad ile açarsanız anlamsız karakterler görürsünüz
  • Özel programlarla açılması gerekir
  • Boyutu genellikle daha küçük (sıkıştırılmış olabilir)

Örnekler:

.xlsx, .docx, .pdf, .jpg, .png, .mp4, .mp3, .zip, .parquet
⚠️ Dikkat
.xlsx (Excel) dosyası bir binary dosyadır! .csv ise text dosyadır. İkisi de tablo verisi içerir ama yapıları tamamen farklıdır. Bu farkı birazdan detaylıca göreceğiz.

Python ile Dosya Okuma ve Yazma

Python'da dosya işlemleri open() fonksiyonu ile yapılır. Bu fonksiyon bir dosya nesnesi döndürür ve bu nesne üzerinden okuma/yazma işlemleri yapılır.

Dosya Açma Modları

ModAçıklamaDosya Yoksa?Dosya Varsa?
"r"Okuma (Read) — Varsayılan mod❌ Hata verirBaştan okur
"w"Yazma (Write)✅ Yeni dosya oluşturur⚠️ İçeriği siler, baştan yazar
"a"Ekleme (Append)✅ Yeni dosya oluştururSonuna ekler
"r+"Okuma + Yazma❌ Hata verirOkur ve yazar
"rb"Binary okuma❌ Hata verirBinary olarak okur
"wb"Binary yazma✅ Yeni dosya oluştururBinary olarak yazar

Text Dosya Yazma

# ─── Dosyaya Yazma ───

# Yöntem 1: with bloğu (önerilen ✅)
# 'with' bloğu dosyayı otomatik kapatır
with open("ornek.txt", "w", encoding="utf-8") as dosya:
    dosya.write("Merhaba Dünya!\n")
    dosya.write("Bu ilk satır.\n")
    dosya.write("Bu ikinci satır.\n")
    dosya.write("Büyük Veri Teknolojileri dersi.\n")

print("✅ Dosya başarıyla yazıldı!")

# Yöntem 2: writelines ile birden fazla satır
satirlar = [
    "Birinci satır\n",
    "İkinci satır\n",
    "Üçüncü satır\n"
]

with open("ornek2.txt", "w", encoding="utf-8") as dosya:
    dosya.writelines(satirlar)

# Yöntem 3: Sonuna ekleme (append)
with open("ornek.txt", "a", encoding="utf-8") as dosya:
    dosya.write("Bu satır sonradan eklendi.\n")
💡 encoding="utf-8" Nedir?
Encoding (karakter kodlaması), harflerin bilgisayarda nasıl temsil edildiğini belirler. utf-8 kullanmak, Türkçe karakterlerin (ş, ç, ğ, ü, ö, ı, İ) doğru görünmesini sağlar. Her zaman encoding="utf-8" parametresini eklemenizi öneriyoruz.

Text Dosya Okuma

# ─── Dosyadan Okuma ───

# Tüm içeriği tek seferde okuma
with open("ornek.txt", "r", encoding="utf-8") as dosya:
    icerik = dosya.read()
    print("=== Tüm İçerik ===")
    print(icerik)

# Satır satır okuma (büyük dosyalar için önerilir!)
print("=== Satır Satır ===")
with open("ornek.txt", "r", encoding="utf-8") as dosya:
    for satir_no, satir in enumerate(dosya, 1):
        print(f"Satır {satir_no}: {satir.strip()}")

# Tüm satırları listeye alma
with open("ornek.txt", "r", encoding="utf-8") as dosya:
    satirlar = dosya.readlines()
    print(f"\nToplam {len(satirlar)} satır var.")
    print(f"İlk satır: {satirlar[0].strip()}")
    print(f"Son satır: {satirlar[-1].strip()}")
🚫 Büyük Dosyalarda Dikkat!
dosya.read() tüm dosyayı RAM'e yükler. 10 GB'lık bir dosyada bunu yaparsanız bilgisayarınızın belleği dolabilir! Büyük dosyaları her zaman satır satır (for satir in dosya) okuyun. Bu, büyük verinin temel prensiplerinden biridir.

📊 Bölüm 4: CSV Formatı

CSV Nedir?

CSV (Comma-Separated Values — Virgülle Ayrılmış Değerler), tablo verilerini düz metin olarak saklayan bir formattır. Her satır bir kayıt (record), her virgülle ayrılmış parça bir alan (field) temsil eder.

isim,yas,bolum,not_ortalamasi
Ahmet,21,Bilişim,85.5
Ayşe,22,Bilişim,92.3
Mehmet,20,Bilişim,78.1
Fatma,21,Bilişim,88.7

Yukarıdaki CSV dosyasını tablo olarak düşünürsek:

isimyasbolumnot_ortalamasi
Ahmet21Bilişim85.5
Ayşe22Bilişim92.3
Mehmet20Bilişim78.1
Fatma21Bilişim88.7

CSV'nin Temel Özellikleri

CSV Türleri (Ayraç Çeşitleri)

"CSV" adında "virgül" geçse de, aslında farklı ayraçlar (delimiter/separator) kullanılabilir:

TürAyraçDosya UzantısıÖrnek SatırKullanım Alanı
CSV (Virgül),.csvAhmet,21,85.5Uluslararası standart
TSV (Tab)\t (Tab tuşu).tsv veya .csvAhmet 21 85.5Metin içinde virgül varsa
SSV (Noktalı virgül);.csvAhmet;21;85.5Avrupa ülkeleri (ondalık virgül)
Pipe-separated|.csv veya .txtAhmet|21|85.5Veri ambarları, eski sistemler
⚠️ Türkiye'de Dikkat!
Türkiye'de ondalık ayracı olarak virgül kullanılır (85,5 gibi). Bu durumda CSV'de virgül hem ayraç hem ondalık olur ve karışır! Bu yüzden Türk Excel'leri genellikle noktalı virgül (;) ile CSV oluşturur. Veri okurken sep=";" parametresini kullanmayı unutmayın.

Python ile CSV Okuma ve Yazma

csv Modülü ile (Yerleşik)

import csv

# ─── CSV Dosyası Oluşturma ───
ogrenciler = [
    ["isim", "yas", "bolum", "not_ortalamasi"],
    ["Ahmet", 21, "Bilişim", 85.5],
    ["Ayşe", 22, "Bilişim", 92.3],
    ["Mehmet", 20, "Bilişim", 78.1],
    ["Fatma", 21, "Bilişim", 88.7],
]

with open("ogrenciler.csv", "w", newline="", encoding="utf-8") as dosya:
    yazici = csv.writer(dosya)
    for satir in ogrenciler:
        yazici.writerow(satir)

print("✅ CSV dosyası oluşturuldu!")

# ─── CSV Dosyası Okuma ───
print("\n=== CSV Dosyası İçeriği ===")
with open("ogrenciler.csv", "r", encoding="utf-8") as dosya:
    okuyucu = csv.reader(dosya)
    baslik = next(okuyucu)  # İlk satır (başlık)
    print(f"Sütunlar: {baslik}")
    print("-" * 40)
    for satir in okuyucu:
        print(f"  {satir[0]:10s} | Yaş: {satir[1]} | Not: {satir[3]}")

# ─── DictReader ile okuma (daha pratik!) ───
print("\n=== DictReader ile ===")
with open("ogrenciler.csv", "r", encoding="utf-8") as dosya:
    okuyucu = csv.DictReader(dosya)
    for satir in okuyucu:
        print(f"  {satir['isim']} - {satir['bolum']} - Not: {satir['not_ortalamasi']}")

CSV ve Excel (XLS/XLSX) Karşılaştırması

Öğrenciler sıklıkla CSV ve Excel'i karıştırır. İkisi de tablo verisi tutar ama yapıları çok farklıdır:

ÖzellikCSV (.csv)Excel (.xlsx)
Dosya Türü📄 Text (düz metin)🔢 Binary (sıkıştırılmış XML)
Açma YöntemiHerhangi bir metin editörüExcel, LibreOffice veya özel kütüphane
Formatlama❌ Yok (renk, kalın, italik yok)✅ Var (renk, yazı tipi, kenarlık vb.)
Formüller❌ Yok✅ Var (=TOPLA, =EĞER vb.)
Çoklu Sayfa❌ Tek tablo✅ Birden fazla sheet
Grafikler❌ Yok✅ Var
Boyut✅ Çok küçük❌ Daha büyük
Satır Limiti✅ Sınırsız❌ 1.048.576 satır
Hız✅ Çok hızlı okunur❌ Daha yavaş
Programla İşleme✅ Çok kolay⚠️ Özel kütüphane gerekir (openpyxl)
Büyük Veride?✅ Yaygın kullanılır❌ Tercih edilmez (performans)
🎯 Sonuç
Büyük veri dünyasında CSV tercih edilir çünkü basit, hafif ve her araçla okunabilir. Excel, insan tarafından "bakılacak" raporlar için uygunken; CSV, bilgisayarlar tarafından "işlenecek" veriler için idealdir.

📋 Bölüm 5: JSON Formatı

JSON Nedir?

JSON (JavaScript Object Notation), verileri anahtar-değer çiftleri halinde saklayan, insanlar tarafından okunabilir bir veri formatıdır. Adında "JavaScript" geçse de, tüm programlama dillerinde kullanılır.

Bugün internette veri alışverişinin büyük çoğunluğu JSON formatındadır. API'ler (web servisleri) JSON döndürür, MongoDB gibi NoSQL veritabanları JSON benzeri yapıda veri saklar.

JSON'un Yapısı

{
    "isim": "Ahmet",
    "soyisim": "Yılmaz",
    "yas": 21,
    "ogrenci_mi": true,
    "boy": 1.75,
    "adres": null,
    "bolum": "Bilişim Teknolojileri",
    "notlar": [85, 92, 78, 95],
    "iletisim": {
        "email": "ahmet@mail.com",
        "telefon": "0555-123-4567"
    },
    "hobiler": ["programlama", "yüzme", "satranç"]
}

JSON'da Kullanılabilen Veri Tipleri

JSON TipiAçıklamaÖrnekPython Karşılığı
StringMetin (çift tırnak ile!)"Merhaba"str
NumberSayı (tam veya ondalıklı)42, 3.14int, float
BooleanMantıksal değertrue, falseTrue, False
NullBoş/tanımsız değernullNone
ArraySıralı liste[1, 2, 3]list
ObjectAnahtar-değer çiftleri{"a": 1}dict
⚠️ JSON vs Python Farkları
  • JSON'da true/false (küçük harf) → Python'da True/False (büyük harf)
  • JSON'da null → Python'da None
  • JSON'da anahtarlar sadece çift tırnak "key" → Python'da tek tırnak da olur
  • JSON'da son elemandan sonra virgül olmaz → Python'da olabilir (trailing comma)

İç İçe (Nested) JSON

JSON'un gerçek gücü, iç içe yapılar oluşturabilmesidir. Gerçek dünyada API'lerden gelen veriler genellikle iç içe geçmiş yapılardadır:

{
    "universite": "XYZ Üniversitesi",
    "bolum": "Bilişim Teknolojileri",
    "donem": "2025-2026 Bahar",
    "ders": {
        "ad": "Büyük Veri Teknolojileri",
        "saat": "2+3",
        "akts": 5
    },
    "ogrenciler": [
        {
            "id": 1,
            "isim": "Ahmet Yılmaz",
            "notlar": {
                "vize": 85,
                "final": 90,
                "ortalama": 88.0
            }
        },
        {
            "id": 2,
            "isim": "Ayşe Demir",
            "notlar": {
                "vize": 92,
                "final": 88,
                "ortalama": 89.6
            }
        }
    ],
    "toplam_ogrenci": 2,
    "aktif": true
}

Python ile JSON İşlemleri

import json

# ─── Python Sözlüğünden JSON Oluşturma ───
ogrenci = {
    "isim": "Ahmet",
    "yas": 21,
    "notlar": [85, 92, 78],
    "aktif": True,
    "adres": None,
    "iletisim": {
        "email": "ahmet@mail.com",
        "telefon": "0555-123-4567"
    }
}

# Sözlüğü JSON string'e çevirme
json_str = json.dumps(ogrenci, ensure_ascii=False, indent=4)
print("=== JSON String ===")
print(json_str)

# ─── JSON Dosyasına Yazma ───
with open("ogrenci.json", "w", encoding="utf-8") as dosya:
    json.dump(ogrenci, dosya, ensure_ascii=False, indent=4)
print("\n✅ JSON dosyası yazıldı!")

# ─── JSON Dosyasından Okuma ───
with open("ogrenci.json", "r", encoding="utf-8") as dosya:
    okunan = json.load(dosya)

print("\n=== Okunan Veri ===")
print(f"İsim: {okunan['isim']}")
print(f"E-posta: {okunan['iletisim']['email']}")
print(f"Notlar: {okunan['notlar']}")
print(f"Not ortalaması: {sum(okunan['notlar']) / len(okunan['notlar']):.1f}")
💡 json.dumps() Parametreleri
  • ensure_ascii=False — Türkçe karakterlerin doğru görünmesi için
  • indent=4 — Güzel görünüm için 4 boşluk girinti
  • sort_keys=True — Anahtarları alfabetik sırala (opsiyonel)

JSON Dizisi (Array of Objects)

Birden fazla kayıt içeren JSON dosyaları genellikle bir dizi (array) şeklindedir:

import json

# Birden fazla öğrenci
ogrenciler = [
    {"isim": "Ahmet", "yas": 21, "not": 85},
    {"isim": "Ayşe", "yas": 22, "not": 92},
    {"isim": "Mehmet", "yas": 20, "not": 78},
    {"isim": "Fatma", "yas": 21, "not": 88},
]

# JSON dosyasına yaz
with open("sinif.json", "w", encoding="utf-8") as f:
    json.dump(ogrenciler, f, ensure_ascii=False, indent=2)

# JSON dosyasından oku ve işle
with open("sinif.json", "r", encoding="utf-8") as f:
    sinif = json.load(f)

# Veri analizi
print(f"Toplam öğrenci: {len(sinif)}")
notlar = [o["not"] for o in sinif]
print(f"En yüksek not: {max(notlar)}")
print(f"Ortalama: {sum(notlar) / len(notlar):.1f}")

# Filtreleme
basarili = [o for o in sinif if o["not"] >= 80]
print(f"\n80 ve üzeri alanlar:")
for o in basarili:
    print(f"  🎓 {o['isim']}: {o['not']}")

CSV vs JSON Karşılaştırması

ÖzellikCSVJSON
YapıDüz tablo (satır-sütun)İç içe geçebilen ağaç yapısı
OkunabilirlikTablo formatında kolayHiyerarşik yapı için kolay
Boyut✅ Daha küçük❌ Daha büyük (anahtar isimleri tekrarlanır)
Veri tipi❌ Hepsi metin✅ String, number, boolean, null
İç içe veri❌ Desteklemez✅ Tam destek
Web API'ler❌ Nadir✅ Standart format
Büyük tablolar✅ İdeal⚠️ Şişebilir
Şemasıİlk satır başlıkHer kayıtta anahtar ismi var
💜 Ne Zaman Hangisi?
  • CSV: Büyük tablolar, veri analizi, raporlama, veritabanı import/export
  • JSON: API'ler, yapılandırma dosyaları, iç içe veriler, web uygulamaları, NoSQL veritabanları

🐼 Bölüm 6: Pandas Kütüphanesine Giriş

Pandas, Python'da veri analizi için en çok kullanılan kütüphanedir. Adı "Panel Data" (panel veri) kelimelerinden gelir. CSV, Excel, JSON, SQL gibi kaynaklardan veri okuyabilir ve güçlü veri işleme yetenekleri sunar.

Neden Pandas?

❌ Pandas Olmadan
import csv

# Önce örnek CSV dosyasını oluşturalım
with open("veri.csv", "w", newline="", encoding="utf-8") as f:
    yazici = csv.writer(f)
    yazici.writerows([
        ["isim", "yas", "bolum", "not"],
        ["Ahmet", 21, "Bilişim", 85],
        ["Ayşe", 22, "Bilişim", 92],
        ["Mehmet", 20, "Elektrik", 78],
        ["Fatma", 21, "Bilişim", 88],
    ])

toplam = 0
sayac = 0
with open("veri.csv") as f:
    okuyucu = csv.DictReader(f)
    for satir in okuyucu:
        if satir["bolum"] == "Bilişim":
            toplam += float(satir["not"])
            sayac += 1
print(f"Ort: {toplam/sayac:.1f}")
✅ Pandas ile
import pandas as pd

# veri.csv önceki blokta oluşturuldu
df = pd.read_csv("veri.csv")
ort = df[df["bolum"] == "Bilişim"]["not"].mean()
print(f"Ort: {ort:.1f}")

# 10+ satır kod vs 3 satır kod!

DataFrame ve Series

Pandas'ın iki temel veri yapısı vardır:

📊
DataFrame
İki boyutlu tablo yapısı. Satırları ve sütunları vardır. Excel tablosu gibi düşünebilirsiniz. CSV, JSON, SQL gibi kaynaklardan oluşturulabilir.
📏
Series
Tek boyutlu dizi yapısı. DataFrame'in her bir sütunu aslında bir Series'dir. NumPy array'ine benzer ama daha güçlüdür.

Pandas Kurulumu ve İlk Adımlar

# Kurulum (Google Colab'da zaten kurulu!)
pip install pandas

# Jupyter/Colab'da:
# !pip install pandas

DataFrame Oluşturma

import pandas as pd

# ─── 1) Sözlükten DataFrame oluşturma ───
veri = {
    "isim": ["Ahmet", "Ayşe", "Mehmet", "Fatma", "Ali"],
    "yas": [21, 22, 20, 21, 23],
    "bolum": ["Bilişim", "Bilişim", "Elektrik", "Bilişim", "Elektrik"],
    "not_ort": [85.5, 92.3, 78.1, 88.7, 65.4],
}

df = pd.DataFrame(veri)
print(df)
print(f"\nBoyut: {df.shape}")  # (5, 4) → 5 satır, 4 sütun

CSV Dosyasından Okuma

import pandas as pd

# CSV'den okuma (en sık kullanılan yöntem!)
# df = pd.read_csv("ogrenciler.csv")

# Türkçe CSV'ler için (noktalı virgül ayraçlı)
# df = pd.read_csv("veri.csv", sep=";", encoding="utf-8")

# Örnek olarak sözlükten oluşturalım
df = pd.DataFrame({
    "isim": ["Ahmet", "Ayşe", "Mehmet", "Fatma", "Ali", "Zeynep"],
    "yas": [21, 22, 20, 21, 23, 22],
    "bolum": ["Bilişim", "Bilişim", "Elektrik", "Bilişim", "Elektrik", "Bilişim"],
    "not_ort": [85.5, 92.3, 78.1, 88.7, 65.4, 91.0],
    "devamsizlik": [2, 0, 5, 1, 8, 0]
})

# ─── Temel Keşif Fonksiyonları ───

# İlk 5 satır (varsayılan)
print("=== head() ===")
print(df.head())

# Son 3 satır
print("\n=== tail(3) ===")
print(df.tail(3))

# Genel bilgi
print("\n=== info() ===")
print(df.info())

# İstatistiksel özet
print("\n=== describe() ===")
print(df.describe())

# Sütun isimleri
print(f"\nSütunlar: {list(df.columns)}")

# Boyut
print(f"Boyut: {df.shape[0]} satır, {df.shape[1]} sütun")

# Veri tipleri
print(f"\nVeri Tipleri:\n{df.dtypes}")

Veri Seçme ve Filtreleme

import pandas as pd

df = pd.DataFrame({
    "isim": ["Ahmet", "Ayşe", "Mehmet", "Fatma", "Ali", "Zeynep"],
    "yas": [21, 22, 20, 21, 23, 22],
    "bolum": ["Bilişim", "Bilişim", "Elektrik", "Bilişim", "Elektrik", "Bilişim"],
    "not_ort": [85.5, 92.3, 78.1, 88.7, 65.4, 91.0],
})

# ─── Sütun Seçme ───
print("=== Tek sütun (Series) ===")
print(df["isim"])

print("\n=== Birden fazla sütun (DataFrame) ===")
print(df[["isim", "not_ort"]])

# ─── Koşullu Filtreleme ───
print("\n=== Notu 80'den yüksek olanlar ===")
basarili = df[df["not_ort"] > 80]
print(basarili)

print("\n=== Bilişim bölümündekiler ===")
bilisim = df[df["bolum"] == "Bilişim"]
print(bilisim)

# ─── Birden Fazla Koşul ───
print("\n=== Bilişim + Not > 85 ===")
filtre = df[(df["bolum"] == "Bilişim") & (df["not_ort"] > 85)]
print(filtre)

# ─── Sıralama ───
print("\n=== Nota göre sıralama (büyükten küçüğe) ===")
print(df.sort_values("not_ort", ascending=False))

# ─── Yeni Sütun Ekleme ===
df["harf_notu"] = df["not_ort"].apply(
    lambda x: "AA" if x >= 90 else "BA" if x >= 80 else "BB" if x >= 70 else "CB" if x >= 60 else "FF"
)
print("\n=== Harf Notu Eklendi ===")
print(df)

Gruplama ve Toplama (groupby)

import pandas as pd

df = pd.DataFrame({
    "isim": ["Ahmet", "Ayşe", "Mehmet", "Fatma", "Ali", "Zeynep"],
    "bolum": ["Bilişim", "Bilişim", "Elektrik", "Bilişim", "Elektrik", "Bilişim"],
    "not_ort": [85.5, 92.3, 78.1, 88.7, 65.4, 91.0],
    "devamsizlik": [2, 0, 5, 1, 8, 0]
})

# Bölüme göre gruplama
print("=== Bölüm bazında ortalama not ===")
bolum_ort = df.groupby("bolum")["not_ort"].mean()
print(bolum_ort)

# Birden fazla istatistik
print("\n=== Bölüm bazında detaylı istatistik ===")
bolum_detay = df.groupby("bolum").agg({
    "not_ort": ["mean", "min", "max", "count"],
    "devamsizlik": "sum"
})
print(bolum_detay)

# value_counts: Benzersiz değerlerin sayısı
print("\n=== Bölüm dağılımı ===")
print(df["bolum"].value_counts())

Pandas ile Farklı Formatları Okuma

FormatOkumaYazmaNot
CSVpd.read_csv("dosya.csv")df.to_csv("dosya.csv")En yaygın format
Excelpd.read_excel("dosya.xlsx")df.to_excel("dosya.xlsx")openpyxl gerekir
JSONpd.read_json("dosya.json")df.to_json("dosya.json")İç içe yapılar için dikkat
SQLpd.read_sql(query, conn)df.to_sql("tablo", conn)Veritabanı bağlantısı gerekir
Parquetpd.read_parquet("dosya.parquet")df.to_parquet("dosya.parquet")Büyük veri için ideal format
HTMLpd.read_html("url")df.to_html("dosya.html")Web tablolarını çekebilir

📐 Bölüm 7: Veri Modelleme (Genel Bakış)

Veri modelleme, verilerin nasıl organize edileceğini, saklanacağını ve birbirleriyle nasıl ilişkilendirileceğini planlama sürecidir. Bir binanın mimari planı gibi düşünebilirsiniz — inşaata başlamadan önce planı çizersiniz.

Veri Modeli Türleri

graph LR A["📋 Kavramsal Model
NE saklanacak?
İş dünyasının bakışı"] --> B["📊 Mantıksal Model
NASIL organize edilecek?
Tablo ve ilişkiler"] B --> C["💾 Fiziksel Model
NEREDE saklanacak?
Veritabanı yapısı"]
Şekil 2: Veri modellemenin üç aşaması
Model TürüSoruDetay SeviyesiKim İçin?Örnek
KavramsalNE saklanacak?En genelİş analistleri, yöneticiler"Öğrenci, Ders, Not bilgileri tutulacak"
MantıksalNASIL organize edilecek?OrtaVeri analistleri, tasarımcılar"Öğrenci tablosu: id, isim, bölüm sütunları"
FizikselNEREDE, hangi teknoloji?En detaylıVeritabanı yöneticileri"PostgreSQL, id INTEGER PRIMARY KEY..."
💡 Bu Derste
Veri modellemeyi bu hafta sadece tanıtım düzeyinde görüyoruz. Hafta 4'te SQL ve veritabanı konusuna geçtiğimizde mantıksal ve fiziksel modellemeyi daha detaylı öğreneceğiz.

🌍 Bölüm 8: Büyük Veri Platformları

Veri analizi ve büyük veri projelerinde en önemli şeylerden biri veri bulmaktır. Neyse ki, ücretsiz ve kaliteli veri setleri sunan platformlar var. Bu platformlarda hesap açmanızı ve keşfetmenizi şiddetle tavsiye ediyoruz!

⚠️ Önemli: Hesap Açma Gereksinimleri

Bu ders boyunca aşağıdaki platformlarda hesabınızın olması zorunludur:

  1. GitHub — Ödevler GitHub Classroom üzerinden verilecek. İlk haftanın notlarındaki yönergeleri izleyerek hesap açın.
  2. Kaggle — Veri setleri indirmek ve notebook'ları incelemek için
  3. HuggingFace — Yapay zeka modelleri ve veri setleri için

🏆 Kaggle

🏆 Kaggle — kaggle.com

Google'a ait olan Kaggle, dünyanın en büyük veri bilimi topluluğudur.

  • 📊 Datasets: 200.000+ ücretsiz veri seti (CSV, JSON, resim, metin...)
  • 🏅 Competitions: Ödüllü yarışmalar (Netflix Prize gibi)
  • 📓 Notebooks: Hazır Jupyter notebook'ları (başkalarının çözümlerini inceleyebilirsiniz)
  • 📚 Learn: Ücretsiz dersler (Python, Pandas, ML...)
  • ☁️ Free GPU/TPU: Ücretsiz bilgi işlem gücü
📝 Yapmanız Gereken
  1. kaggle.com adresine gidin ve ücretsiz hesap açın
  2. "Datasets" bölümüne girin ve "student" veya "turkey" gibi aratın
  3. Bir veri setini indirip Colab'da açmayı deneyin
  4. "Learn" bölümündeki "Pandas" kursuna göz atın (ücretsiz ve çok faydalı!)

🤗 HuggingFace

🤗 HuggingFace — huggingface.co

Yapay zeka ve NLP (doğal dil işleme) alanında en popüler platform. Son yıllarda veri setleri konusunda da Kaggle'a rakip oldu.

  • 📊 Datasets: 100.000+ veri seti (özellikle metin ve dil verileri)
  • 🤖 Models: 500.000+ hazır AI modeli
  • 🚀 Spaces: Hazır demo uygulamaları
  • 📚 Course: Ücretsiz NLP ve ML dersleri

Diğer Faydalı Platformlar

PlatformURLÖzellik
UCI ML Repositoryarchive.ics.uci.eduAkademik veri setleri (Iris, Wine, Titanic...)
Google Dataset Searchdatasetsearch.research.google.comVeri setleri için Google araması
data.govdata.govABD devlet açık verileri
TÜİKdata.tuik.gov.trTürkiye İstatistik Kurumu verileri
GitHub Awesome Datasetsgithub.com/awesome...Kategorize edilmiş veri seti listesi

📄 Bölüm 9: Diğer Önemli Dosya Formatları

CSV ve JSON dışında, büyük veri dünyasında sıkça karşılaşacağınız birkaç format daha var:

Apache Parquet

Parquet, büyük veri için optimize edilmiş sütun tabanlı (columnar) bir binary formattır. Spark, Pandas ve diğer büyük veri araçlarıyla doğrudan çalışır.

📊 Satır Tabanlı (CSV)

Tüm sütunları satır satır okur. Tek bir sütun istesen bile tüm satırı okumak zorundasın.

Ahmet, 21, Bilişim, 85
Ayşe,  22, Bilişim, 92
Mehmet,20, Elektrik,78
📊 Sütun Tabanlı (Parquet)

Her sütunu ayrı ayrı saklar. Sadece istediğin sütunu okuyabilirsin → çok daha hızlı!

isim:  [Ahmet, Ayşe, Mehmet]
yas:   [21, 22, 20]
bolum: [Bilişim, Bilişim, Elektrik]
not:   [85, 92, 78]
💡 Neden Parquet?
10 GB'lık bir CSV dosyasından sadece "not" sütununu okumak istiyorsanız, CSV tüm 10 GB'ı okumalıdır. Parquet ise sadece "not" sütununun verisini okur — belki sadece 200 MB. Bu, büyük veride devasa bir performans farkı yaratır. İleriki haftalarda Parquet'i PySpark ile kullanacağız.

XML (Extensible Markup Language)

HTML'e benzeyen, etiket tabanlı bir veri formatıdır. Eskiden çok kullanılırdı, bugün yerini büyük ölçüde JSON'a bıraktı.

<ogrenciler>
    <ogrenci>
        <isim>Ahmet</isim>
        <yas>21</yas>
        <bolum>Bilişim</bolum>
    </ogrenci>
    <ogrenci>
        <isim>Ayşe</isim>
        <yas>22</yas>
        <bolum>Bilişim</bolum>
    </ogrenci>
</ogrenciler>

Tüm Formatların Karşılaştırması

FormatTürOkunabilir?BoyutHızBüyük Veride?
CSVText✅ EvetOrtaOrtaYaygın (giriş)
JSONText✅ EvetBüyükOrtaAPI, NoSQL
ExcelBinary❌ Özel programOrtaYavaş❌ Uygun değil
ParquetBinary❌ Özel araç✅ Çok küçük✅ Çok hızlı✅ İdeal
XMLText⚠️ ZorÇok büyükYavaş❌ Eski
AvroBinary❌ Özel araçKüçükHızlı✅ Kafka, Spark

📋 Bölüm Özeti

Bu Hafta Neler Öğrendik?
  • Veri kavramı: Data (Latince: datum = "verilmiş şey"), veri ile bilgi arasındaki fark
  • Insight (içgörü): Veriden elde edilen derin, eyleme dönüştürülebilir anlam
  • Veri neden önemli? "Veri yeni petroldür" (Clive Humby), Walmart/Netflix/Tesla anekdotları
  • Neden şimdi? Ucuzlayan depolama, internet, IoT, yapay zeka → veri patlaması
  • Veri patlaması: Dakikada 231M e-posta, 6.3M Google araması; 2010: 2ZB → 2025: 181ZB
  • Excel neden yetmiyor? 1M satır limiti, tek bilgisayar RAM'i, real-time işleme yok
  • Büyük verinin 5V'si: Volume, Velocity, Variety, Veracity, Value — somut örneklerle
  • DIKW piramidi: Veri → Bilgi → Bilgi Birikimi → Bilgelik (John Snow kolera haritası)
  • Veri türleri: Yapılandırılmış (%20), yarı-yapılandırılmış (%10), yapılandırılmamış (%70-80)
  • İşaretli vs İşaretsiz: Labeled → Supervised, Unlabeled → Unsupervised Learning
  • Veri toplama yöntemleri: API, web scraping, crawler, sensörler, loglar, açık veri
  • Dosya türleri: Text (.csv, .json, .py) vs Binary (.xlsx, .jpg, .parquet)
  • CSV & JSON: Yapıları, Python ile okuma/yazma, csv ve json modülleri
  • Pandas: DataFrame/Series, head/info/describe, filtreleme, groupby
  • Veri modelleme: Kavramsal → Mantıksal → Fiziksel model
  • Platformlar: Kaggle, HuggingFace, UCI, Google Dataset Search, TÜİK
  • Diğer formatlar: Parquet (sütun tabanlı, hızlı), XML (eski), Avro
🐍 Daha Fazla Python İçin

Python bilgilerinizi tazelemek veya derinleştirmek isterseniz, geçen dönemki ders notlarına göz atabilirsiniz:

👉 gusanmaz.github.io/algs/

📝 Ev Ödevi
  1. Henüz açmadıysanız bir GitHub hesabı oluşturun — ödevler GitHub Classroom üzerinden verilecektir
  2. Kaggle ve HuggingFace'te hesap açın
  3. Kaggle'dan ilginizi çeken bir CSV veri seti indirin
  4. Bu veri setini Google Colab'da Pandas ile açın ve şunları yapın:
    • head(), info(), describe() çıktılarını inceleyin
    • En az 2 farklı filtreleme yapın
    • Bir sütuna göre groupby yapıp ortalama hesaplayın
  5. Aynı veriyi JSON formatında kaydedin (df.to_json()) ve dosya boyutlarını karşılaştırın
  6. (Bonus) Python ile kendi .csv dosyanızı sıfırdan oluşturun (5 sütun, 10 satır)
Python motoru yükleniyor...