Python ile Veri Dünyasına Giriş: CSV Dosyalarını İşleme ve Analiz Etme

Günümüzde verinin en yaygın ve basit saklama biçimlerinden biri olan CSV (Comma Separated Values), düz metin dosyaları üzerinden tablolar oluşturmamıza olanak tanır. İster basit bir müşteri listesi olsun, ister milyonlarca satırlık bir satış raporu; CSV dosyaları, farklı yazılımlar arasında veri taşımak için evrensel bir standarttır.

Python, sunduğu geniş kütüphane ekosistemi sayesinde CSV verilerini işlemek için dünyadaki en güçlü dillerden biridir. Bu yazımızda, veri işleme süreçlerini iki farklı perspektiften inceleyeceğiz: Python’un standart kütüphanesi ile hafif çözümler ve Pandas ile gelişmiş analizler.

🚀 Projenin Genel Yetenekleri

Bu çalışma, gerçek dünya senaryolarına uygun bir satış veri kümesi üzerinden şu işlemleri gerçekleştirir:

  • Otomatik Veri Üretimi: Test süreçleri için dinamik CSV dosyaları oluşturma.
  • Sözlük Tabanlı Okuma: Sütun isimlerini anahtar olarak kullanan esnek veri okuma yöntemi.
  • Özel Filtreleme: Belirli kriterlere (örneğin kategoriye) göre verileri ayıklama.
  • Sayısal Analiz: Minimum, maksimum ve ortalama gibi temel istatistiklerin hesaplanması.
  • Veri Yazma: İşlenmiş ve filtrelenmiş verileri yeni bir CSV dosyasına kaydetme.
  • Grup Tabanlı Özetleme: Pandas ile kategorilere göre toplu analizler yapma.

🛠️ Kodun Anatomisi

Projenin geliştirme detayları şu şekildedir:

Proje Detayları

  • Yazar: Ahmet Aksoy
  • Tarih: 19 Nisan 2026
  • Ortam: Python 3.12 / Ubuntu 24.04
  • Temel Teknolojiler: Python csv Modülü, Pandas

🔍 Teknik Derinlik: İki Farklı Yaklaşım

1. Hafif ve Bağımsız: Standart csv Modülü

Harici hiçbir kütüphane yüklemeden, sadece Python’un yerleşik araçlarıyla CSV işlemleri yapmak mümkündür. Bu yaklaşım, özellikle bağımlılıkların minimumda tutulması gereken küçük scriptler için idealdir.

Buradaki en kritik araç csv.DictReader sınıfıdır. Bu sınıf, her satırı bir sözlük (dictionary) olarak döndürür, böylece sütunların sırası değişse bile biz veriye sütun adı üzerinden erişebiliriz.

import csv

def read_csv_rows(path):
    with open(path, "r", newline="") as f:
        # DictReader sayesinde sütun isimleri anahtar olur
        reader = csv.DictReader(f)
        return list(reader)

Ayrıca, filtrelenmiş verileri kaydetmek için csv.DictWriter kullanarak başlıkları koruyan temiz dosyalar oluşturabiliriz.

2. Veri Biliminin Gücü: Pandas

Veri setiniz büyüdüğünde veya karmaşık istatistiksel analizlere ihtiyaç duyduğunuzda, standart kütüphane yetersiz kalmaya başlar. İşte burada devreye Pandas girer. Pandas, veriyi “DataFrame” adı verilen güçlü bir tablo yapısında tutar.

Örneğin, tüm kategorilerin toplam satış tutarını ve ortalamasını hesaplamak, standart Python ile onlarca satır kod gerektirirken Pandas ile sadece tek bir satıra iner:

import pandas as pd

def pandas_group_stats(path):
    df = pd.read_csv(path)
    # Kategorilere göre grupla ve toplam, ortalama, sayım hesapla
    grouped = df.groupby("category")["total"].agg(['sum', 'mean', 'count'])
    return grouped

⚖️ Karşılaştırma: Hangisini Seçmeli?

Özellikcsv ModülüPandas Kütüphanesi
KurulumGerektirmez (Yerleşik)pip install pandas gerekir
Hız (Küçük Veri)Çok HızlıOrta
Hız (Büyük Veri)Yavaş (Manuel Döngüler)Çok Hızlı (Vektörize İşlemler)
Kullanım KolaylığıTemel İşlemler İçin UygunAnaliz ve Raporlama İçin Rakipsiz
Bellek KullanımıDüşükYüksek

🏁 Sonuç

CSV işlemleri, veri biliminin ve otomasyonun ilk basamağıdır. Python’un yerleşik csv modülü ile temel dosya G/Ç işlemlerini öğrenmek, ardından Pandas gibi devasa kütüphanelere geçiş yapmak, bir geliştiricinin veri manipülasyonu yeteneklerini en üst seviyeye taşır.

Kendi projelerinizde, eğer sadece bir dosyayı okuyup basit bir filtreleme yapacaksanız standart modülü; ancak veriden anlamlı sonuçlar çıkarmak ve raporlar hazırlamak istiyorsanız Pandas’ı tercih edin.

Ahmet Aksoy

Not: Bu yazıda incelediğimiz kodu ve benzer projelerin kaynak kodlarını https://github.com/ahmetax/practical-python-examples adresinde bulabilirsiniz.

Python, #CSV, #Pandas, #VeriAnalizi, #DataScience

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir