Python Programming

Pandas ve NumPy ile Veri Analizi: Tam Bir Geliştirici Rehberi

Veri analizi, iş zekâsı ve makine öğrenimi uygulamalarına kadar modern yazılım geliştirme süreçlerinin temel taşları haline gelmiştir. Python ekosistemi, bu amaç için güçlü araçlar sunar; bunların arasında Pandas ve NumPy öne çıkmaktadır. Bu kütüphaneler, veri bilimi iş akışlarının temelini oluşturur ve geliştiricilerin verileri etkili bir şekilde manipüle, analiz ve görselleştirmesini sağlar.

Temel Kavramlar: NumPy

NumPy (Numerical Python), Python'da sayısal hesaplamalar için temel oluşturur. Büyük, çok boyutlu diziler ve matrisler için destek sağlar ve bu diziler üzerinde verimli şekilde işlem yapabilecek matematiksel fonksiyonlar koleksiyonu sunar.

import numpy as np

# Diziler oluşturma
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

# Temel işlemler
sum_arr = np.sum(arr1)
mean_arr = np.mean(arr2, axis=1)
reshaped = arr1.reshape(1, 5)

print(f"Toplam: {sum_arr}, Ortalama: {mean_arr}")

Pandas: Veri Analizinin Gücü

Pandas, NumPy'nin yeteneklerini üzerine inşa ederek veri analizi için özel olarak tasarlanmış veri yapıları sunar. Temel veri yapıları, Series (1B) ve DataFrame (2B) olup, yapılandırılmış verilerle çalışmayı kolaylaştırır.

import pandas as pd

# DataFrame oluşturma
veri = {
    'isim': ['Alice', 'Bob', 'Charlie', 'Diana'],
    'yas': [25, 30, 35, 28],
    'maas': [50000, 60000, 70000, 55000],
    'bolum': ['IT', 'HR', 'Finans', 'IT']
}

df = pd.DataFrame(veri)
print(df)

# Temel istatistikler
print(df.describe())
print(df.groupby('bolum')['maas'].mean())

Veri Temizleme ve Ön İşleme

Gerçek dünyadaki veriler nadiren mükemmel bir şekilde gelir. Etkili veri analizi, doğru temizlik ve ön işleme ile başlar. Pandas, eksik verileri, tekrar eden verileri ve veri tipi dönüşümlerini yönetmek için sağlam araçlar sunar.

# Eksik veriyle başarma
yeni_df = df.copy()
yeni_df.loc[1, 'yas'] = np.nan

# Eksik değerleri silme
temizlenmis_df = yeni_df.dropna()

# Eksik değerleri doldurma
filled_df = yeni_df.fillna({'yas': yeni_df['yas'].mean()})

# Tekrar eden verileri kaldırma
yok_teke_df = df.drop_duplicates()

# Veri tipi dönüşümü
df['yas'] = df['yas'].astype('int64')

Gelişmiş Veri Manipülasyonu

Pandas, veri dönüşümü ve filtreleme için gelişmiş yöntemler sunar. Bu yeteneklerin anlaşılması, verimli veri analizi iş akışları için hayati öneme sahiptir.

# Filtreleme ve koşullu işlemler
yuksek_maasli = df[df['maas'] > 55000]
filtreli_df = df[df['yas'].between(25, 30)]

# query yöntemi kullanma
sonuc = df.query('maas > 55000 and yas < 35')

# Fonksiyonları sütunlara uygulama
df['maas_kategorisi'] = df['maas'].apply(lambda x: 'Yüksek' if x > 60000 else 'Standart')

# Veri setlerini birleştirme
df2 = pd.DataFrame({
    'isim': ['Alice', 'Bob'],
    'prim': [5000, 7000]
})
birlesmis_df = pd.merge(df, df2, on='isim', how='left')

Performans Optimizasyon Teknikleri

Büyük veri setleriyle çalışırken performans kritik öneme sahiptir. Hem Pandas hem de NumPy, büyük verileri verimli şekilde işlemek için optimizasyon stratejileri sunar.

# Vektörel işlemler (hızlı)
dizi = np.random.rand(1000000)
sonuc = dizi * 2 + 1  # Vektörel işlem

# Karmaşık ifadeler için eval kullanımı
df['yeni_sutun'] = df.eval('yas * maas')

# Verimli groupby işlemleri
grouped = df.groupby('bolum').agg({
    'maas': ['ortalama', 'toplam', 'sayı'],
    'yas': 'ortalama'
})

# Bellek verimliliği için kategorik veri kullanımı
df['bolum'] = df['bolum'].astype('category')

Pratik Örnek: Satış Verisi Analizi

Bu kavramları uygulamaya dökmek için satış verilerini inceleyen kapsamlı bir örnek yapalım.

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

# Örnek satış verisi oluşturma
tarihler = pd.date_range('2023-01-01', periods=1000, freq='D')
satis_verisi = {
    'tarih': tarihler,
    'urun': np.random.choice(['A', 'B', 'C', 'D'], 1000),
    'satis_tutari': np.random.uniform(100, 1000, 1000),
    'bolge': np.random.choice(['Kuzey', 'Güney', 'Doğu', 'Batı'], 1000)
}

df_satis = pd.DataFrame(satis_verisi)

# Veri temizleme
df_satis['tarih'] = pd.to_datetime(df_satis['tarih'])
df_satis['ay'] = df_satis['tarih'].dt.month
df_satis['çeyrek'] = df_satis['tarih'].dt.quarter

# Analiz
aylik_satis = df_satis.groupby('ay')['satis_tutari'].sum()
urun_performansi = df_satis.groupby('urun')['satis_tutari'].agg(['sum', 'mean', 'count'])
bolge_analizi = df_satis.groupby(['bolge', 'urun'])['satis_tutari'].sum().unstack(fill_value=0)

print("Aylık Satış:")
print(aylik_satis)
print("\nÜrün Performansı:")
print(urun_performansi)
print("\nBölge Analizi:")
print(bolge_analizi)

Sonuç

Pandas ve NumPy, Python'da veri analizi için vazgeçilmez araçlardır. NumPy, verimli dizi işlemleriyle sayısal temeli sağlarken, Pandas gerçek dünya analiz görevleri için gerekli olan gelişmiş veri manipülasyon yeteneklerini ekler. Bu kütüphaneleri mastered etmek, geliştiricilerin ham verileri anlamlı içgörülere dönüştürmesini sağlar ve her veri odaklı projede değerli bir varlıktır.

Yeteneklerini anlayarak ve performans optimizasyonu için en iyi uygulamaları takip ederek, geliştiriciler her boyut ve karmaşıklıkta veri setlerini güvenle işleyebilirler. İş zekâsı uygulamaları, bilimsel araştırma veya makine öğrenimi süreçleri oluşturuyorsanız, bu araçlar etkili veri analizi için temeliniz olacaktır.

Share: