DUYURU
Python ile Veri Analizi: Adım Adım Pandas ve Matplotlib Rehberi
Genel
2026-03-18 11 dk okuma 14 görüntülenme

Python ile Veri Analizi: Adım Adım Pandas ve Matplotlib Rehberi

Veri analizi artık hemen her sektörde en kritik yetkinliklerden biri. Python ise bu işin açık ara en popüler dili. Bu yazıda sıfırdan değil ama “temel Python biliyorum, veri analizine yeni başlıyorum” seviyesindeki birine hitap eden, pratik odaklı bir rehber hazırladım.

Veri analizi artık hemen her sektörde en kritik yetkinliklerden biri. Python ise bu işin açık ara en popüler dili.

Bu yazıda sıfırdan değil ama “temel Python biliyorum, veri analizine yeni başlıyorum” seviyesindeki birine hitap eden, pratik odaklı bir rehber hazırladım.

Hedef: Bir CSV dosyasını okuyup → temizleyip → anlamlı analizler yapıp → güzel görselleştirmeler hazırlayabilmek

Gereksinimler (2025 itibarıyla güncel)

Bash
 
pip install pandas matplotlib seaborn numpy
# bonus: daha güzel grafikler için
pip install seaborn jupyterlab
 
 

Jupyter Notebook veya VS Code + Jupyter eklentisi kullanmanı şiddetle öneririm.


1. Temel Pandas Operasyonları (10 dk’da öğren)

Python
 
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Görsellik için tema (isteğe bağlı ama çok fark yaratır)
sns.set_theme(style="whitegrid", palette="muted")
%matplotlib inline    # Jupyter'da grafik gösterimi için
 
 

Örnek veri seti yükleme

Python
 
# Kendi veri setin yoksa → internetten popüler bir dataset indirelim
url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv"
df = pd.read_csv(url)

# Alternatif: senin kendi dosyan varsa
# df = pd.read_csv("satislar_2024.csv", encoding="utf-8", sep=";")
 
 

Hızlı bakış fonksiyonları (her zaman ilk 4’ü yaz)

Python
 
df.head(3)
df.tail(2)
df.shape           # (satır, sütun)
df.info()          # veri tipleri + eksik değer sayısı
df.describe()      # sayısal sütunlar için istatistik özet
df.columns
df.dtypes
 
 

En çok kullanılan seçim / filtreleme yöntemleri

Python
 
# Tek sütun
df['total_bill']

# Birden fazla sütun
df[['total_bill', 'tip', 'day']]

# Satır filtreleme (mantıksal koşullar)
df[df['total_bill'] > 40]
df[df['day'].isin(['Sat', 'Sun'])]
df[(df['time'] == 'Dinner') & (df['tip'] >= 5)]

# loc & iloc farkı (çok önemli!)
df.loc[0:5, ['day','tip']]     # etiket bazlı
df.iloc[0:5, [1,3,5]]          # pozisyon bazlı
 
 

2. Veri Temizleme – En Çok Karşılaşılan 7 Problem

Python
 
# 1. Eksik değerler
df.isnull().sum()

# Hızlı çözümler
df['tip'].fillna(df['tip'].median(), inplace=True)          # medyan ile doldur
df.dropna(subset=['smoker'], inplace=True)                  # satırı sil
df['sex'] = df['sex'].fillna('Unknown')

# 2. Kategorik → sayısal dönüşüm (one-hot encoding)
df = pd.get_dummies(df, columns=['day', 'time'], drop_first=True)

# 3. Sütun ismi düzeltme
df.rename(columns={'total_bill': 'fatura', 'tip': 'bahsis'}, inplace=True)

# 4. String temizleme (örnek)
df['smoker'] = df['smoker'].str.lower().replace({'yes':1, 'no':0})

# 5. Aykırı değer (outlier) yakalama – basit yöntem
Q1 = df['fatura'].quantile(0.25)
Q3 = df['fatura'].quantile(0.75)
IQR = Q3 - Q1
alt = Q1 - 1.5*IQR
ust = Q3 + 1.5*IQR

df_aykiri = df[(df['fatura'] < alt) | (df['fatura'] > ust)]
 
 

3. Grup İstatistikleri – groupby & pivot_table

Python
 
# Gün bazında ortalama bahşiş
df.groupby('day')['bahsis'].mean().round(2)

# Daha detaylı
df.groupby(['day', 'time', 'sex'])[['fatura','bahsis']].agg(['mean','count','max'])

# En çok satan 3 gün
df.groupby('day').size().sort_values(ascending=False).head(3)

# Pivot table (Excel'deki gibi)
pd.pivot_table(df, 
               values='bahsis',
               index='day',
               columns='time',
               aggfunc=['mean','count'])
 
 

4. Görselleştirme – Matplotlib + Seaborn En Pratik Kombinasyonlar

a) Tek değişken – Dağılım

Python
 
plt.figure(figsize=(10,5))

# Histogram + KDE
sns.histplot(data=df, x='fatura', kde=True, bins=20, color='teal')
plt.title('Fatura Tutarlarının Dağılımı', fontsize=14, pad=10)
plt.xlabel('Fatura ($)')
plt.ylabel('Sıklık')
plt.show()
 
 

b) Kategorik – Bar / Countplot

Python
 
plt.figure(figsize=(8,5))
sns.countplot(data=df, x='day', hue='time', palette='Set2')
plt.title('Gün ve Öğün Bazında Müşteri Sayısı')
plt.show()
 
 

c) İlişki – Scatter + Regresyon

Python
 
plt.figure(figsize=(9,6))
sns.regplot(data=df, x='fatura', y='bahsis', 
            scatter_kws={'alpha':0.6}, line_kws={'color':'red'})
plt.title('Fatura arttıkça bahşiş nasıl değişiyor?')
plt.show()
 
 

d) Korelasyon matrisi (heatmap)

Python
 
plt.figure(figsize=(7,6))
sns.heatmap(df.corr(numeric_only=True), annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Sayısal Değişkenler Arası Korelasyon')
plt.show()
 
 

e) Boxplot – Aykırı değerleri görmenin en iyi yolu

Python
 
plt.figure(figsize=(10,5))
sns.boxplot(data=df, x='day', y='bahsis', hue='sex', palette='pastel')
plt.title('Günlere Göre Bahşiş Dağılımı ve Cinsiyet')
plt.show()
 
 

5. Hepsi Bir Arada – Mini Analiz Projesi (kopyala-yapıştır)

Python
 
# ────────────────────────────────────────────────
#    ÖRNEK ANALİZ AKISI – Tips veri seti
# ────────────────────────────────────────────────

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')

# 1. Veri keşfi
print(df.shape)
print(df.isnull().sum())
print(df.describe(include='all'))

# 2. Yeni özellik ekleme
df['bahsis_orani'] = df['tip'] / df['total_bill'] * 100

# 3. Grup analizleri
print("\nGünlük ortalama bahşiş oranı:")
print(df.groupby('day')['bahsis_orani'].mean().round(2))

# 4. Görselleştirme seti
fig, axes = plt.subplots(2, 2, figsize=(14,10))

sns.histplot(ax=axes[0,0], data=df, x='bahsis_orani', kde=True)
axes[0,0].set_title('Bahşiş Oranı Dağılımı')

sns.boxplot(ax=axes[0,1], data=df, x='time', y='bahsis_orani', hue='sex')
axes[0,1].set_title('Öğün & Cinsiyete Göre Bahşiş Oranı')

sns.scatterplot(ax=axes[1,0], data=df, x='total_bill', y='bahsis_orani', hue='day', size='size')
axes[1,0].set_title('Fatura – Bahşiş Oranı İlişkisi')

sns.heatmap(ax=axes[1,1], data=df.corr(numeric_only=True), annot=True, cmap='RdBu', fmt='.2f')
axes[1,1].set_title('Korelasyon Matrisi')

plt.tight_layout()
plt.show()
 
 

Son Söz & İleri Seviye İçin Tavsiyeler

Şu an öğrendiklerinle %80’lik veri analizi işini halledebilirsin.

İleri gitmek istersen sırayla şunlara bak:

  1. Polars → çok büyük verilerde pandas’tan 5–20× hızlı
  2. Plotly / Altair → interaktif grafik
  3. Feature Engineering (dt accessor, pd.cut/qcut, target encoding…)
  4. Missingno + ydata-profiling → otomatik EDA raporları
  5. Scikit-learn ile basit modeller (lineer regresyon, karar ağacı…)

Bol pratik yapmayı unutma. En iyi öğrenme yolu: kendi veri setinle uğraşmak.

Herkese keyifli analizler! 🐼📊

Bu yazıyı paylaş