İçindekiler
Python ile Veri Analizi: Pandas, NumPy ve Matplotlib ile Profesyonel Analiz Rehberi
Bu kapsamlı rehber, yapay zeka desteğini kullanarak Python programlama dili ile profesyonel düzeyde veri analizi yapabilmeniz, Pandas kütüphanesi ile karmaşık DataFrame işlemlerini gerçekleştirebilmeniz, NumPy ile yüksek performanslı sayısal hesaplamalar yapabilmeniz ve Matplotlib ile verilerinizi görselleştirebilmeniz için tasarlanmış detaylı prompt şablonlarını ve en iyi pratikleri bir araya getirerek sunmaktadır.
🐍 Geliştirici Notu: Bu rehberdeki kod örnekleri Python 3.8 ve üzeri versiyonlar için optimize edilmiş olup, Pandas 1.5+, NumPy 1.21+ ve Matplotlib 3.5+ versiyonları ile test edilmiştir, bu nedenle kütüphane versiyonlarınızı belirtmeniz AI nin size daha uygun çözümler üretmesine yardımcı olacaktır ve ayrıca büyük veri setleriyle çalışırken memory kullanımına özellikle dikkat etmeniz, gerektiğinde chunk processing veya dask gibi alternatif kütüphaneleri değerlendirmeniz önerilmektedir.
Pandas Kütüphanesi ile Veri Yükleme ve Temel İşlemler
DataFrame Oluşturma ve Çeşitli Kaynaklardan Veri Okuma
Pandas kütüphanesi, veri analizi süreçlerinin temelini oluşturan DataFrame yapısını sunarak, farklı formatlardaki veri kaynaklarından verileri kolayca yüklemenize, temizlemenize ve analiz etmenize olanak tanıyan güçlü bir araçtır ve bu bölümde CSV, Excel, SQL veritabanları, JSON dosyaları ve hatta API endpoint lerinden nasıl veri yükleyebileceğinizi, veri tiplerini nasıl dönüştüreceğinizi ve ilk preprocessing adımlarını nasıl gerçekleştireceğinizi detaylı olarak inceleyeceğiz.
PANDAS İLE VERİ YÜKLEME ve DATAFRAME OLUŞTURMA
Farklı kaynaklardan veri yükle ve analiz için hazırla.
VERİ KAYNAĞI BİLGİLERİ:
Kaynak tipi: [CSV / Excel / SQL / JSON / Parquet / API]
Dosya yolu veya bağlantı: [Tam yol veya URL]
Dosya boyutu: [Tahmini - küçük/orta/büyük]
Encoding: [utf-8 / latin1 / cp1254 / otomatik tespit]
VERİ YAPISI ÖZELLİKLERİ:
Satır sayısı: [Tahmini veya bilinmiyor]
Sütun sayısı: [Adet veya bilinmiyor]
Başlık satırı: [Var / Yok / Birden fazla satır]
Ayırıcı karakter: [Virgül / Noktalı virgül / Tab / Pipe / Özel]
Tarih sütunları: [Hangi sütunlar tarih içeriyor, format nedir]
Kategorik sütunlar: [Sınırlı değer alanına sahip sütunlar]
PREPROCESSING GEREKSİNİMLERİ:
- Belirli sütunları seç veya atla: [Sütun isimleri]
- Veri tipi dönüşümleri: [int, float, string, datetime, category]
- Eksik değer işleme: [Okurken atla / NaN olarak işaretle / Varsayılan değer ata]
- Index ayarlama: [Hangi sütun index olsun veya otomatik]
- İlk N satır: [Tüm veri / İlk 1000 satır test için]
MEMORY OPTİMİZASYONU:
- Chunk processing gerekli mi: [Evet büyük dosya / Hayır]
- Kategorik dönüşüm: [Tekrarlayan string değerleri category ye dönüştür]
- Downcast numeric: [int64 yerine int32, float64 yerine float32 kullan]
LÜTFEN DETAYLI OLARAK VER:
1. Gerekli import statement ları ve versiyon kontrolü
2. Veri okuma kodu (tüm parametrelerle birlikte optimize edilmiş)
3. İlk veri kalite kontrolü (head, info, describe, dtypes)
4. Memory kullanım analizi ve optimizasyon adımları
5. Eksik veri analizi (isnull, value_counts)
6. Temel istatistiksel özet (her sütun için)
7. Veri validasyon kontrolleri (duplicate check, outlier detection başlangıç)
8. Performance benchmarking (yükleme süresi, memory footprint)Gerçek Dünya Kullanım Senaryosu ve Detaylı Örnek:
SENARYO: E-ticaret Satış Verilerini Yükleme ve Hazırlama
VERİ KAYNAĞI:
CSV dosyası, 500MB, 2 milyon satır
Encoding: utf-8
Ayırıcı: virgül
SÜTUNLAR:
- order_id (string)
- order_date (string, format: DD.MM.YYYY HH:MM:SS)
- customer_id (integer)
- product_category (string, 15 unique değer)
- product_name (string)
- quantity (integer)
- unit_price (float)
- discount_rate (float, 0-100 arası)
- shipping_cost (float)
- payment_method (string, 5 unique değer)
PREPROCESSING:
- order_date i datetime e çevir
- category ve payment_method i kategorik tipe dönüştür
- Toplam satış tutarını hesapla (quantity * unit_price * (1-discount_rate/100))
- Eksik değerleri tespit et ve raporla
MEMORY:
Büyük dosya, chunk processing düşünülebilir
LÜTFEN VER:
Optimized pandas kodu, memory profiling, ilk analizDataFrame Filtreleme ve Koşullu Seçim İşlemleri
Veri analizi süreçlerinde en sık kullanılan işlemlerden biri, büyük veri setlerinden belirli koşulları sağlayan kayıtları seçmek ve filtrelemektir, bu işlemi Pandas da boolean indexing, query metodu, loc ve iloc accessor ları kullanarak gerçekleştirebilirsiniz ve her yöntemin kendine özgü avantajları, dezavantajları ve kullanım senaryoları bulunmaktadır, bu nedenle hangi durumda hangi yöntemi kullanmanız gerektiğini anlamak, kodunuzun hem okunabilirliğini hem de performansını artıracaktır.
DATAFRAME FİLTRELEME ve KOŞULLU SEÇİM
Karmaşık koşullara göre veri filtreleme kodu yaz.
DATAFRAME BİLGİLERİ:
Sütun isimleri ve tipleri: [Detaylı liste]
Satır sayısı: [Tahmini]
FİLTRE KOŞULLARI (Detaylı):
1. Sayısal koşullar: [Örn: yas sütunu 25 ile 45 arasında VEYA gelir 100000 üzerinde]
2. Kategorik koşullar: [Örn: sehir sütunu İstanbul, Ankara veya İzmir değerlerinden biri]
3. Tarih koşulları: [Örn: kayit_tarihi son 90 gün içinde VEYA belirli bir tarih aralığında]
4. String pattern matching: [Örn: email sütunu gmail.com ile biten VEYA isim sütunu belirli harfle başlayan]
5. Null/NotNull kontrolleri: [Örn: telefon sütunu boş OLMAYAN kayıtlar]
6. Kompleks kombinasyonlar: [AND, OR, NOT operatörleri ile birleştirilmiş çoklu koşullar]
ÇIKTI GEREKSİNİMİ:
Hangi sütunları görmek istiyorsun: [Tüm sütunlar / Belirli sütunlar / Hesaplanmış yeni sütunlar]
Sıralama: [Hangi sütuna göre, ascending/descending]
Limit: [İlk N kayıt / Tüm sonuçlar]
PERFORMANCE KONULARI:
Veri seti büyüklüğü nedeniyle optimizasyon gerekli mi: [Evet/Hayır]
LÜTFEN KAPSAMLI OLARAK VER:
1. Boolean indexing yöntemi ile çözüm (en yaygın ve okunabilir)
2. query() metodu ile çözüm (SQL-benzeri syntax tercih edenler için)
3. loc[] accessor kullanımı (label-based indexing)
4. iloc[] accessor kullanımı (position-based indexing) - uygulanabilirse
5. Her yöntemin performance karşılaştırması (küçük ve büyük veri setlerinde)
6. Okunabilirlik ve maintainability açısından öneri
7. Edge case ler ve dikkat edilmesi gereken noktalar (NaN handling, data type issues)
8. İleri seviye: Çoklu koşulları dinamik olarak oluşturma (programmatic filtering)GroupBy İşlemleri ve Aggregate Fonksiyonları
Pandas ın en güçlü özelliklerinden biri olan GroupBy fonksiyonalitesi, SQL deki GROUP BY mantığına benzer şekilde çalışarak, verilerinizi belirli kategorilere göre gruplandırmanıza ve her grup üzerinde aggregate (toplama, ortalama, sayma gibi) fonksiyonlar uygulamanıza olanak tanır, bu sayede çok boyutlu analizler yapabilir, karmaşık iş soruları ve veri sorguları için cevaplar üretebilir ve verilerinizden anlamlı içgörüler çıkarabilirsiniz.
PANDAS GROUPBY ve AGGREGATION İŞLEMLERİ
Veri gruplama ve özetleme işlemleri yap.
GRUPLAMA SENARYOSU:
Ana amaç: [Ne öğrenmek veya hesaplamak istiyorsun - örn: her müşterinin toplam harcaması ve ortalama sipariş değeri]
GROUPBY KOLONLARI:
Birincil gruplama: [Örn: customer_id]
İkincil gruplama: [Varsa - örn: product_category, order_month]
Üçüncül gruplama: [Varsa - çok boyutlu analiz için]
AGGREGATE FONKSİYONLAR (Detaylı):
Her sütun için hangi işlemler:
- Sayısal sütunlar için: [sum, mean, median, std, min, max, count, quantile]
- Kategorik sütunlar için: [count, nunique, mode, first, last]
- Tarih sütunları için: [min (ilk), max (son), count]
- Özel hesaplamalar: [Örn: weighted average, custom function]
İLERI SEVİYE GEREKSINIMLER:
- Multiple aggregation: [Aynı sütuna birden fazla fonksiyon uygulama]
- Named aggregation: [Sonuç sütunlarına anlamlı isimler verme]
- Custom aggregation functions: [Lambda veya def ile özel fonksiyonlar]
- Transform operations: [Grup istatistiklerini orijinal DataFrame e geri ekleme]
- Filter operations: [Belirli koşulları sağlayan grupları seçme]
PERFORMANS VE OPTİMİZASYON:
Veri boyutu: [Küçük / Orta / Büyük]
Memory constraints var mı: [Evet/Hayır]
LÜTFEN DETAYLI VER:
1. Temel groupby-agg syntax (basit örnekle başla)
2. Multiple column groupby (çok boyutlu analiz)
3. agg() metodu ile multiple functions (esnek ve güçlü yaklaşım)
4. Named aggregation (Pandas 0.25+ özelliği, okunabilir kod)
5. Custom aggregation functions (lambda ve user-defined functions)
6. transform() kullanımı (grup istatistiklerini broadcast etme)
7. filter() kullanımı (örn: 10 dan fazla siparişi olan müşteriler)
8. Performance optimization tips (kategorik dtype kullanımı, as_index parametresi)
9. Sonuç DataFrame ini reset_index ve formatting
10. Gerçek iş senaryosu örneği (cohort analysis, customer segmentation vb)İleri Seviye Pandas İşlemleri ve Veri Manipülasyonu
Merge, Join ve Concat İşlemleri ile Veri Birleştirme
Gerçek dünya veri analizi projelerinde, verilerin genellikle farklı tablolarda veya dosyalarda dağınık halde bulunması nedeniyle, bu farklı veri kaynaklarını birleştirme ihtiyacı sıklıkla ortaya çıkar ve Pandas, SQL benzeri join işlemlerini gerçekleştirmenize olanak tanıyan merge metodu, index bazlı birleştirme için join metodu ve dikey veya yatay olarak DataFrame leri birleştiren concat fonksiyonu gibi güçlü araçlar sunar, her birinin kendine özgü kullanım senaryoları ve performans karakteristikleri vardır.
DATAFRAME BİRLEŞTİRME İŞLEMLERİ (Merge, Join, Concat)
Birden fazla DataFrame i profesyonel şekilde birleştir.
BİRLEŞTİRİLECEK DATAFRAME LER:
DataFrame 1:
- İsim: [örn: customers]
- Satır sayısı: [örn: 50000]
- Sütunlar: [customer_id, name, email, registration_date, city]
- Key column: [customer_id]
DataFrame 2:
- İsim: [örn: orders]
- Satır sayısı: [örn: 200000]
- Sütunlar: [order_id, customer_id, order_date, total_amount]
- Key column: [customer_id]
DataFrame 3 (varsa):
- İsim: [örn: customer_segments]
- Satır sayısı: [örn: 50000]
- Sütunlar: [customer_id, segment, lifetime_value]
- Key column: [customer_id]
BİRLEŞTİRME DETAYLARI:
JOIN TİPİ seçimi:
- inner: [Sadece her iki tarafta da bulunan kayıtlar - intersection]
- left: [Sol DataFrame tüm kayıtları, sağdan eşleşenler - left outer join]
- right: [Sağ DataFrame tüm kayıtları, soldan eşleşenler - right outer join]
- outer: [Her iki DataFrame den tüm kayıtlar - full outer join]
ANAHTAR KOLONLAR:
Ortak sütun isimleri aynı mı: [Evet aynı / Hayır farklı isimler]
Composite key gerekli mi: [Tek sütun yeterli / Birden fazla sütun kombinasyonu]
UYUŞMAZLIK SENARYOLARI (Detaylı):
- One-to-One ilişki mi: [Her key her tabloda sadece bir kez - en basit]
- One-to-Many ilişki mi: [Bir tabloda unique, diğerinde tekrarlı - yaygın]
- Many-to-Many ilişki mi: [Her iki tabloda da tekrarlı - dikkatli olunmalı]
- Eşleşmeyen kayıtlar: [NaN ile doldur / Belirli değer ata / Sil]
- Duplicate keys varsa: [Nasıl ele alınmalı - validate parametresi]
PERFORMANS KONULARI:
Büyük veri setleri: [Memory efficient merge stratejisi gerekli mi]
Sıralı veriler: [Sorted merge daha hızlı olabilir]
LÜTFEN KAPSAMLI VER:
1. Temel merge() syntax ve örnekler (her join tipi için)
2. left_on, right_on parametreleri (farklı isimli key ler)
3. on parametresi (aynı isimli key ler)
4. suffixes parametresi (aynı isimli sütunları ayırt etme)
5. indicator parametresi (hangi kayıt nereden geldi gösterme)
6. validate parametresi (ilişki tipini kontrol etme - 1:1, 1:m, m:1)
7. join() metodu alternatifi (index-based joining)
8. concat() fonksiyonu (vertical veya horizontal stacking)
9. Performance comparison ve best practices
10. Gerçek senaryo: Customer order history analizi (multi-table join)Pivot ve Reshape İşlemleri ile Veri Transformasyonu
Veri analizi süreçlerinde sıklıkla karşılaşılan bir durum, verilerin long format (uzun format) ve wide format (geniş format) arasında dönüştürülmesi ihtiyacıdır çünkü bazı analizler ve görselleştirmeler için wide format daha uygunken, veritabanı operasyonları ve bazı hesaplamalar için long format tercih edilir, Pandas ın pivot_table, pivot, melt, stack ve unstack fonksiyonları bu dönüşümleri kolayca gerçekleştirmenizi sağlar.
PİVOT ve RESHAPE İŞLEMLERİ
Veri formatını dönüştür (long to wide veya wide to long).
MEVCUT VERİ FORMATI (Long Format Örneği):
Sütunlar: [date, product, region, sales]
Her satır: [Bir gün, bir ürün, bir bölge kombinasyonu için satış değeri]
Satır sayısı: [Çok sayıda - her kombinasyon için ayrı satır]
HEDEF FORMAT (Wide Format):
İstenen yapı: [Satırlarda product, sütunlarda region, hücrelerde sales toplamı]
Veya: [Satırlarda date, sütunlarda product-region kombinasyonu]
PİVOT PARAMETRELER (Detaylı):
index: [Hangi sütun(lar) satırda olsun - örn: date veya product]
columns: [Hangi sütun(lar) sütun başlıkları olsun - örn: region]
values: [Hangi sütun hücrelerde gösterilsin - örn: sales]
aggfunc: [Aggregate fonksiyon - sum, mean, count, max, min, custom]
ÇOK BOYUTLU PİVOT (MultiIndex):
Satırlarda birden fazla boyut: [Örn: date ve product birlikte]
Sütunlarda birden fazla boyut: [Örn: region ve product_category]
Birden fazla value sütunu: [Örn: hem sales hem quantity]
UNPIVOT İŞLEMİ (Wide to Long):
Mevcut wide format: [Sütunlar çok fazla, her sütun bir kategori/zaman dilimidir]
Hedef long format: [Kategori/zaman sütunu + değer sütunu]
id_vars: [Sabit tutulacak identifier sütunlar]
value_vars: [Eritilecek value sütunları]
LÜTFEN DETAYLI VER:
1. pivot_table() fonksiyonu (en esnek ve güçlü)
2. pivot() fonksiyonu (basit pivotlar için)
3. aggfunc parametresi detayları (built-in ve custom functions)
4. fill_value parametresi (NaN ları doldurma)
5. margins parametresi (grand totals ekleme)
6. melt() fonksiyonu (unpivot işlemi için)
7. stack() ve unstack() metodları (MultiIndex ile çalışma)
8. Wide to long örnek: Zaman serisi verisi düzenleme
9. Long to wide örnek: Rapor formatı oluşturma
10. Performance considerations (büyük pivotlarda memory kullanımı)NumPy ile Yüksek Performanslı Sayısal Hesaplamalar
NumPy Array Oluşturma ve Temel İşlemler
NumPy, Python ekosisteminde bilimsel hesaplamaların ve sayısal analizin temelini oluşturan bir kütüphanedir ve Python listelerine göre çok daha hızlı ve memory efficient olan homojen çok boyutlu array (dizi) yapısı sunar, bu array ler üzerinde vectorized operations (vektörize edilmiş işlemler) gerçekleştirilerek, explicit loop lar yazmadan tüm array üzerinde matematiksel ve mantıksal operasyonlar uygulanabilir, bu da hem kod yazma süresini kısaltır hem de performansı dramatik şekilde artırır.
NUMPY ARRAY İŞLEMLERİ ve VECTORİZATİON
NumPy array oluştur ve optimize işlemler yap.
İŞLEM AMACI:
[Ne hesaplamak veya yapmak istiyorsun - detaylı açıklama]
ARRAY ÖZELLİKLERİ:
Boyut (shape): [Örn: (1000, 50) - 1000 satır, 50 sütun]
Veri tipi (dtype): [int32, int64, float32, float64, complex, bool]
Değer aralığı: [Min-max veya random]
Özel özellikler: [Sparse mi, symmetric mi, positive definite mi]
YAPMAK İSTENEN İŞLEMLER (Detaylı):
Matematiksel: [Toplama, çıkarma, çarpma, bölme, üs alma, log, trigonometrik]
İstatistiksel: [Mean, median, std, var, percentile, correlation]
Lineer cebir: [Matrix multiplication, dot product, cross product, determinant, inverse, eigenvalues]
Mantıksal: [Boolean operations, masking, conditional selection]
Şekil değiştirme: [Reshape, transpose, flatten, expand_dims]
PERFORMANS GEREKSİNİMLERİ:
Veri boyutu: [Küçük (KB) / Orta (MB) / Büyük (GB)]
Hız kritik mi: [Evet gerçek zamanlı / Hayır batch processing]
Memory constraint: [Limited RAM / Bol RAM]
LÜTFEN KAPSAMLI VER:
1. Array oluşturma metodları (np.array, np.zeros, np.ones, np.arange, np.linspace, np.random)
2. Dtype seçimi ve memory implications (float32 vs float64)
3. Vectorized operations (element-wise işlemler) - loop yazmadan
4. Broadcasting mekanizması (farklı shape lı array leri işleme)
5. Universal functions (ufuncs) - hızlı mathematical operations
6. Indexing ve slicing (fancy indexing, boolean indexing)
7. Array manipülasyon (reshape, ravel, flatten, transpose)
8. Memory layout (C-order vs Fortran-order) ve performance etkileri
9. Pandas ile entegrasyon (DataFrame values olarak NumPy array)
10. Performance benchmark (NumPy vs pure Python loop karşılaştırması)Matplotlib ve Seaborn ile Veri Görselleştirme
Matplotlib ile Profesyonel Grafik Oluşturma
Veri analizinin belki de en önemli aşamalarından biri, elde edilen bulgular ve içgörülerin etkili bir şekilde görselleştirilmesi ve hedef kitleye sunulmasıdır çünkü tablolar ve sayılarla dolu raporlar yerine, iyi tasarlanmış grafikler ve görselleştirmeler, karmaşık veri örüntülerini ve trendleri çok daha kolay anlaşılır hale getirir, Matplotlib, Python ekosisteminde en yaygın kullanılan görselleştirme kütüphanesidir ve neredeyse her türlü grafiği oluşturma esnekliği sunar.
MATPLOTLIB İLE PROFESYONEL GRAFİK OLUŞTURMA
Publication-quality grafikler için kod yaz.
GRAFİK AMACI ve HEDEF KİTLE:
Amaç: [Trend gösterme / Karşılaştırma / Dağılım / İlişki / Kompozisyon]
Hedef: [Akademik makale / İş sunumu / Dashboard / Sosyal medya / Teknik rapor]
VERİ ÖZELLİKLERİ (Detaylı):
X ekseni: [Değişken tipi - sayısal/kategorik/zaman, değer aralığı]
Y ekseni: [Değişken tipi, değer aralığı, ölçek - linear/log]
Seri sayısı: [Tek seri / Çok seri (kaç tane)]
Veri noktası sayısı: [Her seride kaç nokta]
Outlier var mı: [Evet/Hayır - görselleştirmede dikkat gerektirir]
GRAFİK TİPİ SEÇİMİ:
[Line plot / Scatter plot / Bar chart / Histogram / Box plot / Heatmap / Pie chart / Area plot]
Neden bu tip uygun: [Gerekçe]
TASARIM GEREKSİNİMLERİ (Profesyonel Görünüm):
Figure size: [İnch cinsinden - örn: 12x8 veya journal requirements]
DPI: [72 screen / 300 print quality]
Renk paleti: [Colorblind-friendly / Corporate colors / Grayscale / Qualitative / Sequential]
Font: [Font ailesi, boyutlar - title, axis labels, tick labels, legend]
Grid: [Major grid / Minor grid / No grid]
Legend: [Position, frame, column count]
Annotations: [Önemli noktaları vurgulama, arrow, text box]
MULTI-PLOT LAYOUT:
Subplot gerekli mi: [Tek grafik / Multiple subplots]
Layout: [Örn: 2x2 grid / Custom gridspec]
EXPORT GEREKSİNİMLERİ:
Format: [PNG / PDF / SVG / EPS]
Çözünürlük: [DPI değeri]
Transparent background: [Evet/Hayır]
LÜTFEN DETAYLI VER:
1. Figure ve axes oluşturma (plt.subplots yaklaşımı - best practice)
2. Plot oluşturma (seçilen grafik tipi için detaylı kod)
3. Eksen ayarları (limits, scales, ticks, labels)
4. Title, xlabel, ylabel (font properties ile)
5. Legend oluşturma ve konumlandırma
6. Grid ve styling (seaborn style veya custom)
7. Annotations ve text eklemeler
8. Color customization (colormap veya explicit colors)
9. Layout optimization (tight_layout, constrained_layout)
10. Export kodu (savefig with parameters)
11. İleri seviye: Multiple y-axes, inset plots, custom tick formatters
12. Örnek: Time series visualization with trend line ve confidence intervalPython Veri Analizi En İyi Pratikleri ve Optimizasyon
Pandas Performans Optimizasyonu için Kritik Öneriler:
- Vectorized operations kullanın, iterrows() dan kaçının: Pandas ın en büyük gücü vectorization dır, bu nedenle DataFrame üzerinde satır satır dolaşmak yerine (iterrows, itertuples), tüm sütun veya DataFrame üzerine uygulanabilen vectorized metodları tercih etmek, kodunuzun 10-100 kat daha hızlı çalışmasını sağlayacaktır, örneğin bir sütundaki değerleri dönüştürmek için apply() veya daha iyisi NumPy fonksiyonlarını kullanabilirsiniz.
- Kategorik veri tipini kullanarak memory tasarrufu yapın: Sınırlı sayıda unique değere sahip string sütunları (örn: ülke, kategori, durum) category dtype ına dönüştürmek, hem memory kullanımını %50-90 oranında azaltır hem de groupby gibi işlemleri hızlandırır, özellikle büyük veri setlerinde bu dönüşüm kritik öneme sahiptir.
- Chunk processing ile büyük dosyaları işleyin: RAM e sığmayacak kadar büyük dosyaları okurken, pd.read_csv in chunksize parametresini kullanarak dosyayı parçalar halinde okuyun, her chunk üzerinde işlem yapın ve sonuçları birleştirin, bu sayede out-of-memory hatalarından kaçınabilirsiniz.
- Query() metodunu kompleks filtrelerde kullanın: Çok sayıda koşul içeren filtre işlemlerinde, boolean indexing yerine query() metodu hem daha okunabilir kod üretir hem de bazı durumlarda daha hızlı çalışır, özellikle string operations için numexpr backend i kullanır.
- Inplace parametresini dikkatli kullanın: Birçok Pandas metodunda inplace=True parametresi vardır ancak bu parametre her zaman memory tasarrufu sağlamaz ve genellikle chaining operations ı engeller, modern Pandas kullanımında genellikle inplace=False (default) tercih edilir ve method chaining yapılır.
NumPy ile Çalışırken Dikkat Edilmesi Gereken Noktalar:
- Doğru dtype seçimi yaparak memory optimize edin: Eğer verileriniz belirli bir aralıktaysa (örn: 0-255 arası integer), int8 veya uint8 kullanarak int64 e göre %87,5 memory tasarrufu sağlayabilirsiniz, benzer şekilde precision gerektirmeyen durumlar float32 ile yetinebilir (float64 yerine).
- Broadcasting kurallarını öğrenin ve kullanın: NumPy nin broadcasting mekanizması, farklı shape lardaki array leri otomatik olarak uyumlu hale getirerek işlem yapmanızı sağlar, bu sayede explicit reshape veya tile işlemlerine gerek kalmadan, çok daha temiz ve hızlı kod yazabilirsiniz.
- Contiguous memory layout ın önemini anlayın: C-contiguous (satır bazlı) ve Fortran-contiguous (sütun bazlı) array ler farklı cache performansı gösterir, işlemlerinize göre uygun layout ı seçmek (örn: satır bazlı işlemler için C-order) performansı artırabilir.
- np.where() ve boolean indexing i etkili kullanın: Koşullu işlemler için np.where() ve boolean indexing NumPy nin en güçlü özelliklerinden olup, explicit loop yazmadan karmaşık koşullu atamalar yapmanızı sağlar ve son derece hızlıdır.
Matplotlib Görselleştirme İpuçları ve Profesyonel Stil Önerileri:
- Renk körlerine (colorblind) uygun paletler seçin: Dünya nüfusunun yaklaşık %8 i renk körlüğüne sahip olduğundan, özellikle kırmızı-yeşil kombinasyonundan kaçınarak, colorblind-friendly paletler (örn: viridis, cividis) kullanmak, grafiklerinizin herkes tarafından doğru anlaşılmasını sağlar.
- Data-ink ratio yu optimize edin: Edward Tufte nin data-ink ratio konseptine göre, gereksiz chart junk ı (3D efektler, gölgeler, fazla grid lines) azaltarak, verinin kendisine odaklanmak, daha etkili görselleştirmeler üretir, minimalist ve temiz tasarım genellikle daha profesyonel görünür.
- Eksen limitlerini veriye uygun ayarlayın: Default axis limits bazen yanıltıcı olabilir, özellikle y-ekseninin sıfırdan başlamaması trend büyütmesi yapabilir (misleading), bu nedenle bilinçli olarak axis limits ayarlayın ve gerekirse broken axis kullanmayı düşünün.
- Interactive plotting için Plotly veya Bokeh değerlendirin: Matplotlib static (durağan) grafikler üretirken, modern web-based görselleştirmeler için Plotly veya Bokeh gibi interaktif kütüphaneler, zoom, pan, hover bilgileri gibi özellikler sunarak kullanıcı deneyimini artırır.
AI ile Python Veri Analizi Yaparken Dikkat Edilmesi Gerekenler:
- Kütüphane versiyonlarını mutlaka belirtin: Pandas, NumPy ve Matplotlib sık sık güncellenir ve eski versiyonlarda çalışan kodlar yeni versiyonlarda deprecated olabilir veya syntax değişebilir, bu nedenle AI ye hangi versiyonları kullandığınızı bildirmek, uyumlu kod üretmesini sağlar.
- Gerçek veri örnekleri ve dtypes paylaşın: AI ye sadece sütun isimlerini değil, örnek veri satırlarını ve veri tiplerini (df.dtypes, df.head()) göstermek, çok daha doğru ve kullanıma hazır kod üretmesine yardımcı olur çünkü veri tipleri birçok metodun davranışını etkiler.
- Edge case leri ve hata senaryolarını sorun: AI den sadece happy path kodunu değil, potansiyel hataları (NaN, infinity, empty DataFrame, mismatched shapes) nasıl handle edeceğini de sorarak, production-ready kod elde edebilirsiniz.
- Performance profiling isteyin: Özellikle büyük veri setleriyle çalışırken, AI den kodun memory profiling ini ve execution time benchmark ını da üretmesini isteyerek, bottleneck ları önceden tespit edebilirsiniz.
- Alternatif yaklaşımları talep edin: Aynı problemi çözmenin genellikle birden fazla yolu vardır, AI den farklı yaklaşımları (örn: vectorized vs apply, merge vs join) ve her birinin trade-off larını açıklamasını isteyerek, en uygun çözümü seçebilirsiniz.