← Ana Sayfaya Dön
📊 Profil 3 - Veri Analizi

EduBot 2.0 - Profil 3: Python ile Veri Bilimi (Gün 6-10)

Gün 6
Gün 7
Gün 8
Gün 9
Gün 10

Gün 6: Python ile Veri Analizi Giriş (NumPy ve Pandas Tanıtımı)

Veri analizi, ham verileri işleyerek anlamlı bilgiler çıkarma sürecidir. Python, veri analizi için güçlü kütüphanelere sahiptir. Bugün bu kütüphanelerden NumPy ve Pandas'ı öğreneceğiz.

NumPy Nedir?

NumPy (Numerical Python), Python'da bilimsel hesaplamalar için temel pakettir. Büyük, çok boyutlu diziler ve matrisler üzerinde çalışmayı kolaylaştırır ve bu diziler üzerinde yüksek performanslı işlemler yapmayı sağlar.

Pandas Nedir?

Pandas, veri manipülasyonu ve analizi için güçlü bir Python kütüphanesidir. DataFrame adı verilen iki boyutlu veri yapıları sağlar ve veri temizleme, dönüştürme, analiz gibi işlemleri kolaylaştırır.

# NumPy ve Pandas temel kullanımı
import numpy as np
import pandas as pd

# NumPy array oluşturma
arr = np.array([1, 2, 3, 4, 5])
print("NumPy Array:", arr)

# Pandas DataFrame oluşturma
data = {'İsim': ['Ali', 'Ayşe', 'Mehmet', 'Zeynep'],
        'Yaş': [25, 30, 35, 40],
        'Şehir': ['İstanbul', 'Ankara', 'İzmir', 'Bursa']}
df = pd.DataFrame(data)
print("\nPandas DataFrame:")
print(df)
NumPy Array: [1 2 3 4 5]

Pandas DataFrame:
     İsim  Yaş      Şehir
0     Ali   25  İstanbul
1    Ayşe   30    Ankara
2  Mehmet   35     İzmir
3  Zeynep   40     Bursa

Pandas ile Temel İşlemler

Pandas, veri analizinde sık kullanılan birçok işlev sunar:

Aşağıdakilerden hangisi Pandas DataFrame'de eksik verileri tespit etmek için kullanılır?

Gün 7: Matplotlib ile Veri Görselleştirme

Veri görselleştirme, verilerin grafikler ve çizimler halinde sunulmasıdır. Bu sayede verilerdeki desenler, eğilimler ve ilişkiler daha kolay anlaşılabilir. Matplotlib, Python'da en yaygın kullanılan görselleştirme kütüphanesidir.

Matplotlib Temelleri

Matplotlib, MATLAB benzeri bir arayüz sunar. Temel bileşenleri:

import matplotlib.pyplot as plt
import numpy as np

# Veri oluşturma
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Çizgi grafiği oluşturma
plt.figure(figsize=(8, 4))
plt.plot(x, y, label='sin(x)', color='blue', linewidth=2)
plt.title('Sinüs Fonksiyonu Grafiği')
plt.xlabel('X Değerleri')
plt.ylabel('sin(X)')
plt.grid(True)
plt.legend()
plt.show()

Farklı Grafik Türleri

Matplotlib ile çeşitli grafik türleri oluşturulabilir:

# Çubuk grafik örneği
meyveler = ['Elma', 'Portakal', 'Muz', 'Üzüm']
satislar = [45, 30, 55, 20]

plt.figure(figsize=(6, 4))
plt.bar(meyveler, satislar, color=['red', 'orange', 'yellow', 'purple'])
plt.title('Meyve Satışları')
plt.ylabel('Satış Miktarı')
plt.show()
Matplotlib'de bir grafiğin başlığını ayarlamak için hangi fonksiyon kullanılır?

Gün 8: Gerçek Proje Verisiyle Analiz

Bugün gerçek dünya verileri üzerinde analiz yapacağız. Kullanacağımız veri seti, Kaggle'dan alınan bir emlak veri seti olacak. Bu veri seti üzerinden Pandas ve Matplotlib becerilerimizi uygulayacağız.

Veri Setini Yükleme ve İnceleme

Öncelikle veri setini yükleyip genel özelliklerine bakalım:

import pandas as pd
import matplotlib.pyplot as plt

# Veri setini yükleme
df = pd.read_csv('https://raw.githubusercontent.com/robotoryo/datasets/main/real_estate.csv')

# İlk 5 satırı görüntüleme
print("İlk 5 Kayıt:")
print(df.head())

# Temel istatistikler
print("\nTemel İstatistikler:")
print(df.describe())

# Sütun bilgileri
print("\nSütunlar ve Veri Tipleri:")
print(df.info())

Veri Analizi ve Görselleştirme

Şimdi veri setindeki bazı ilişkileri analiz edip görselleştirelim:

# Fiyat dağılımı histogramı
plt.figure(figsize=(10, 5))
plt.hist(df['price'], bins=30, color='skyblue', edgecolor='black')
plt.title('Konut Fiyat Dağılımı')
plt.xlabel('Fiyat')
plt.ylabel('Frekans')
plt.show()

# Oda sayısına göre ortalama fiyat
oda_fiyat = df.groupby('bedrooms')['price'].mean()
plt.figure(figsize=(8, 4))
oda_fiyat.plot(kind='bar', color='green')
plt.title('Oda Sayısına Göre Ortalama Fiyat')
plt.xlabel('Oda Sayısı')
plt.ylabel('Ortalama Fiyat')
plt.xticks(rotation=0)
plt.show()

Korelasyon Analizi

Sayısal değişkenler arasındaki ilişkiyi korelasyon matrisi ile inceleyelim:

# Korelasyon matrisi
corr = df.corr()

# Isı haritası ile görselleştirme
import seaborn as sns
plt.figure(figsize=(10, 8))
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0)
plt.title('Değişkenler Arası Korelasyon Isı Haritası')
plt.show()
Pandas'ta bir DataFrame'deki sayısal sütunlar arasındaki korelasyonu hesaplamak için hangi fonksiyon kullanılır?

Gün 9: Fonksiyonel Veri Temizleme Teknikleri

Veri analizinde en önemli adımlardan biri veri temizlemedir. Gerçek dünya verileri genellikle eksik, tutarsız veya hatalı olabilir. Bugün bu sorunlarla başa çıkmanın yöntemlerini öğreneceğiz.

Eksik Veri (Missing Data) Yönetimi

Eksik verilerle başa çıkmanın birkaç yolu vardır:

# Eksik veri analizi
import pandas as pd
import numpy as np

# Örnek veri oluşturma
data = {'İsim': ['Ali', 'Ayşe', 'Mehmet', 'Zeynep', 'Can'],
        'Yaş': [25, np.nan, 35, 40, 28],
        'Şehir': ['İstanbul', 'Ankara', np.nan, 'Bursa', 'İzmir']}
df = pd.DataFrame(data)

print("Orijinal Veri:")
print(df)

# Eksik verileri sayma
print("\nEksik Veri Sayısı:")
print(df.isnull().sum())

# Eksik verileri ortalama yaş ile doldurma
df['Yaş'].fillna(df['Yaş'].mean(), inplace=True)

# Kategorik verileri mod ile doldurma
df['Şehir'].fillna(df['Şehir'].mode()[0], inplace=True)

print("\nTemizlenmiş Veri:")
print(df)

Aykırı Değer (Outlier) Tespiti ve İşleme

Aykırı değerler, veri setindeki diğer gözlemlere göre aşırı farklı olan değerlerdir. Tespit yöntemleri:

# Aykırı değer tespiti
import seaborn as sns
import matplotlib.pyplot as plt

# Örnek veri
np.random.seed(42)
data = np.random.normal(100, 20, 200)
data = np.append(data, [250, 300, -50])  # Aykırı değerler ekleme

# Boxplot ile görselleştirme
plt.figure(figsize=(8, 4))
sns.boxplot(data)
plt.title('Aykırı Değerlerin Tespiti')
plt.show()

# IQR yöntemi ile aykırı değerleri belirleme
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1
alt_sinir = Q1 - 1.5 * IQR
ust_sinir = Q3 + 1.5 * IQR

aykirilar = [x for x in data if x < alt_sinir or x > ust_sinir]
print("Aykırı Değerler:", aykirilar)
Aşağıdakilerden hangisi Pandas'ta bir DataFrame'deki eksik verileri ortalama değerle doldurmak için doğru yöntemdir?

Gün 10: Mini Proje: COVID Verilerinin Analizi

Bu son günde, öğrendiğimiz tüm becerileri bir araya getirerek gerçek bir veri seti üzerinde analiz yapacağız. Kullanacağımız veri seti, Johns Hopkins Üniversitesi'nin topladığı COVID-19 verileri olacak.

Veri Setini Yükleme ve Ön İşleme

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

# COVID veri setini yükleme
url = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv'
covid_df = pd.read_csv(url)

# Veriyi inceleme
print("Veri Seti Boyutu:", covid_df.shape)
print("\nİlk 5 Satır:")
print(covid_df.head())

# Tarih sütunlarını işleme
# Ülke bazında toplam vaka sayılarını hesaplama
covid_df = covid_df.groupby('Country/Region').sum().reset_index()
covid_df = covid_df.drop(['Lat', 'Long'], axis=1)

# Son 5 günün verilerini görüntüleme
print("\nSon 5 Günün Vakaları:")
print(covid_df.iloc[:, -5:].head())

Veri Analizi ve Görselleştirme

# En çok vaka görülen 10 ülke
top_10 = covid_df.melt(id_vars=['Country/Region'], 
                      var_name='Tarih', 
                      value_name='Vaka').groupby('Country/Region')['Vaka'].max().nlargest(10)

plt.figure(figsize=(10, 6))
top_10.plot(kind='barh', color='darkred')
plt.title('En Çok COVID-19 Vakası Görülen 10 Ülke')
plt.xlabel('Toplam Vaka Sayısı')
plt.ylabel('Ülke')
plt.gca().invert_yaxis()
plt.show()

# Türkiye'nin vaka artış grafiği
turkey = covid_df[covid_df['Country/Region'] == 'Turkey'].iloc[:, 1:].T
turkey.columns = ['Vaka Sayısı']
turkey.index = pd.to_datetime(turkey.index)

plt.figure(figsize=(12, 6))
plt.plot(turkey.index, turkey['Vaka Sayısı'], marker='o', color='red')
plt.title('Türkiye COVID-19 Vaka Artışı')
plt.xlabel('Tarih')
plt.ylabel('Toplam Vaka Sayısı')
plt.grid(True)
plt.show()

Zaman Serisi Analizi

# Günlük yeni vaka sayılarını hesaplama
turkey['Günlük Yeni Vakalar'] = turkey['Vaka Sayısı'].diff()

plt.figure(figsize=(12, 6))
plt.bar(turkey.index, turkey['Günlük Yeni Vakalar'], color='orange')
plt.title('Türkiye Günlük Yeni COVID-19 Vakaları')
plt.xlabel('Tarih')
plt.ylabel('Yeni Vaka Sayısı')
plt.grid(True)
plt.show()

# Hareketli ortalama hesaplama
turkey['7 Günlük Hareketli Ortalama'] = turkey['Günlük Yeni Vakalar'].rolling(window=7).mean()

plt.figure(figsize=(12, 6))
plt.plot(turkey.index, turkey['7 Günlük Hareketli Ortalama'], color='green', linewidth=2, label='7 Günlük Ortalama')
plt.bar(turkey.index, turkey['Günlük Yeni Vakalar'], color='orange', alpha=0.3, label='Günlük Vakalar')
plt.title('Türkiye COVID-19 Günlük Vakalar ve Hareketli Ortalama')
plt.xlabel('Tarih')
plt.ylabel('Vaka Sayısı')
plt.legend()
plt.grid(True)
plt.show()
Pandas'ta bir zaman serisindeki günlük farkları (bir önceki günle fark) hesaplamak için hangi fonksiyon kullanılır?
Profil 3 – 3. Kısma Geç