BLOG

🐍 Python Veri Bilimi Kütüphaneleri ve Temel Kullanım Alanları


📊 NumPy

NumPy (Numerical Python), bilimsel hesaplamalar için Python’un temel kütüphanesidir.

Temel Kullanım Alanları:

  • Çok boyutlu diziler ve matrislerle çalışma
  • Matematiksel ve mantıksal işlemler
  • Lineer cebir işlemleri (matris çarpımı, determinant, vb.)
  • Rastgele sayı üretimi ve istatistiksel fonksiyonlar
  • FFT (Hızlı Fourier Dönüşümü) gibi sinyal işleme operasyonları

Neden NumPy?

  • Hız: C dilinde yazılmış arka uç sayesinde Python listelerinden çok daha hızlı
  • Bellek verimliliği: Homojen diziler için optimize edilmiş bellek kullanımı
  • Vektörizasyon: For döngüleri yerine tüm diziye tek seferde işlem uygulama
import numpy as np

# Matris oluşturma
arr = np.array([[1, 2, 3], [4, 5, 6]])
# İstatistiksel işlemler
print(np.mean(arr))  # Ortalama
print(np.std(arr))   # Standart sapma
# Lineer cebir
print(np.linalg.det(np.array([[1, 2], [3, 4]])))  # Determinant

🐼 Pandas

Pandas, veri manipülasyonu ve analizi için tasarlanmış yüksek seviyeli bir kütüphanedir.

Temel Kullanım Alanları:

  • Veri okuma ve yazma (CSV, Excel, SQL, JSON, vb.)
  • Veri temizleme ve ön işleme
  • Veri dönüştürme ve birleştirme
  • Eksik veri işleme
  • Zaman serisi analizi
  • Gruplama ve pivot tabloları

Neden Pandas?

  • DataFrame ve Series veri yapıları veri işlemeyi kolaylaştırır
  • SQL benzeri işlemler ve filtreleme özellikleri
  • Zaman serisi verileri için optimize edilmiş araçlar
  • Excel’e benzeyen ancak daha güçlü veri manipülasyonu
import pandas as pd

# CSV dosyası okuma
df = pd.read_csv('veriler.csv')
# Temel istatistikler
print(df.describe())
# Filtreleme
filtrelenmis_df = df[df['yas'] > 30]
# Gruplama ve toplama
grup_sonuc = df.groupby('kategori')['deger'].sum()

📈 Matplotlib

Matplotlib, Python’da çok çeşitli grafik türleri oluşturmak için kullanılan temel görselleştirme kütüphanesidir.

Temel Kullanım Alanları:

  • Çizgi grafikler, bar grafikleri, histogram, scatter plot
  • Alt grafik oluşturma (subplots)
  • 3D grafikler
  • Kontur ve yüzey grafikleri
  • Bilimsel yayın kalitesinde görselleştirmeler
  • Görselleştirme özelleştirme (eksen, ölçekler, renkler)

Neden Matplotlib?

  • MATLAB benzeri sözdizimi ile kolay kullanım
  • Yüksek düzeyde özelleştirilebilirlik
  • Her türlü formatta çıktı kaydetme (PNG, PDF, SVG, vb.)
  • Bilimsel ortamlarda yaygın kabul
import matplotlib.pyplot as plt

# Basit çizgi grafiği
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.figure(figsize=(10, 6))
plt.plot(x, y, 'ro-', linewidth=2, markersize=10)
plt.title('Örnek Grafik')
plt.xlabel('X Ekseni')
plt.ylabel('Y Ekseni')
plt.grid(True)
plt.show()

🎨 Seaborn

Seaborn, Matplotlib üzerine kurulmuş, daha yüksek seviyeli bir istatistiksel veri görselleştirme kütüphanesidir.

Temel Kullanım Alanları:

  • İstatistiksel ilişkileri görselleştirme
  • Kategorik veri analizi
  • Dağılım görselleştirmeleri
  • Korelasyon ve ısı haritaları
  • Zaman serisi görselleştirmeleri
  • Regresyon grafikleri

Neden Seaborn?

  • Estetik açıdan varsayılan olarak güzel grafikler
  • İstatistiksel modelleri kolayca görselleştirme
  • Pandas DataFrame’leri ile entegre çalışma
  • Renk paletleri ve temaları ile kolay özelleştirme
import seaborn as sns

# Örnek veri seti
tips = sns.load_dataset('tips')
# İstatistiksel ilişki grafiği
plt.figure(figsize=(10, 6))
sns.lmplot(x='total_bill', y='tip', hue='time', data=tips)
plt.title('Bahşiş ve Toplam Hesap İlişkisi')
plt.show()
# Dağılım grafiği
plt.figure(figsize=(10, 6))
sns.histplot(tips['total_bill'], kde=True)
plt.title('Toplam Hesap Dağılımı')
plt.show()

🧠 Scikit-learn

Scikit-learn, makine öğrenmesi için kullanılan, kullanımı kolay ve verimli araçlar sağlayan bir kütüphanedir.

Temel Kullanım Alanları:

  • Sınıflandırma (karar ağaçları, SVM, KNN, vb.)
  • Regresyon (lineer, lojistik, vb.)
  • Kümeleme (K-means, DBSCAN, vb.)
  • Boyut azaltma (PCA, t-SNE, vb.)
  • Model seçimi ve değerlendirme
  • Veri ön işleme ve özellik mühendisliği

Neden Scikit-learn?

  • Tutarlı ve kullanımı kolay API
  • Kapsamlı dokümantasyon ve örnekler
  • Çok çeşitli algoritma koleksiyonu
  • NumPy ve Pandas ile kolay entegrasyon
  • Model değerlendirme ve hiperparametre optimizasyonu araçları
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report

# Veri seti bölme
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Özellik ölçekleme
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Model eğitimi
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train_scaled, y_train)
# Tahmin ve değerlendirme
y_pred = model.predict(X_test_scaled)
print(f"Doğruluk: {accuracy_score(y_test, y_pred)}")
print(classification_report(y_test, y_pred))

🧮 SciPy

SciPy, bilimsel ve teknik hesaplamalar için kullanılan bir Python kütüphanesidir.

Temel Kullanım Alanları:

  • İstatistiksel testler ve dağılımlar
  • Sinyal işleme
  • Optimizasyon ve minimizasyon
  • Lineer cebir işlemleri
  • İnterpolasyon ve integral alma
  • Görüntü işleme

Neden SciPy?

  • Kapsamlı matematiksel fonksiyonlar ve algoritmalar
  • NumPy ile tam entegrasyon
  • Bilimsel problemleri çözmek için özel modüller
  • Yüksek performanslı C ve Fortran kodu ile uygulanmış alt yapı
from scipy import stats
from scipy import optimize
from scipy import signal

# İstatistiksel test
t_stat, p_value = stats.ttest_ind(grup1, grup2)
print(f"P-değeri: {p_value}")
# Optimizasyon
def f(x):
    return x**2 + 10*np.sin(x)
result = optimize.minimize(f, x0=0)
print(f"Minimum nokta: {result.x}")
# Sinyal filtreleme
filtered = signal.lfilter(b, a, data)

🔮 TensorFlow / Keras

TensorFlow/Keras, derin öğrenme uygulamaları için kullanılan güçlü bir kütüphanedir.

Temel Kullanım Alanları:

  • Yapay sinir ağları oluşturma ve eğitme
  • Görüntü sınıflandırma ve nesne tanıma (CNN)
  • Doğal dil işleme uygulamaları (RNN, LSTM, Transformers)
  • Zaman serisi tahmini
  • Özelleştirilmiş derin öğrenme mimarileri
  • Transfer öğrenme

Neden TensorFlow/Keras?

  • Keras yüksek seviye API’si ile kolay kullanım
  • TensorFlow’un altta yatan güçlü hesaplama yetenekleri
  • GPU ve TPU desteği ile hızlı eğitim
  • Production sistemlerine kolay entegrasyon
  • TensorBoard ile görselleştirme ve izleme
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Conv2D, MaxPooling2D, Flatten

# Basit bir CNN modeli
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(128, activation='relu'),
    Dropout(0.5),
    Dense(10, activation='softmax')
])
# Model derleme
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
# Eğitim
model.fit(X_train, y_train, epochs=5, validation_data=(X_val, y_val))

🌲 XGBoost / LightGBM

XGBoost ve LightGBM, gradient boosting framework’leridir ve makine öğrenmesi yarışmalarında sıkça kullanılırlar.

Temel Kullanım Alanları:

  • Sınıflandırma problemleri
  • Regresyon problemleri
  • Sıralama ve tavsiye sistemleri
  • Yüksek boyutlu veri setleriyle çalışma
  • Yapılandırılmış/tablo verisi problemleri
  • Büyük veri setleri için hızlı eğitim

Neden XGBoost/LightGBM?

  • Yüksek doğruluk ve genelleme performansı
  • Regülarizasyon özellikleri ile aşırı öğrenmeyi önleme
  • Kategorik değişkenleri doğrudan işleme yeteneği (LightGBM)
  • Paralelleştirme ile hızlı eğitim
  • Özellik önem sıralaması
import xgboost as xgb
from sklearn.metrics import mean_squared_error

# XGBoost Regresör
xgb_model = xgb.XGBRegressor(
    n_estimators=100,
    learning_rate=0.1,
    max_depth=5
)
# Model eğitimi
xgb_model.fit(X_train, y_train)
# Tahmin
y_pred = xgb_model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"RMSE: {rmse}")
# Özellik önem sıralaması
importance = xgb_model.feature_importances_
for i, imp in enumerate(importance):
    print(f"Özellik {i}: {imp}")

📊 Plotly

Plotly, etkileşimli veri görselleştirmeleri oluşturmak için kullanılan modern bir kütüphanedir.

Temel Kullanım Alanları:

  • Etkileşimli grafikler oluşturma
  • Karmaşık veri görselleştirmeleri
  • Dash ile web uygulamaları geliştirme
  • 3D görselleştirmeler
  • Coğrafi haritalar ve ısı haritaları
  • Finans grafikleri

Neden Plotly?

  • Kullanıcı etkileşimli grafikler (yakınlaştırma, fare üzerinde bilgi gösterme)
  • Web tarayıcılarında çalışabilen grafikler
  • Jupyter Notebook entegrasyonu
  • Grafikleri HTML olarak dışa aktarma ve paylaşma
  • Geniş grafik türü desteği
import plotly.express as px
import plotly.graph_objects as go

# Express ile hızlı grafik
fig = px.scatter(df, x='x_degeri', y='y_degeri', 
                 color='kategori', size='buyukluk',
                 hover_data=['ek_bilgi'])
fig.show()
# Özel grafik nesneleri
fig = go.Figure()
fig.add_trace(go.Scatter(x=x_data, y=y_data, mode='lines+markers'))
fig.update_layout(title='Etkileşimli Grafik',
                  xaxis_title='X Ekseni',
                  yaxis_title='Y Ekseni')
fig.show()

⏱️ Dask

Dask, büyük veri işleme için paralel hesaplama sağlayan bir kütüphanedir.

Temel Kullanım Alanları:

  • Bellek sınırlarını aşan büyük veri setleriyle çalışma
  • Çok çekirdekli CPU kullanarak paralel işlemler
  • NumPy ve Pandas API’lerinin büyük verilere uygulanması
  • Dağıtık hesaplama
  • Veri işlem pipeline’larını koordine etme
  • Gerçek zamanlı veri analizi

Neden Dask?

  • Tanıdık API’ler (NumPy ve Pandas benzeri)
  • Bellek sınırlarını aşan veri setleriyle çalışabilme
  • Dinamik görev zamanlama
  • Veri analiz iş akışlarını ölçeklendirme
  • Mevcut Python ekosistemi ile entegrasyon
import dask.dataframe as dd

# Büyük CSV dosyasını yükleme
dask_df = dd.read_csv('cok_buyuk_veri.csv')
# Paralel işlem
sonuc = dask_df.groupby('kategori').agg({'deger': ['mean', 'sum']})
# Hesaplamayı başlatma
sonuc_df = sonuc.compute()

🧩 NetworkX

NetworkX, ağ ve grafik analizi için kullanılan bir kütüphanedir.

Temel Kullanım Alanları:

  • Sosyal ağ analizi
  • Karmaşık ağ yapılarının incelenmesi
  • Yol bulma algoritmaları
  • Ağ ölçümü ve analizi
  • Graf teorisi algoritmaları
  • Ağ görselleştirme

Neden NetworkX?

  • Geniş graf algoritmaları koleksiyonu
  • Ağ yapılarını oluşturma, manipüle etme ve analiz etme
  • Standart ve özel veri formatlarını destekleme
  • Diğer bilimsel Python araçlarıyla entegrasyon
  • Görselleştirme yetenekleri
import networkx as nx
import matplotlib.pyplot as plt

# Grafik oluşturma
G = nx.Graph()
G.add_edges_from([(1, 2), (1, 3), (2, 3), (3, 4), (4, 5), (4, 6), (5, 6)])
# Graf özellikleri
print(f"Düğüm sayısı: {G.number_of_nodes()}")
print(f"Kenar sayısı: {G.number_of_edges()}")
print(f"Ortalama kısa yol uzunluğu: {nx.average_shortest_path_length(G)}")
# Görselleştirme
plt.figure(figsize=(8, 6))
nx.draw(G, with_labels=True, node_color='lightblue', 
        node_size=500, edge_color='gray')
plt.title("Basit Ağ Grafiği")
plt.show()

🔍 NLTK / spaCy

NLTK ve spaCy, doğal dil işleme (NLP) için kullanılan kütüphanelerdir.

Temel Kullanım Alanları:

  • Metin ön işleme ve temizleme
  • Tokenizasyon ve cümle segmentasyonu
  • POS (Part-of-Speech) etiketleme
  • Varlık ismi tanıma (NER)
  • Metin sınıflandırma
  • Duygu analizi
  • Sözdizimsel analiz

Neden NLTK/spaCy?

  • NLTK: Geniş araç seti ve eğitim materyalleri
  • spaCy: Endüstri kullanımı için optimize edilmiş, hızlı performans
  • Çeşitli dillerde doğal dil işleme
  • İleri NLP görevleri için hazır modeller
  • Özel modeller eğitme imkanı
# NLTK örneği
import nltk
nltk.download('punkt')
nltk.download('stopwords')
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords

text = "Python ile doğal dil işleme örnekleri yapıyoruz."
tokens = word_tokenize(text)
stop_words = set(stopwords.words('turkish'))
filtered_tokens = [w for w in tokens if w.lower() not in stop_words]
print(filtered_tokens)
# spaCy örneği
import spacy
nlp = spacy.load("tr_core_news_sm")
doc = nlp("Apple, 1 milyar dolarlık yatırım yapacağını duyurdu.")
for entity in doc.ents:
    print(f"{entity.text}: {entity.label_}")

📊 Statsmodels

Statsmodels, istatistiksel modeller, hipotez testleri ve veri analizi için kullanılan bir kütüphanedir.

Temel Kullanım Alanları:

  • Regresyon analizi (OLS, GLS, WLS, vb.)
  • Zaman serisi analizi ve tahmini (ARIMA, VAR)
  • İstatistiksel testler
  • Çok değişkenli istatistiksel analiz
  • Panel veri analizi
  • İstatistiksel model değerlendirme ve teşhis

Neden Statsmodels?

  • Akademik ve bilimsel araştırmalarda kullanılan standart istatistiksel metodlar
  • Ayrıntılı model sonuçları ve istatistikler
  • R benzeri formül sözdizimi desteği
  • İstatistiksel modellerin tam kontrolü
  • Kapsamlı dokümantasyon ve örnekler
import statsmodels.api as sm
from statsmodels.formula.api import ols

# Lineer regresyon
X = sm.add_constant(X)  # Sabit terim ekleme
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())
# Formül API'si ile model
formula = 'y ~ x1 + x2 + x3'
model = ols(formula, data=df).fit()
print(model.summary())
# ARIMA zaman serisi modeli
from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(y, order=(1, 1, 1))
results = model.fit()
forecast = results.forecast(steps=5)

Bu dokümantasyon, veri bilimi projelerinizde kullanabileceğiniz temel Python kütüphanelerinin özelliklerini ve kullanım alanlarını özetlemektedir. Her kütüphane belirli görevler için optimize edilmiş olup, projenizin gereksinimlerine göre en uygun kütüphaneyi seçmek önemlidir.

Sayfalar: 1 2

Yorumlar

Bir yanıt yazın