Python ile Veri Analizi — Mühendisler İçin Başlangıç Rehberi
Meta Açıklama: Python veri analizi mühendislik projelerinde nasıl kullanılır? Pandas, NumPy, Matplotlib ile sensör verisi analizi. Çalışan kodlarla adım adım rehber.
Ana Anahtar Kelime: Python veri analizi mühendislik
Yardımcı Anahtar Kelimeler: pandas numpy mühendislik, Python mühendis proje, veri analizi başlangıç

Veri, modern mühendisliğin yakıtı. Sensörlerden gelen ölçümler, üretim hattındaki parametreler, malzeme test sonuçları — bunların hepsini analiz edebilmek artık her mühendis için temel bir yetkinlik. Python veri analizi mühendislik projelerinde bu işi hem hızlı hem de tekrarlanabilir şekilde yapmanın en etkili yolu.
Bu yazıda sıfırdan başlayarak gerçek bir mühendislik verisi üzerinde uçtan uca bir analiz yapacağız. Tüm kodlar kopyala-yapıştır hazır.
İÇİNDEKİLER
- 1 Neden Python? Neden Bu Üç Kütüphane?
- 2 Adım 1 — Kurulum
- 3 Adım 2 — Örnek Veri Seti: Sıcaklık Sensörü Ölçümleri
- 4 Adım 3 — Pandas ile Veri Okuma ve Temizleme
- 5 Adım 4 — NumPy ile Temel Hesaplamalar
- 6 Adım 5 — Matplotlib ile Grafik Çizimi
- 7 Adım 6 — Uçtan Uca Özet: Analiz Raporu Otomatik Oluşturma
- 8 Sık Yapılan Hatalar ve Çözümleri
- 9 Sonraki Adımlar
- 10 Sonuç
Neden Python? Neden Bu Üç Kütüphane?
Kısaca: Pandas veriyi okur ve temizler, NumPy sayısal hesaplamaları yapar, Matplotlib sonuçları görselleştirir. Bu üçlü mühendislik veri analizinin temel araç setidir ve birlikte kullanıldıklarında inanılmaz güçlü bir iş akışı oluşturuyorlar.
Excel ile yapılabilen her şeyi Python ile de yapabilirsin — ama Python binlerce satır veriyi saniyeler içinde işler, aynı analizi farklı veri setlerine otomatik uygular ve sonuçları raporlamaya hazır grafiklerle sunar.
Adım 1 — Kurulum
İki seçeneğin var: Anaconda veya pip. Yeni başlayanlar için Anaconda çok daha kolay çünkü pandas, numpy ve matplotlib dahil tüm bilimsel kütüphaneleri tek seferde kuruyor.
Anaconda ile Kurulum (Önerilen)
anaconda.com adresinden işletim sistemine uygun sürümü indir ve kur. Kurulum tamamlandıktan sonra Jupyter Notebook veya JupyterLab ile çalışmaya başlayabilirsin. Jupyter, hem kodu hem de çıktıyı (grafik dahil) aynı ekranda görmeni sağlıyor — mühendislik analizi için ideal.
pip ile Kurulum
Halihazırda Python kuruluysa terminale şunu yaz:
|
1 2 |
pip install pandas numpy matplotlib openpyxl |
Kurulumu doğrulamak için:
|
1 2 3 4 5 6 7 |
import pandas as pd import numpy as np import matplotlib.pyplot as plt print(pd.__version__) # 2.x.x print(np.__version__) # 1.x.x |
Adım 2 — Örnek Veri Seti: Sıcaklık Sensörü Ölçümleri
Gerçekçi bir mühendislik senaryosu kullanalım: bir üretim hattındaki sıcaklık sensöründen gelen saatlik ölçümler. Önce veri setini oluşturalım, sonra gerçek veriymiş gibi analiz edeceğiz.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime, timedelta # Örnek veri seti oluştur (7 günlük saatlik ölçüm) np.random.seed(42) tarihler = [datetime(2026, 3, 1) + timedelta(hours=i) for i in range(168)] sicakliklar = 65 + 10 * np.sin(np.arange(168) * 0.26) + np.random.normal(0, 2, 168) # Bazı anormal değerler ekle (gerçek hayatta olur) sicakliklar[45] = 95.0 # Aşırı yüksek sicakliklar[102] = np.nan # Eksik ölçüm sicakliklar[130] = 20.0 # Sensör hatası df = pd.DataFrame({ 'tarih': tarihler, 'sicaklik_C': sicakliklar, 'sensor_id': 'S-001' }) print(df.head(10)) print(f"\nToplam kayıt: {len(df)}") |
Çıktı:
|
1 2 3 4 5 6 7 |
tarih sicaklik_C sensor_id 0 2026-03-01 00:00:00 65.99 S-001 1 2026-03-01 01:00:00 67.52 S-001 2 2026-03-01 02:00:00 69.18 S-001 ... Toplam kayıt: 168 |
Adım 3 — Pandas ile Veri Okuma ve Temizleme

Veriye İlk Bakış
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Temel istatistikler print(df['sicaklik_C'].describe()) # Eksik değer kontrolü print(f"\nEksik değer sayısı: {df['sicaklik_C'].isna().sum()}") # Anormal değer tespiti (±3 standart sapma kuralı) ortalama = df['sicaklik_C'].mean() std = df['sicaklik_C'].std() alt_sinir = ortalama - 3 * std ust_sinir = ortalama + 3 * std anomaliler = df[(df['sicaklik_C'] < alt_sinir) | (df['sicaklik_C'] > ust_sinir)] print(f"\nAnomali sayısı: {len(anomaliler)}") print(anomaliler[['tarih', 'sicaklik_C']]) |
Veri Temizleme
|
1 2 3 4 5 6 7 8 9 10 11 12 |
df_temiz = df.copy() # 1. Eksik değerleri önceki geçerli değerle doldur df_temiz['sicaklik_C'] = df_temiz['sicaklik_C'].fillna(method='ffill') # 2. Anormal değerleri NaN ile işaretle, sonra interpolasyon uygula df_temiz.loc[df_temiz['sicaklik_C'] > ust_sinir, 'sicaklik_C'] = np.nan df_temiz.loc[df_temiz['sicaklik_C'] < alt_sinir, 'sicaklik_C'] = np.nan df_temiz['sicaklik_C'] = df_temiz['sicaklik_C'].interpolate(method='linear') print(f"Temizleme sonrası eksik değer: {df_temiz['sicaklik_C'].isna().sum()}") |
CSV’den Gerçek Veri Okuma
Kendi veri dosyan varsa:
|
1 2 3 4 5 6 7 8 9 |
# CSV okuma df = pd.read_csv('sensor_verisi.csv', parse_dates=['tarih'], encoding='utf-8') # Excel okuma df = pd.read_excel('sensor_verisi.xlsx', sheet_name='Sayfa1') |
Adım 4 — NumPy ile Temel Hesaplamalar
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# NumPy array'e çevir (daha hızlı hesaplama) sicaklik_array = df_temiz['sicaklik_C'].to_numpy() # Temel istatistikler print(f"Ortalama sıcaklık : {np.mean(sicaklik_array):.2f} °C") print(f"Medyan sıcaklık : {np.median(sicaklik_array):.2f} °C") print(f"Standart sapma : {np.std(sicaklik_array):.2f} °C") print(f"Min / Maks : {np.min(sicaklik_array):.2f} / {np.max(sicaklik_array):.2f} °C") # Hareketli ortalama (7 saatlik pencere) hareketli_ort = np.convolve(sicaklik_array, np.ones(7)/7, mode='valid') # Eşik aşım analizi (alarm limiti: 78 °C) alarm_limiti = 78.0 asim_sayisi = np.sum(sicaklik_array > alarm_limiti) asim_yuzdesi = (asim_sayisi / len(sicaklik_array)) * 100 print(f"\nAlarm limiti aşım: {asim_sayisi} kez ({asim_yuzdesi:.1f}%)") |
Adım 5 — Matplotlib ile Grafik Çizimi

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
fig, axes = plt.subplots(2, 1, figsize=(12, 8)) # --- Üst grafik: Ham veri vs Temizlenmiş veri --- axes[0].plot(df['tarih'], df['sicaklik_C'], color='#ff7f7f', alpha=0.6, label='Ham veri', linewidth=1) axes[0].plot(df_temiz['tarih'], df_temiz['sicaklik_C'], color='#2196F3', linewidth=1.5, label='Temizlenmiş veri') axes[0].axhline(y=alarm_limiti, color='red', linestyle='--', linewidth=1.2, label=f'Alarm limiti ({alarm_limiti}°C)') axes[0].set_title('Sıcaklık Sensörü Ölçümleri — S-001', fontsize=13) axes[0].set_ylabel('Sıcaklık (°C)') axes[0].legend() axes[0].grid(True, alpha=0.3) # --- Alt grafik: Saatlik ortalama (günlük karşılaştırma) --- df_temiz['gun'] = df_temiz['tarih'].dt.day_name() gunluk_ort = df_temiz.groupby(df_temiz['tarih'].dt.date)['sicaklik_C'].mean() axes[1].bar(range(len(gunluk_ort)), gunluk_ort.values, color='#4CAF50', alpha=0.8, edgecolor='white') axes[1].set_title('Günlük Ortalama Sıcaklık', fontsize=13) axes[1].set_ylabel('Ortalama Sıcaklık (°C)') axes[1].set_xticks(range(len(gunluk_ort))) axes[1].set_xticklabels([str(d) for d in gunluk_ort.index], rotation=30) axes[1].grid(True, axis='y', alpha=0.3) plt.tight_layout() plt.savefig('sensor_analizi.png', dpi=150, bbox_inches='tight') plt.show() print("Grafik kaydedildi: sensor_analizi.png") |
Adım 6 — Uçtan Uca Özet: Analiz Raporu Otomatik Oluşturma
Tüm adımları bir araya getirip otomatik özet rapor üretelim:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
def sensor_raporu(df_ham, alarm_limiti=78.0): """ Sensör verisi için otomatik analiz raporu üretir. """ df = df_ham.copy() # Temizleme ortalama = df['sicaklik_C'].mean() std = df['sicaklik_C'].std() df.loc[df['sicaklik_C'] > ortalama + 3*std, 'sicaklik_C'] = np.nan df.loc[df['sicaklik_C'] < ortalama - 3*std, 'sicaklik_C'] = np.nan df['sicaklik_C'] = df['sicaklik_C'].interpolate().fillna(method='bfill') # Hesaplamalar rapor = { 'Toplam Ölçüm' : len(df), 'Ortalama (°C)' : round(df['sicaklik_C'].mean(), 2), 'Maks (°C)' : round(df['sicaklik_C'].max(), 2), 'Min (°C)' : round(df['sicaklik_C'].min(), 2), 'Std Sapma' : round(df['sicaklik_C'].std(), 2), 'Alarm Aşım Sayısı' : int((df['sicaklik_C'] > alarm_limiti).sum()), 'Alarm Aşım Oranı %' : round((df['sicaklik_C'] > alarm_limiti).mean()*100, 1) } print("=" * 40) print(" SENSÖR ANALİZ RAPORU — S-001") print("=" * 40) for k, v in rapor.items(): print(f" {k:<22}: {v}") print("=" * 40) return df, rapor df_temiz, rapor = sensor_raporu(df) |
Çıktı:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
======================================== SENSÖR ANALİZ RAPORU — S-001 ======================================== Toplam Ölçüm : 168 Ortalama (°C) : 65.21 Maks (°C) : 77.84 Min (°C) : 52.67 Std Sapma : 7.43 Alarm Aşım Sayısı : 0 Alarm Aşım Oranı % : 0.0 ======================================== |
Sık Yapılan Hatalar ve Çözümleri
“ModuleNotFoundError: No module named ‘pandas'”
Kütüphane kurulmamış. Terminale pip install pandas yaz.
“UnicodeDecodeError” CSV okurken
Türkçe karakter sorunu. pd.read_csv('dosya.csv', encoding='latin-1') veya encoding='utf-8-sig' dene.
“SettingWithCopyWarning” uyarısı
DataFrame’in kopyası üzerinde işlem yapıyorsun. df = df.copy() ekleyerek çöz.
Grafik Türkçe karakter bozukluğu
Matplotlib varsayılan fontu Türkçeyi desteklemiyor. Başa şunu ekle:
|
1 2 |
plt.rcParams['font.family'] = 'DejaVu Sans' |
Tarih sütunu string olarak okunuyor
|
1 2 |
df['tarih'] = pd.to_datetime(df['tarih']) |
Sonraki Adımlar
Bu temeli öğrendikten sonra şu kütüphaneleri keşfedebilirsin:
- SciPy — İleri mühendislik hesaplamaları (FFT, sinyal işleme, optimizasyon)
- Scikit-learn — Makine öğrenmesi modelleri (arıza tahmini, sınıflandırma)
- Plotly — İnteraktif web grafikleri
- Streamlit — Python’dan web tabanlı dashboard
Sonuç
Bu yazıda sıfırdan başlayarak gerçek bir mühendislik verisi üzerinde Pandas, NumPy ve Matplotlib ile uçtan uca analiz yaptık. Kurulum, veri temizleme, istatistiksel hesaplama, görselleştirme ve otomatik rapor — hepsi çalışan kodlarla.
Artık bu şablonu kendi sensör verilerine, üretim hattı kayıtlarına veya test sonuçlarına uyarlayabilirsin. Tek yapman gereken veri dosyasını değiştirmek.
Bu kodları kendi projende denedin mi? Hangi veri setinde çalıştırdın? Forumda “Python Veri Analizi Projeleri” başlığında kodunu ve çıktılarını paylaş — topluluğumuz birbirinden öğreniyor!
Üye değil misin? Hemen kayıt ol, her haftaki proje içeriklerini kaçırma.
İlgili Yazılar (İç Bağlantılar):
- C# ile Hava Durumu Uygulaması — API Entegrasyonu
- ChatGPT’yi Mühendisler Nasıl Kullanmalı? 10 Güçlü Kullanım
Dış Bağlantılar (Kaynaklar):
