0% found this document useful (0 votes)
2 views105 pages

Python

Python

Uploaded by

mustafaiii
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views105 pages

Python

Python

Uploaded by

mustafaiii
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Mühendisler için Python

Prof. Dr. Mustafa Sönmez


Aksaray Üniversitesi, İnşaat Mühendisliği Bölümü

25 Aralık 2025
Bölüm 1

Genel Bilgiler

1.1 Kurulum
• Pyhton programını kurmak için ([Link] indirilir ve genellikle C:\Python
klasörüne yüklenir.
• En çok kullanılan ücretsiz editörler.
– Spyder, Jypter-Lab, Jypter, Visual Code Editor
– Bu editörlerden biri C:\Pthon\Script klasörlü içinde >> pip install editorname yazılarak yüklene-
bilir. Mühendislik problemleri için editorname yerine ”Spyder” veya ”jypter-lab” kullanılabilir.
• Ve ya online editorler kullanılabilir.

1
– Colab - Google kullanıcı ismi ile kullanılabilir.
– Python Online sayfalar: ([Link]
• IDE kullanmadan python ara yüzü de kullanılabilir. Ancak tercih edilmez.
• Sunum ve ödevler için Jypter-lab daha kullanışlı

1.2 Tarihçe
• İlk versiyonu (versiyon 0.9.0) 1991 yılında yayınlanmıştır.
• 2008 yılına kadar Python’un 2.x şeklinde farklı versiyonları yayınlanmış olmakla birlikte, en radikal değişiklik
Python 3.0 ile gelmiştir.
• Ekim 2025 tarihi itibari ile 3.14. sürüm kullanılmaktadır.
• Python programlama için farklı araçlar olmakla birlikte tüm Python sürümleri komut satırında etkileşimli işlem
yapmak için güçlü bir kabuk (shell) sunmaktadır.
• Python doğru olarak yüklenmiş ise, Python kabuğuna doğrudan python komutu verilerek geçilebilir.
• Python komut satırında birçok matematiksel işlem yapılabilir.
• Python komutları bir program dosyası haline getirilerek dışarıdan çalıştırılabilir.

>> python junkfilename . py

• Binlerce kütüphane kolayca yüklenir. Fen bilimleri ile ilgilenenler numpy, scipy, sympy, pandas ve matplotlib
gibi kütüphaneleri sıklıkla kullanırlar.
• Bağımsız tasarımcılar tarafından farklı kütüphane kullanılabilir.

ASÜ - MSönmez - Python 2


1.3 Hesap makinesi olarak Python
- Python programının içinde vaya Jypter-lab arayüzü kullanılarak python bir hesap makinesi olarak kullanılabilir.
Örnek iki sayının toplamı için

[1]:3 + 5
[1]:8

- Aşağıdaki eşitliği yazın ve sonucu bulalım

4·5
22 − 3+4

2

[2]:(4*5) /(2**2 -(3+4) /2)


[2]:40.0

- Matematik işlemlerinde bir önceki bulun değer kullanılacak işe alt çizgi ( ) kullanılır.

[3]: _ *2
[3]:80.0

[4]: _ **2
[4]:6400.0

- Python sin(), cos(), tan(), asin(), acos(), atan(), exp(), log(), log10(), sqrt() gibi bir çok
aritmetik işlem fonksiyonları vardır. Ancak bu fonksiyonların hepsi math ismindeki modül içindedir ve bu fonksiyonlar
kullanılmadan önce modül çağrılmalıdır.

[3]: import math

ASÜ - MSönmez - Python 3


math . cos ( math . pi )
[3]: -1

- Modül adı + nokta + TAB yazarak modülde ne olduğunu hızlıca görülebilir. Ayrıca, fonksiyonun ilk birkaç harfini
yazıp TAB tuşuna basarsanız, sizin için fonksiyonu otomatik olarak tamamlayabilir, buna TAB tamamlama denir.


- Sırası ile e2 , 16, log10 (32), ln(e) ve sin(π/4) matematiksel ifadelerin yazarak gösteriniz.
[3]: import math
math . exp (2)
math . sqrt (16)
math . log10 (32)
math . log ( math . exp (1) )
math . sin ( math . pi /4)

ASÜ - MSönmez - Python 4


-

1.4 İlk program


• Ekrana bir şeyler yazmak için

print ( " Hello , World " )

• Tek açıklama satırı için # ve Çok satırlı açıklamalar için üç tek tırnak veya üç çift tırnak kullanabilir.

a = 3.4 # a b i r r e e l s a y ı o l s u n
"""
Bir den fazla sat ı r ...
a ç ı klama ifadesi yaz ı labilir .
"""

• Değişken girme ve yazdırma

name = input ( " What is your name - ->" )


print ( " Hello " )
print ( name )

• İstenen formatta yazma

print ( f " Hello { name } " , sep = " " , end = " \ n " )

print(f"{}"): Küme işareti içine değişken yazılır ise değişkenin değeri yazılır. Daha sonra ele alınactır.
sep=" " : Değişkenler arasında konulacak işaret yazılabilir.

ASÜ - MSönmez - Python 5


end=" ": Satır sonu formatı belirlenir.

1.5 Değişkenler
• Eşittir operatörü "=" değişkenlere değer atamak için kullanılır.

a = 3.4
b = c = d = 4.4
x , y , z = 10 , 20.4 , 3.3 e3

print ( f " a ={ a } , \ nb ={ b } , \ t c ={ c } , \ t d ={ d } " )


print ( f " x ={ x } , \ t y ={ y } , \ t z ={ z } , \ t " )
print ( f " b + x = { b + x } " ) # gecerli
print ( f " b + x = { b + a } " ) # gecersiz

• Değişkenler bir harf (a - z, A - Z) veya alt çizgi ile başlamalıdır.


• Bunların dışında sayı veya başka bir karakter ile de başlayamaz.
• Değişken adında rakam, alt çizgi, büyük veya küçük harf olabilir.
• Değişken adları herhangi bir uzunlukta olabilir.
• Türkçe karakterlerin (ç , ğ, ı, ö, ş ve ü) kullanımına izin vermektedir.
• Python progamlama dilinde kullanılan anahtar kelimeler değişken olarak kullanılmaz print, if for ..

ASÜ - MSönmez - Python 6


1.6 Veri tipleri
1.6.1 Tam sayı(int)
• Negatif ve pozitif tam sayılar kümesini kapsayan veri tipidir. Integer yani kısa ismiyle int olarak nitelendirilirler
• Aşağıdaki kodun sonuç ne olur?

x = input ( " x say ı s ı - -> ? " )


y = input ( " y say ı s ı - -> ? " )
c = x + y
print ( c )

• Girilen değerlerin formatını değiştirelim.

x = input ( " x say ı s ı - -> ? " )


y = input ( " y say ı s ı - -> ? " )
c = int ( x ) * int ( y )

print ( c )

# Daha iyi bir yaz ı l ı m ş e k l i


x = int ( input ( " x say ı s ı - -> ? " ) )

• Tam sayılar için herhangi bir alt ve üst sınırlama yoktur.


• Sekizlik tabandaki tam sayılar: sıfır (0) ve ”o” harfi ile başlar
• 16’lık tabandaki tam sayılar: sıfır (0) ve ”x” veya ”X” harfi ile başlar
• 2’lik tabandaki tam sayılar: sıfır (0) ve ”b” veya ”B” harfi ile başlar

ASÜ - MSönmez - Python 7


a =64
print ( f " a = { bin ( a ) } iki tabal ı " )
print ( f " a = { oct ( a ) } sekiz tabl ı " )
print ( f " a = { hex ( a ) } onalt ı tabal ı " )

1.6.2 Reel sayılar(float)


• Reel sayı atama ve dönüştürme

a = 2.33
x = float ( input ( " x say ı s ı - -> ? " ) )
y = float ( input ( " y say ı s ı - -> ? " ) )
print ( x + y )

• Reel sayıyı istenilen hassasiyette saklama

print ( round (1.0/3) )


print ( round (1.0/3 ,2) )
print ( round (1.0/3 ,4) )

• Reel sayının değerini değiştirmeden sadece ekrana istenilen formatta yazma

a =1234.6789
print ( f " a ={ a :2.3 f } " ) # a =1234.68
print ( f " a ={ a : ,} " ) # a =1 ,234.6789
print ( f " a ={ a : _ } " ) # a =1 _234 .6789
print ( f " a ={ a :2.3 g } " ) # a =1.23 e +03

ASÜ - MSönmez - Python 8


1.7 Karakter katarı (string)
• Bilgisayar dünyasında ardışık harf gruplarının temsil edilmesi için string tipine ihtiyaç vardır.
• Metin tipi değişkenler tek veya çift tırnak ile gösterilebilir:
• Bir string uzunluğu len() ile ve değişken tipi type() elde edilir.

A_str = " Hello Word "


print ( A_str )
print ( type ( A_str ) )
print ( len ( A_str ) )

• Üç tırnak (“‘ veya ”””) kullanarak çok satırlı karakter katarları elde edilir.
• + operatörü ile birleştirebilirsiniz:

A = " Hello "


B = " World "
print ( A + B )

ASÜ - MSönmez - Python 9


Şekil 1.1: String indeksleme

metin = " Python "


print ( metin [0]) # Ç ı k t ı : P ( ilk karakter )
print ( metin [ -1]) # Ç ı k t ı : n ( son karakter )
print ( metin [1:4]) # Ç ı kt ı: yth (1. indeksten 4. i n d e k s e kadar )
print ( metin [2:]) # Ç ı kt ı: yth (2. indeksten en son e l e m a n a kadar )
print ( metin [:2]) # Ç ı kt ı: yth (2. indeksten e kadar )
print ( metin [ -2:]) # Ç ı kt ı: yth (2. indeksten en son e l e m a n a kadar )
print ( metin [: -2]) # Ç ı kt ı: yth (2. indeksten e kadar )

• En çok kullanılan string() metotları:


upper() ve lower(): Stringi büyük harfe veya küçük harfe çevirir.
strip(): Stringin başındaki ve sonundaki boşlukları siler.
replace(): Belirli bir alt dizeyi başka bir dizeyle değiştirir.
split(): Stringi belirli bir ayraça göre böler.
find(): Bir alt dizenin başlangıç indeksini bulur.
metin = " Python Programlama "
print ( metin . strip () ) # Ç ı k t ı : " P y t h o n Programlama "

ASÜ - MSönmez - Python 10


print ( metin . lower () ) # Ç ı k t ı : " python programlama "
print ( metin . replace ( " Python " , " Java " ) ) # Ç ı k t ı : " Java Programlama "
print ( metin . split () ) # Ç ı k t ı : [ ’ P y t h o n ’ , ’ P r o g r a m l a m a ’ ]
print ( metin . find ( " Pro " ) ) # Ç ı k t ı : 7
print ( metin . find ( " Ali " ) ) # Ç ı k t ı : - 1
print ( metin . index ( " Pro " ) ) # Ç ı k t ı : 7

• in anahtar kelimesi ile bir k içinde başka bir stringin olup olmadığını kontrol edebilirsiniz:

metin = " Python Programlama "


print ( " Python " in metin ) # Ç ı k t ı : T r u e

• İstenine formatta yazmak için print(f" ") kullanılır.

Geni ş lik ve hizalama


print ( f " { ’ Ad ’: <10} { ’ Ya ş ’: >5} " )
print ( f " { ’ Ahmet ’: <10} {25: >5} " )
print ( f " { ’ Ay ş e ’: <10} {30: >5} " )
# Ç ı k t ı :
# Ad Y a ş
# Ahmet 25
# A y ş e 30

1.8 Operatörler

İşaret İşlem Örnek Sonuç


+ Toplama 5+3 8

ASÜ - MSönmez - Python 11


− Çıkarma 5−3 2
∗ Çarpma 5∗3 15
/ Bölme 5/3 1.66666667
∗∗ Kuvvet 5 ∗ ∗3 125
// Tam sayı bölme 5//3 1
% Mod 5%3 2

• İşlemlerin öncelik sırası vardır. Her zaman ilk önce parantez içleri daha sonra üst işlemleri yapılır. Sonra sırası
ile çarpma/bölme ve son olarak da toplama/çıkarma işlemleri yapılır.
• Eğer tüm işlemler aynı ise işlemler sağdan sola öncelik sırasına göre yapılır.
Aşağıdaki işlemleri sonucu ne olur.

a = 2 / 2 / 2 / 2
b = (2/2) / 2 / 2
c = ( 2 / 2 ) /( 2 / 2)
d = 2 / ( 2 / 2 ) / 2
print ( f " a = {a}, b = {b}, c = {c}, d = {d}")

1.9 Boolean
• Python’da doğru ve yanlış değerleri saklamak için kullanılan tipe bool adı verilmektedir, bu isim Boolean Ce-
birini geliştiren İngiliz matematikçi George Boole’dan dolayı verilmiştir. Boolean (Mantıksal) veri tipi, Python’da
True (Doğru) ve False (Yanlış) değerlerini temsil eder. Boolean veri tipi, genellikle koşullu ifadelerde ve karar
verme mekanizmalarında kullanılır.
• Boolean Değerler

ASÜ - MSönmez - Python 12


– True : Doğru (1)
– False: Yanlış (0)
• Boolean Dönüşümü
– Diğer veri tipleri bool() fonksiyonu ile Boolean’a dönüştürülebilir:
– Sayılar: 0 dışındaki tüm sayılar True, 0 ise False.
– Stringler: Boş string (””) False, dolu stringler True.
– Listeler, demetler, sözlükler: Boş olanlar False, dolu olanlar True

1.10 İlişki operatörleri

İşaret İşlem Örnek Sonuç


== Eşit mi? 5 == 3 False
!= Farklı mı? 5! = 3 True
> Büyüktür? 5>3 True
< Küçüktür? 5<3 False
>= Büyük veya eşittir? 3 >= 3 True
<= Küçük veya eşittir? 5 <= 3 False
is Değerler eşit mi? ’Elif’ is ’elif’ False
isnot Değerler farklı mı? ’Elif’ is not ’elif’ True
in İçeriyor mu? ’bil’ in ’bilişim’ True
notin İçermiyor mu? ’bil’ not in ’bilişim’ False

ASÜ - MSönmez - Python 13


1.11 Atama Operatörleri

İşaret İşlem Örnek Sonuç (sayi1=5)


+= Artırarak atama sayi1+=3 8
-= Eksilterek atama sayi1-=3 2
*= Çarparak atama sayi1*=3 15
/= Bölerek atama sayi1/=3 1.666667
**= Kuvvet alarak atama sayi1**=3 125
//= Tam sayı bölerek atama sayi1//=3 1
%= Mod alarak atama sayi1%=3 2

1.12 Mantıksal Operatörler


• or Operatörü ve and Operatörü
1 and 1 -> 1 1 or 1 -> 1
0 and 1 -> 0 0 or 1 -> 1
1 and 0 -> 0 1 or 0 -> 1
0 and 0 -> 0 0 or 0 -> 0
• 1 yerine True ve 0 yerine False kelimeleri kullanılabilir.
• Aşağıda verilen değişken değerlerini hesaplayınız.

A = (4 >0) or (4 < 3 )
B = (3 =! 5) and ( True == False )

ASÜ - MSönmez - Python 14


1.13 Karar Komutları I- if
• En çok kullanılan karar komutudur. Tüm programlama dillerde vardır.
if (Şart Doğru ise)
Bu satır kullanılır
da işlemler yapılır
else
Şart doğru değilse
Bu satırdaki işlemler yapılır
x , y =10 ,30
if x > y :
z=x+y
elif x < y :
z=x*y
else :
z = 0

• elif gerek varsa yazılır, yani hiç yazılmayabilir de.

x = int ( input ( " x : " ) )


y = int ( input ( " y : " ) )

if x > y :
print ( "x , y den b ü y ü k " )
elseif x < y :
print (x , y den k ü ç ü k )
else :

ASÜ - MSönmez - Python 15


print (x , y ye e ş it )

• Eğer istenir ise if komutunun kısa halini de kullanılabilir.

n =20
a = True if n % 2 == 0 else False

Örnek: Öğrencilerin 100 üzerinde aldığı notları ASÜ yönetmeliğine göre harf karşılıkları hesaplayınız.
Örnek: Girilen sayının çift olup olmadığını kontrol eden programı aşağıdaki ifadeleri kullanarak yazınız. % Mode
komutunu kullanınız.

1.14 Karar komutu II- match


• Bir programda çok sayıda koşul kontrolü ve bunların sonucuna göre gerçekleştirilmesi gereken işlemler varsa,
if-else yapıları ile akışın izlenmesi zorlaşabilir

name = input ( " Ş ekli : " )


match name :
case " kare " | " dikd ö rtgen " :
print ( " D ö rt kenar ı var " )
case " daire " :
print ( " Yuvarlak " )
case " ü ç gen " :
print ( " 3 kenar ı var " )
case _ :
print ( " Bilinmeyen ş ekil " )

ASÜ - MSönmez - Python 16


ASÜ - MSönmez - Python 17
Bölüm 2

Döngü Yapıları ve Listeler

Döngüler, programlamanın en temel ve güçlü yapı taşlarından biridir. Aynı veya benzer işlemleri tekrar tekrar yap-
mamız gerektiğinde döngüler kullanılır. Döngü, belirli bir koşul sağlandığı sürece bir kod bloğunun tekrar tekrar
çalıştırılmasını sağlayan yapıdır. Programlamada temel olarak iki çeşit döngü bulunur:
- Sayı tabanlı döngüler: Belirli bir sayıda çalışan döngüler (for döngüsü)
- Koşul tabanlı döngüler: Bir koşul sağlandığı sürece çalışan döngüler (while, do-while)

2.1 Döngü - for


• for döngüsü, Python’da bir dizi (liste, demet, sözlük, string vb.) üzerinde tekrarlı işlemler yapmak için kullanılır.
Genellikle tekrar sayısı bilinen işlem blokunu çatıştırmak için kullanılır.

18
• range(son), range(ilk,son) ve range(ilk,son,adim) : Şeklinde bir aralık (range) nesnesi oluşturur.

ilk = int ( input ( " Bir say ı gir : " ) )


son = int ( input ( " Bir say ı gir : " ) )
adim = int ( input ( " Bir say ı gir : " ) )

print ( " \ nSon " )


for i in range ( son ) :
print (i , end = " - " )

print ( " \ n _
I lk - Son " )
for i in range ( ilk , son ) :
print (i , end = " - " )

print ( " \ n _
I lk - son - ad ı m " )
for i in range ( ilk , son , adim ) :
print (i , end = " - " )

• list ile kullanım

for i in [1 , " aa " ,3 ,4 , " Ankara " ,6]:


print ( i )

• İç içe döngüler de kullanılabilir.

for i in range (3) :


for j in range (2) :
print ( f " i ={ i } , j ={ j } " )

ASÜ - MSönmez - Python 19


• Döngüyü durdurmak için break veya döngünün bir kısmı olması istenmiyorsa continue kullanılabilir. Aşağıdaki
kodu break ve continue için çalıştırın

for i in range (10) :


if i == 3:
break # c o n t i n u e
print ( i )

• Örnek: Bir mağazada satılan ürünlerin fiyatlarını içeren bir liste var. Bu listedeki fiyatların: Toplamını, Ortala-
masını, En yüksek ve en düşük fiyatı hesaplayan program yazınız. En az 5 ürün olsun.

2.2 Döngü - while


• while döngüsü, belirli bir koşul True (doğru) olduğu sürece kod bloğunu tekrar tekrar çalıştırır. Koşul False
(yanlış) olduğunda döngü sonlanır.
• Başlangıçta adım sayısı bilinmiyor ise bu döngü kullanılır.

ko ş ul = Ture
while ko ş ul :
# K o ş u l True o l d u ğ u s ü r e c e ç a l ı ş a c a k kodlar
# K o ş u l True o l d u ğ u s ü r e c e ç a l ı ş a c a k kodlar
ko ş ul = False

• parola = " 1234 "


while True :
girilen = input ( " Parola girin : " )
if girilen == parola :

ASÜ - MSönmez - Python 20


print ( " Giri ş ba ş ar ı l ı ! " )
break
else :
print ( " Yanl ı ş parola , tekrar deneyin ! " )

• π değerini hesaplamak için aşağıda verilen seri kullanılır. Parantez içindeki en son elemanın mutlak değeri
tol=1e-6 olana kadar işleme devam et.

X (−1)n
π = 4 ∗ (1 − 1/3 + 1/5 − 1/7 + 1/9 · · · ) = 4 ∗
n=0
2n + 1

top , step = 0 , 0
tol =1 e -6
item = tol *10
while abs ( item ) > tol :
item =( -1) ** step / (2* step +1)
top = top + item
print ( f " ad ı m ={ step :4 d } item ={ item :4.3 g } pi ={4* top :2.6 f } " )
step = step +1

• xn =x**n işlemine dikkat edelim.


• break while döngüsü kırmak için kullanılır.

ASÜ - MSönmez - Python 21


2.3 Listeler - list
Python’da listeler, birden fazla öğeyi (item) bir arada tutmak için kullanılan sıralı ve değiştirilebilir (mutable) veri
yapılarıdır. Listeler, farklı veri türlerini (örneğin, sayılar, stringler, hatta başka listeler) içerebilir. Listeler, Python’da en
sık kullanılan veri yapılarından biridir.
• Listeler, köşeli parantez [ , ] içinde tanımlanır ve öğeler virgülle ayrılır.

# B o ş liste
bos_liste = [ ]

# Say ı lardan o l u ş a n liste


sayilar = [1 , 2 , 3 , 4 , 5]

# Farkl ı veri t ü r l e r i n d e n o l u ş a n liste


karisik_liste = [1 , " Python " , 3.14 , True ]

# I_ ç i ç e liste ( nested list )


ic_ice_liste = [[1 , 2] , [3 , 4] , [5 , 6]]

• Listelerdeki öğelere indeks (index) kullanılarak erişilir. Python’da indeksler 0’dan başlar.

meyveler = [ " elma " , " armut " , " ç ilek " , " muz " ]

# I_ l k ö ğ e
print ( meyveler [0]) # Ç ı k t ı : elma

# Son ö ğ e

ASÜ - MSönmez - Python 22


print ( meyveler [ -1]) # Ç ı k t ı : muz

# I_ k i n c i ö ğ e
print ( meyveler [1]) # Ç ı k t ı : armut

• Liste Dilimleme (Slicing): Listelerin belirli bir bölümünü almak için dilimleme (slicing) kullanılır. Dilimleme,
[start:end:step] şeklinde yapılır.
sayilar = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9]

# I_ l k 5 ö ğ e
print ( sayilar [:5]) # Ç ı k t ı : [0 , 1, 2, 3, 4]

# 2. indeksten 6. i n d e k s e k a d a r ( 6 d a h i l d e ğ i l )
print ( sayilar [2:6]) # Ç ı k t ı : [ 2 , 3 , 4 , 5 ]

# 2 ’ ş e r ad ı mla alma
print ( sayilar [::2]) # Ç ı k t ı : [0 , 2, 4, 6, 8]

# Ters ç e v i r m e
print ( sayilar [:: -1]) # Ç ı k t ı : [9 , 8, 7, 6, 5, 4, 3, 2, 1, 0]

• Listelere Öğe Eklem: Listelere yeni öğe eklemek için append(), insert() veya extend() metodları kullanılır.
append(): Listenin sonuna öğe ekler.

meyveler = [ " elma " , " armut " ]


meyveler . append ( " ç ilek " )
print ( meyveler ) # Ç ı k t ı : [ ’ e l m a ’ , ’ a r m u t ’ , ’ ç i l e k ’ ]

ASÜ - MSönmez - Python 23


insert(): Belirli bir indekse öğe ekler.

meyveler . insert (1 , " muz " )


print ( meyveler ) # Ç ı k t ı : [ ’ e l m a ’ , ’ m u z ’ , ’ a r m u t ’ , ’ ç i l e k ’ ]

extend(): Başka bir listeyi mevcut listeye ekler.

yeni_meyveler = [ " kiraz " , " ş eftali " ]


meyveler . extend ( yeni_meyveler )
print ( meyveler ) # Ç ı k t ı : [ ’ e l m a ’ , ’ m u z ’ , ’ a r m u t ’ , ’ ç i l e k ’ , ’ k i r a z ’ ,
’ ş e f t a l i ’ ]

Listeden öğe silme: Listeden öğe silmek için remove(), pop() veya del kullanılır.
remove(): Belirli bir değeri siler.

meyveler . remove ( " muz " )


print ( meyveler ) # Ç ı k t ı : [ ’ e l m a ’ , ’ a r m u t ’ , ’ ç i l e k ’ , ’ k i r a z ’ , ’ ş e f t a l i ’ ]

pop(): Belirli bir indeksteki öğeyi siler ve döndürür. İndeks belirtilmezse son öğeyi siler.

silinen = meyveler . pop (1)


print ( silinen ) # Ç ı k t ı : a r m u t
print ( meyveler ) # Ç ı k t ı : [ ’ e l m a ’ , ’ ç i l e k ’ , ’ k i r a z ’ , ’ ş e f t a l i ’ ]

del: Belirli bir indeksteki öğeyi siler.

del meyveler [0]


print ( meyveler ) # Ç ı k t ı : [ ’ ç i l e k ’ , ’ kiraz ’, ’ ş e f t a l i ’ ]

• Liste Metodları (fonksiyonları):

ASÜ - MSönmez - Python 24


– append(): Listenin sonuna öğe ekler, [Link](5)
– insert(): Belirli bir indekse öğe ekler, [Link](1, "Python")
– extend():Başka bir listeyi mevcut listeye ekler. [Link]([1, 2, 3])
– remove() :Belirli bir değeri siler. [Link]("elma")
– pop() :Belirli bir indeksteki öğeyi siler. [Link](2)
– count(): Bir öğenin listede kaç kez geçtiğini, [Link](3)
– index():Bir öğenin indeksini döndürür. [Link]("çilek")
– sort():Listeyi sıralar. [Link]()
– reverse():Listeyi ters çevirir. [Link]()
– copy():Listenin bir kopyasını oluşturur yeni_liste = [Link]()
– clear():Listenin tüm öğelerini siler. [Link]()

2.3.1 Liste Üreteçleri (List Comprehensions)


• Liste üreteçleri, listeleri kolayca oluşturmak için kullanılan kısa ve etkili bir yöntemdir.

# 1 ’ den 10 ’ a kadar say ı lar ı n karesi


kareler = [ x **2 for x in range (1 , 11) ]
print ( kareler ) # Ç ı k t ı : [ 1 , 4 , 9 , 1 6 , 2 5 , 3 6 , 4 9 , 6 4 , 8 1 , 1 0 0 ]

# Ç i f t say ı lar
cift_sayilar = [ x for x in range (10) if x % 2 == 0]
print ( cift_sayilar ) # Ç ı k t ı : [ 0 , 2 , 4 , 6 , 8 ]

ASÜ - MSönmez - Python 25


• İç İçe Listeler (Nested Lists): Listeler, başka listeleri içerebilir. Bu tür listelere iç içe listeler denir.

matris = [[1 , 2 , 3] ,
[4 , 5 , 6] ,
[7 , 8 , 9]]
# I_ ç i ç e listelere e r i ş i m
print ( matris [0][1]) # Ç ı k t ı : 2

• Listelerde Döngü Kullanımı Listeler üzerinde döngü kullanarak öğelere erişebilir veya işlemler yapabilirsiniz.

meyveler = [ " elma " , " armut " , " ç ilek " ]

for meyve in meyveler :


print ( meyve )

• Liste Kopyalama: Listeler referans türü olduğu için, doğrudan atama yapıldığında orijinal liste değişebilir. Bu
nedenle kopyalama yaparken dikkatli olunmalıdır.

liste1 = [1 , 2 , 3]
liste2 = liste1 # B u b i r k o p y a d e ğ i l , r e f e r a n s a t a m a s ı d ı r
liste2 . append (4)
print ( liste1 ) # Ç ı k t ı : [ 1 , 2 , 3 , 4 ] ( l i s t e 1 d e d e ğ i ş i r )

• Doğru Kopyalama

liste1 = [1 , 2 , 3]
liste2 = liste1 . copy () # v e y a l i s t e 2 = l i s t e 1 [ : ]
liste2 . append (4)
print ( liste1 ) # Ç ı k t ı : [ 1 , 2 , 3 ] ( l i s t e 1 d e ğ i ş m e z )

ASÜ - MSönmez - Python 26


Bölüm 3

Fonksiyonlar

Fonksiyonlar, belirli bir işi yapmak için yazılan yeniden kullanılabilir kod bloklarıdır. Örneğin, bir mühendislik prob-
lemi için sürekli aynı hesaplamayı yapmanız gerekiyorsa, bu hesaplamayı bir fonksiyon haline getirip gerektiğinde
çağırabilirsiniz.

3.1 Temel Fonksiyon Yapısı


Python’da fonksiyonlar def anahtar kelimesi ile tanımlanır.

def fonksiyon_adi ( parametre1 , parametre2 ) :


sonuc = parametre1 + parametre2
return sonuc

27
• def: Fonksiyon tanımlamak için kullanılır.
• fonksiyonadi: Fonksiyonun adıdır. Anlamlı ve açıklayıcı olmalıdır.
• parametre1, parametre2: Fonksiyona girdi olarak verilen değerlerdir.
• return: Fonksiyonun çıktısını (sonucunu) döndürür.

Örnek

Dikdörtgen alanı hesaplama.

def dikdortgen_alani ( uzunluk , genislik ) :


alan = uzunluk * genislik
return alan

alan = dikdortgen_alani (5 , 10)


print ( " Dikd ö rtgenin Alan ı : " , alan )

Parametreler ve Argümanlar
• Parametreler: Fonksiyon tanımında belirtilen değişkenlerdir.
• Argümanlar: Fonksiyon çağrılırken parametrelere atanan değerlerdir.

import math

def daire_cevresi ( yaricap ) :


cevre = 2 * math . pi * yaricap
return cevre

ASÜ - MSönmez - Python 28


cevre = daire_cevresi (3)
print ( " Dairenin Ç evresi : " , cevre )

Varsayılan Parametreler
Fonksiyon parametrelerine varsayılan değerler atayabilirsiniz. Bu, fonksiyon çağrılırken o parametrenin belirtilmesini
zorunlu olmaktan çıkarır. Örneğin, bir kütle-enerji denklemi (E=mc²) için varsayılan kütle değeri atayalım:

def enerji_hesapla ( kutle =1 , isik_hizi =3 e8 ) : # Varsay ı lan k ü t l e : 1 kg


enerji = kutle * ( isik_hizi ** 2)
return enerji

# Fonksiyonu kullanma
print ( " Enerji (1 kg ) : " , enerji_hesapla () ) # V a r s a y ı l a n k ü t l e k u l l a n ı l ı r
print ( " Enerji (5 kg ) : " , enerji_hesapla (5) ) # K ü t l e d e ğ e r i b e l i r t i l i r

Birden Fazla Değer Döndürme


Fonksiyonlar, birden fazla değeri bir demet (tuple) olarak döndürebilir. Bu, özellikle mühendislik hesaplamalarında
kullanışlıdır. Örneğin, bir kuvvet vektörünün bileşenlerini hesaplayalım:

import math
def ku vv et _b il ese nl er i ( kuvvet , aci ) :
Fx = kuvvet * math . cos ( math . radians ( aci ) )
Fy = kuvvet * math . sin ( math . radians ( aci ) )
return Fx , Fy

ASÜ - MSönmez - Python 29


# Fonksiyonu kullanma
Fx , Fy = ku vv et _b il es en le ri (100 , 45)
print ( " Fx : " , Fx ) # Ç ı k t ı : 7 0 . 7 1 0 6 7 8 1 1 8 6 5 4 7 6
print ( " Fy : " , Fy ) # Ç ı k t ı : 7 0 . 7 1 0 6 7 8 1 1 8 6 5 4 7 4

Örnek
İki vektörün bileşkesini hesaplayan program

import math
def ku vv et _b il ese nl er i (F , aci ) :
Fx = F * math . cos ( math . radians ( aci ) )
Fy = F * math . sin ( math . radians ( aci ) )
return Fx , Fy

def topla ( F1 , F2 ) :
Fx1 , Fy1 = kuv ve t_ bi le se nl er i ( F1 [0] , F1 [1])
Fx2 , Fy2 = kuv ve t_ bi le se nl er i ( F2 [0] , F2 [1])
Rx = Fx1 + Fx2
Ry = Fy1 + Fy2
R = math . sqrt ( Rx **2+ Ry **2)
return R

R = topla ([40 ,0] ,[30 ,90])


print ( f " Bile ş ke R = { R :3.2 f } " )

ASÜ - MSönmez - Python 30


Lambda Fonksiyonları
Lambda fonksiyonları, tek satırda tanımlanabilen basit fonksiyonlardır. Özellikle matematiksel işlemlerde kullanışlıdır.
Örneğin, bir kuvvet fonksiyonu (F = m * a) için lambda kullanalım:

kuvvet = lambda m , a : m * a
print ( " Kuvvet : " , kuvvet (10 , 5) ) # Ç ı k t ı : 50

Fonksiyonlarda Docstring

Fonksiyonların ne yaptığını açıklamak için docstring kullanılır. Bu, özellikle ekip çalışmalarında ve kodunuzu başkalarıyla
paylaşırken önemlidir.

def gerilim_hesapla ( akim , direnc ) :


"""
Ohm Kanunu ’ na g ö re gerilimi hesaplar .
Parametreler :
D ö nd ü r ü r :
"""

print ( gerilim_hesapla . __doc__ )

Özyinelemeli Fonksiyonlar (Recursion)


Özyinelemeli fonksiyonlar, kendilerini çağıran fonksiyonlardır. Özellikle matematiksel problemlerde (örneğin, faktöri-
yel hesaplama) kullanılır. Örneğin, Fibonacci serisi hesaplayalım:

ASÜ - MSönmez - Python 31


def fibonacci ( n ) :
if n <= 1:
return n
else :
return fibonacci (n -1) + fibonacci (n -2)

# Fibonacci serisinin ilk 10 terimi

for i in range (10) :


print ( fibonacci ( i ) )

Fonksiyonlarda *args ve **kwargs


• *args: Değişken sayıda pozisyonel argüman alır.
• **kwargs: Değişken sayıda anahtar kelime argümanı alır.
• Örneğin, bir ortalama hesaplama fonksiyonu yazalım. Ancak kaç tane sayı girildiği belli değil ise:

def ortalama_hesapla (* args ) :


return sum ( args ) / len ( args )

print ( " Ortalama : " , ortalama_hesapla (10 , 20 , 30) )


# Ç ı k t ı : 20.0

print ( " Ortalama : " , ortalama_hesapla (10 , 20 , 30 , 40) )


# Ç ı k t ı : 25.0

def ornek_fonksiyon (* args , ** kwargs ) :

ASÜ - MSönmez - Python 32


print ( " Pozisyonel Arg ü manlar (* args ) : " , args )
toplam = sum ( args )
print ( " Toplam : " , toplam )
print ( " Arg ü manlar ı (** kwargs ) : " , kwargs )

for anahtar , deger in kwargs . items () :


print ( f " { anahtar }: { deger } " )

# Fonksiyonu ç a ğ ı r m a
ornek_fonksiyon (1 , 2 , 3 , 4 , isim = " Ali " , yas =25 , meslek = " M ü h . " )
ornek_fonksiyon (1 , 22 , 3 , 4 , isim = " Can " , meslek = " T ı p " )

# P o z i s y o n e l A r g ü m a n l a r ( * a r g s ) : ( 1 , 2 , 3 , 4 )
# Toplam : 10
# A r g ü m a n l a r ı ( * * k w a r g s ) : { ’ i s i m ’ : ’ A l i ’ , ’ y a s ’ : 25 , ’ m e s l e k ’: ’ M ü h . ’ }
# isim : Ali
# yas : 25
# meslek : M ü h .

# P o z i s y o n e l A r g ü m a n l a r ( * a r g s ) : ( 1 , 2 2 , 3 , 4 )
# Toplam : 30
# A r g ü m a n l a r ı ( * * k w a r g s ) : { ’ i s i m ’ : ’ C a n ’ , ’ m e s l e k ’ : ’ T ı p ’}
# isim : Can
# meslek : Tıp

ASÜ - MSönmez - Python 33


Bölüm 4

Dosya İşlemleri

Python’da dosyaya okuma ve yazma işlemleri, open() fonksiyonu kullanılarak gerçekleştirilir. Dosya işlemleri için
farklı modlar (”r”, ”w”, ”a”, ”r+”, vb.) kullanılır. İşte Python’da dosyaya okuma ve yazma işlemlerinin nasıl yapılacağına
dair detaylı bir rehber:

Dosya Açma Modları


• ”r”: Read (Okuma). Dosyayı okumak için açar. Dosya yoksa hata verir.
• ”w”: Write (Yazma). Dosyayı yazmak için açar. Dosya varsa içeriği siler, yoksa oluşturur.
• ”a”: Append (Ekleme). Dosyanın sonuna veri eklemek için açar. Dosya yoksa oluşturur.

34
• ”r+”: Read + Write (Okuma ve Yazma). Dosyayı hem okumak hem de yazmak için açar.
• ”w+”: Write + Read (Yazma ve Okuma). Dosyayı yazmak ve okumak için açar. Dosya varsa içeriği siler.
• ”a+”: Append + Read (Ekleme ve Okuma). Dosyanın sonuna veri eklemek ve okumak için açar.

Dosyaya Yazma İşlemleri


1. Dosya Oluşturma ve Yazma (”w” Modu) Dosya yoksa oluşturur, varsa içeriğini siler ve yeniden yazar.

with open ( " dosya . txt " , " w " , encoding = " utf -8 " ) as dosya :
dosya . write ( " Merhaba , Python !\ n " )
dosya . write ( " Bu bir dosya yazma ö rne ğ idir .\ n " )

• ”w” modu kullanıldığı için dosya varsa içeriği silinir.


• write() metodu ile dosyaya veri yazılır.
2. Dosyaya Ekleme Yapma (”a” Modu) Dosyanın sonuna veri ekler. Dosya yoksa oluşturur.

with open ( " dosya . txt " , " a " , encoding = " utf -8 " ) as dosya :
dosya . write ( " Bu sat ı r dosyaya eklendi .\ n " )

• ”a” modu kullanıldığı için dosyanın sonuna yeni veri eklenir.


3. Dosyaya Birden Fazla Satır Yazma (writelines()) Birden fazla satırı bir listeden dosyaya yazmak için writelines()
metodu kullanılır.

satirlar = [ " Birinci sat ı r \ n " , " _


I kinci sat ı r \ n " , " Ü ç ü nc ü sat ı r \ n " ]

ASÜ - MSönmez - Python 35


with open ( " dosya . txt " , " w " , encoding = " utf -8 " ) as dosya :
dosya . writelines ( satirlar )

Dosyadan Okuma İşlemleri


1. Dosyanın Tamamını Okuma (read()) dosyanın tamamını bir string olarak okur.

with open ( " dosya . txt " , " r " , encoding = " utf -8 " ) as dosya :
icerik = dosya . read ()
print ( icerik )

2. Satır Satır Okuma (readline()): Dosyayı satır satır okur.

with open ( " dosya . txt " , " r " , encoding = " utf -8 " ) as dosya :
satir = dosya . readline ()
while satir :
print ( satir , end = " " )
satir = dosya . readline ()

3. Tüm Satırları Listeye Okuma (readlines()): Dosyanın tüm satırlarını bir liste olarak okur.

with open ( " dosya . txt " , " r " , encoding = " utf -8 " ) as dosya :
satirlar = dosya . readlines ()
for satir in satirlar :
print ( satir , end = " " )

ASÜ - MSönmez - Python 36


4. Dosyayı İteratif Olarak Okuma: Dosyayı satır satır okumanın en verimli yolu, dosya nesnesini bir iteratör olarak
kullanmaktır.

with open ( " dosya . txt " , " r " , encoding = " utf -8 " ) as dosya :
for satir in dosya :
print ( satir , end = " " )

Hem Okuma Hem Yazma İşlemleri (”r+”, ”w+”, ”a+”)


1. ”r+” Modu: Dosyayı hem okumak hem de yazmak için açar. Dosyanın başında işlem yapar.

with open ( " dosya . txt " , " r + " , encoding = " utf -8 " ) as dosya :
icerik = dosya . read ()
print ( " Mevcut i ç erik : " , icerik )
dosya . write ( " Yeni sat ı r eklendi .\ n " )

2. ”w+” Modu: Dosyayı hem yazmak hem de okumak için açar. Dosya varsa içeriği siler.

with open ( " dosya . txt " , " w + " , encoding = " utf -8 " ) as dosya :
dosya . write ( " Bu yeni bir dosya .\ n " )
dosya . seek (0) # D o s y a n ı n b a ş ı n a d ö n
icerik = dosya . read ()
print ( " Yeni i ç erik : " , icerik )

3. ”a+” Modu: Dosyayı hem ekleme yapmak hem de okumak için açar. Dosyanın sonunda işlem yapar.

ASÜ - MSönmez - Python 37


with open ( " dosya . txt " , " a + " , encoding = " utf -8 " ) as dosya :
dosya . write ( " Bu sat ı r sona eklendi .\ n " )
dosya . seek (0) # D o s y a n ı n b a ş ı n a d ö n
icerik = dosya . read ()
print ( " G ü ncel i ç erik : " , icerik )

4. Dosya Konumunu Değiştirme (seek()) Dosyada okuma/yazma konumunu değiştirmek için seek() metodu
kullanılır.

with open ( " dosya . txt " , " r + " , encoding = " utf -8 " ) as dosya :
dosya . seek (10) # 1 0 . k a r a k t e r e g i t
veri = dosya . read (5) # 5 k a r a k t e r o k u
print ( " Okunan veri : " , veri )

Örnek:
Aşağıdaki örnek, bir dosyaya veri yazıp daha sonra bu veriyi okur.

# Dosyaya veri yazma


with open ( " veri . txt " , " w " , encoding = " utf -8 " ) as dosya :
dosya . write ( " Python dosya i ş lemleri ö ğ reniyorum .\ n " )
dosya . write ( " Bu dosya ö rnektir .\ n " )

# Dosyadan veri okuma


with open ( " veri . txt " , " r " , encoding = " utf -8 " ) as dosya :
icerik = dosya . read ()

ASÜ - MSönmez - Python 38


print ( " Dosya i ç eri ğ i : " )
print ( icerik )

ASÜ - MSönmez - Python 39


Bölüm 5

Sözlükler - Dict

Sözlükler, gerçek hayattaki sözlükler gibi davranan bir veri tipi olarak bilinmektedir. Sözlüğün içindeki her bir eleman
indeks olarak değil, anahtar (key) ve değer (value) olarak tutulur. Anahtar değer çiftleri virgülle ayrılarak bir öğeyi
oluştururlar. Değer kısmı bütün veri türünü içerebilir fakat anahtar kısmı sadece string ve int tipinde olabilir.

Ç elik ={ " S235 " : [235 ,360] ,


" S275 " : [275 ,410] ,
" S335 " : [335 ,460]}
for a in Ç elik :
print ( type ( a ) , a , end = " " )
print ( Ç elik [ a ])

• İki noktayı ve virgülü nereye koyduğumuza,

40
• Ögelerimizi tanımlarken ayraç parantez () yerine Küme Parantezi {} kullandığınıza,
• Anahtar değeri tanımlarken tırnak işareti " " kullandığınıza dikkat ediniz.
• Bir dict değişkeninin anahtar isimlerine ve bunlara karşılık gelen değerleri keys and values ile ulaşılır.

Ç elik ={ " S235 " : [235 ,360] ,


" S275 " : [275 ,410] ,
" S335 " : [335 ,460]}

print ( type ( Ç elik . keys () ) )


print ( Ç elik . keys () )
a = list ( Ç elik . keys () )
print ( a )

print ( type ( Ç elik . values () ) )


print ( Ç elik . values () )
b = list ( Ç elik . values () )
print ( b )

• Sözlüklerde eleman işlemleri


– Ç[Link]("S235") : bu elemanı siler.
– Ç[Link]() : son öğeyi kaldırmak için kullanılır.
– Ç[Link]() : sözlüğün içini temizler
– Ç[Link]() : sözlüğün kopyalar
– Çelik["S510"]=[510,700]: Yeni bir eleman ekleme

ASÜ - MSönmez - Python 41


• Dict içinde list ve list içinde Dict değişkenler kullanılabilir.

Alist =[{ " name " : " IPE200 " , " Ix " : 500 , " Iy " :220} ,
{ " name " : " IPE240 " , " Ix " : 600 , " Iy " :230} ,
{ " name " : " IPE300 " , " Ix " : 700 , " Iy " :240} ]

for a in Alist :
print ( a [ " name " ] , end = " - " )
print ( " Ix = " ,a [ " Ix " ])

Örnek:

# Binan ın kat bilgilerini tutan bir dictionary


building = {
" kat1 " : { " y ü kseklik " : 3.5 , " alan " : 200 , " malzeme " : " beton " } ,
" kat2 " : { " y ü kseklik " : 3.5 , " alan " : 250 , " malzeme " : " beton " } ,
" kat3 " : { " y ü kseklik " : 3.2 , " alan " : 150 , " malzeme " : " ç elik " } ,
" kat4 " : { " y ü kseklik " : 3.0 , " alan " : 300 , " malzeme " : " ç elik " }}

# Bir kat ı n bilgilerine e r i ş i m


kat1_bilgisi = building [ " kat1 " ]

print ( f " Kat 1 Bilgileri : Y ü kseklik : { kat1_bilgisi [ ’ y ü kseklik ’]}m , "


print ( f " Alan : { kat1_bilgisi [ ’ alan ’]} m2 , Malzeme : { kat1_bilgisi [ ’ malzeme ’]} " )

# T ü m katlar ın y ü k s e k l i k bilgilerini yazd ı rma


for kat , bilgiler in building . items () :

ASÜ - MSönmez - Python 42


print ( f " { kat } Y ü kseklik : { bilgiler [ ’ y ü kseklik ’]} m " )

Örnek:

# Katlar ın malzeme bilgileri ve maliyetleri


bu il di ng _m at er ia ls =
{ " kat1 " : { " beton " : 100 , " ç elik " : 50} , # Beton 100 ton , Ç e l i k 50 ton
" kat2 " : { " beton " : 120 , " ç elik " : 60} ,
" kat3 " : { " beton " : 80 , " ç elik " : 70} ,
" kat4 " : { " beton " : 90 , " ç elik " : 80}}

# Malzeme birim fiyatlar ı ( ton b a ş ı n a )


material_prices = {
" beton " : 150 , # 1 t o n b e t o n u n f i y a t ı 1 5 0 T L
" ç elik " : 200 # 1 t o n ç e l i ğ i n f i y a t ı 2 0 0 T L }

# Her kat i ç i n malzeme maliyetlerini hesaplayal ım


for kat , materials in bu il di ng _m at eri al s . items () :
total_cost = 0
print ( f " { kat } malzeme maliyetleri : " )
for material , amount in materials . items () :
cost = material_pr [ material ] * amount
total_cost += cost
print ( f " { material }: { amount } ton x { material_pr [ material ]} TL / ton = { cost }
TL " )
print ( f " Toplam maliyet : { total_cost } TL \ n " )

ASÜ - MSönmez - Python 43


Bölüm 6

Python Sınıfları ve Nesneleri


(Classes and Objects)

Python’da temel veri yapıları, döngüler ve fonksiyonları öğrendikten sonra, gerçek mühendislik problemlerini daha
düzenli ve okunabilir bir biçimde nasıl modelleyebiliriz?
Bu noktada Nesne Yönelimli Programlama (NYP / Object-Oriented Programming) devreye girer.

44
6.1 Nesne Yönelimli Programlama Neden Gereklidir?
NYP, gerçek dünyadaki varlıkları yazılım içinde temsil etmeyi amaçlar. İnşaat mühendisliğinde bu varlıklar; noktalar,
kirişler, kesitler, zemin tabakaları ve yüklerdir.
NYP’nin temel avantajları:
• Modülerlik: Kod küçük ve anlamlı parçalara ayrılır.
• Yeniden Kullanılabilirlik: Aynı sınıf farklı problemlerde tekrar kullanılabilir.
• Bakım Kolaylığı: Büyük projelerde hata ayıklamak kolaylaşır.
• Gerçek Dünya Modellemesi: Mühendislik sistemleri sezgisel biçimde temsil edilir.

6.2 Temel Kavram: Nokta (Point) Sınıfı


Tüm mühendislik sistemlerinin temelinde geometri vardır. Bu nedenle ilk olarak iki boyutlu bir Nokta (Point) sınıfı
tanımlayalım.

Basit Bir Sınıf Tanımı

class Point :
pass

P1 = Point ()
P2 = Point ()

print ( P1 )

ASÜ - MSönmez - Python 45


print ( type ( P1 ) )
---
< __main__ . Point object at 0 x00000156A143C110 >
< class ’ __main__ . Point ’ >

Bir sınıf sadece bir şablondur. Asıl anlam, o sınıftan üretilen nesneler ile ortaya çıkar.

Yapıcı Metot ( init ) ve Özellikler

Her noktanın bir x ve y koordinatı vardır.

class Point :
def __init__ ( self , x , y ) :
self . x = x
self . y = y

P1 = Point (3 , 4)
P2 = Point (0 , 0)
print ( f " P1 in x = { P1 . x } , y ={ P1 . y } " )
print ( f " P2 in x = { P2 . x } , y ={ P2 . y } " )
---
P1 in x = 3 , y =4
P2 in x = 0 , y =0
Listing 6.1: Koordinatlara sahip Point sınıfı

Yorum: self, nesnenin kendisini temsil eder. Her nokta kendi koordinat bilgisine sahiptir.

ASÜ - MSönmez - Python 46


Point Sınıfı ile Metotlar
import math
class Point :
def __init__ ( self , x , y ) :
self . x = x
self . y = y
def distance_to ( self , other ) :
dx = self . x - other . x
dy = self . y - other . y
return math . sqrt ( dx ** 2 + dy ** 2)
def PointPrint ( self ) :
print ( f " ({ self . x } ,{ self . y }) " )

P1 = Point (3 , 4)
P2 = Point (0 , 0)
P1 . PointPrint ()
P2 . PointPrint ()
print ( f " Mesafe = { P1 . distance_to ( P2 ) :.2 f } " )

Bu yapı, sadece noktalar için değil bir kolonu, kirişi ve benzeri elemanları tanımlamak için de kullanılabilir.

6.3 Point Sınıfı ile Kiriş Modellemesi


Bir kiriş, aslında iki nokta arasında tanımlanan bir elemandır.

ASÜ - MSönmez - Python 47


6.3.1 Kiriş Sınıfı (Point Kullanarak)
import math
class Point :
def __init__ ( self , x , y ) :
self . x = x
self . y = y
def distance_to ( self , other ) :
dx = self . x - other . x
dy = self . y - other . y
return math . sqrt ( dx ** 2 + dy ** 2)
def PointPrint ( self ) :
print ( f " ({ self . x } ,{ self . y }) " )

class Beam :
def __init__ ( self , start_point , end_point , material ) :
self . start = start_point
self . end = end_point
self . material = material
def length ( self ) :
return self . start . distance_to ( self . end )

P1 = Point (0 , 0)
P2 = Point (6 , 5)
K1 = Beam ( P1 , P2 , " C30 Beton " )
print ( f " Kiri ş uzunlu ğ u = { K1 . length () :.2 f } m " )
Listing 6.2: Point tabanlı Kiriş sınıfı

ASÜ - MSönmez - Python 48


Önemli Nokta: Burada geometri tamamen Point sınıfına bırakılmıştır. Bu, iyi nesne tasarımının temel prensibidir.

Point ile Kesit Merkezleri

Kesitlerin ağırlık merkezi genellikle bir nokta ile ifade edilir.

class Section :
def __init__ ( self , width , height ) :
self . width = width
self . height = height
self . centroid = Point ( width /2 , height /2)

S1 = Section (0.3 , 0.6)


print ( f " A ğ ı rl ı k merkezi : ({ S1 . centroid . x :.2 f } , { S1 . centroid . y :.2 f }) " )
Listing 6.3: Kesit ağırlık merkezi

6.4 Polimorfizm (Çok Biçimlilik)


Polimorfizm, aynı isimli bir metodun (BilgiGoster(), Alan(), Uzunluk() gibi) farklı sınıflarda farklı davranış
gösterebilmesidir.
Başka bir ifadeyle:
“Aynı komut (metot çağrısı), nesnenin tipine göre farklı sonuç üretir.”

ASÜ - MSönmez - Python 49


6.4.1 Neden Önemlidir?
Polimorfizm sayesinde:
• Farklı tür nesneleri tek bir listede tutabiliriz.
• Hepsine aynı metot adıyla işlem uygulayabiliriz.
• Kod daha genel, daha esnek ve genişletilebilir olur.

6.4.2 Point Sınıfı Üzerinden Polimorfizm Mantığı


Point sınıfını geometri için temel aldığımızı düşünelim. Bir noktayı;
• Kirişin düğümü (node),
• Kesitin ağırlık merkezi,
• Zemin derinliği,
• Ölçüm/yer değiştirme noktası
olarak kullanabiliriz.
Bu noktaların hepsi aynı Point sınıfı olsa bile, noktayı kullanan sınıfın davranışı değişir.

6.4.3 Örnek: Aynı Metot Adı, Farklı Eleman


Aşağıda iki farklı yapı elemanı tanımlanmıştır:
• Beam (Kiriş): İki nokta arasındaki uzunluğu verir.
• Column (Kolon): Yine iki nokta arasındaki uzunluğu verir, ancak bilgi yazdırması farklıdır.

ASÜ - MSönmez - Python 50


import math

class Point :
def __init__ ( self , x , y ) :
self . x = x
self . y = y

def distance_to ( self , other ) :


dx = self . x - other . x
dy = self . y - other . y
return math . sqrt ( dx **2 + dy **2)

class Struc turalE lement :


def __init__ ( self , start , end ) :
self . start = start
self . end = end

def length ( self ) :


return self . start . distance_to ( self . end )

def info ( self ) :


# Bu metot , alt siniflarda farkli calisacak
return " Genel yapisal eleman "

class Beam ( Struc turalE lement ) :


def info ( self ) :
return f " Kiris | L = { self . length () :.2 f } m "

ASÜ - MSönmez - Python 51


class Column ( Struc turalE lement ) :
def info ( self ) :
return f " Kolon | H = { self . length () :.2 f } m "

P1 = Point (0 , 0)
P2 = Point (6 , 0)
P3 = Point (0 , 0)
P4 = Point (0 , 3)

E1 = Beam ( P1 , P2 )
E2 = Column ( P3 , P4 )

print ( E1 . info () )
print ( E2 . info () )
Listing 6.4: Point ile tanımlanan elemanlarda polimorfizm

Çıktı mantığı: info() metodu her iki sınıfta da aynı isimle çağrılır, ama Beam ve Column sınıflarında farklı içerik
üretir.

6.4.4 Asıl Polimorfizm: Tek Döngü, Farklı Davranış


Polimorfizmin en güçlü tarafı şudur: Farklı elemanları aynı listede tutar, aynı metodu çağırırız.

Elemanlar = [
Beam ( Point (0 , 0) , Point (5 , 0) ) ,
Column ( Point (0 , 0) , Point (0 , 3) ) ,
Beam ( Point (0 , 0) , Point (8 , 0) )
]

ASÜ - MSönmez - Python 52


for e in Elemanlar :
print ( e . info () )
Listing 6.5: Tek listede farklı elemanlar: polimorfizm

Açıklama: Döngü içinde her seferinde [Link]() çağrılır. Fakat nesnenin tipi Beam ise kiriş gibi, Column ise kolon
gibi davranır.

6.4.5 İnşaat Mühendisliği Yorumu


Bu yaklaşım, daha büyük sistemlerde çok işimize yarar:
• Bir taşıyıcı sistemde kirişler, kolonlar, çaprazlar aynı “eleman listesi” içinde tutulabilir.
• Hepsinden “info()” veya “kapasite()” gibi ortak metotlar istenebilir.
• Yeni bir eleman türü eklediğinizde (ör. Brace) mevcut döngüleri değiştirmezsiniz.

6.4.6 Kısa Özet


• Kalıtım ortak özellikleri miras almayı sağlar.
• Polimorfizm aynı metodun farklı sınıflarda farklı çalışmasıdır.
• Mühendislik yazılımlarında polimorfizm, esneklik ve ölçeklenebilirlik sağlar.

ASÜ - MSönmez - Python 53


Bölüm 7

Modüler Programlama

• Modülerin bir diğer anlamı da birbiriyle uyumlu olan ve önceden hazırlanmış parçalardır. Bu parçalar bir araya
gelerek uyumlu bir şekilde bir bütünü oluşturmaktadır. Python’da aslında her bir dosya modül dür. Modüler
içinde fonksiyonları sınıfları ve objeleri bulundurur.
• Programın önceden yazılmış parçaları, bütüne istenildiği zaman dâhil edilerek çalıştırabilir. Böylelikle prog-
ramcının çalıştığı ortam sadece kendi işine yaradığı modülleri kullanacağından gereksiz yere bellek tüketimi ol-
mayacaktır. Python birçok modül içerdiği gibi, kullanıcı kendisi de modül yazabilir. Python modülleri kütüphane
olarak da adlandırılır.

Örnek
• [Link] de

54
def cevre (x , y ) :
return 2*( x + y )

• [Link] de

def alan (x , y ) :
return ( x * y )

• [Link] olsun. Tüm dosyalar aynı klasörde olacak

import dosya1 , dosya2

x = float ( input ( " x : " ) )


y = float ( input ( " y : " ) )
Cevre = dosya1 . cevre (x , y )
Alan = dosya2 . alan (x , y )
print ( Cevre , Alan )

ASÜ - MSönmez - Python 55


Bölüm 8

Kütüphaneler

Özel bir problem çözerken her bir program parçası kullanıcı tarafından
yazılması yerine hazır kodları kullanmak için geliştirilmiştir.
Python kütüphaneleri iki başlığa ayrılabilir: Python ile standart olarak ge-
len kütüphaneler ve daha sonra kullanıcı tarafında yüklene kütüphaneler.
Bu bölümde Python ile standart olarak gelen kütüphaneler en
popüler olanları verilecektir. Tüm listeye [Link]
library/[Link] adresinden ulaşılabilirsiniz.

random()

56
import random

x =
random . choice ([ " sinek " ," ma ç a " ," karo " ," kupa " ])
y = random . choice ( range (1 ,11) )
print ( f " Se ç ti ğ iniz kag ı t { x } { y } " )

Takma ad ile çağrılması

import random as rd
x = rd . choice ([ " sinek " ," ma ç a " ," karo " ," kupa " ])
y = rd . randint (1 ,10)
print ( f " Se ç ti ğ iniz kag ı t { x } { y } " )

statistics
import statistics as st
x =[2 , -4 , 5 , 6 , 54]
print ( f " Ortalama = { st . mean ( x ) } " )
print ( f " Orta de ğ er = { st . median ( x ) } " )
print ( f " standart sapma = { st . stdev ( x ) :4.4 f } " )

math
import math
print ( dir ( math ) )
print ( math . pi )

ASÜ - MSönmez - Python 57


print ( math . pow (2 ,3) )
print ( math . cos ( math . pi ) )

Time
import time
print ( time . gmtime ( time . time () ) )
print ( time . localtime () )
print ( time . ctime () )
print ( time . strftime ( " % d /% m /% Y " ) )

ASÜ - MSönmez - Python 58


Bölüm 9

Numpy

NumPy (Numerical Python), Python’da bilimsel hesaplamalar ve veri


analizi için kullanılan güçlü bir kütüphanedir. Özellikle büyük boyutlu di-
ziler (arrays) ve matrisler üzerinde hızlı ve etkili işlemler yapmayı sağlar.
NumPy, veri bilimi, makine öğrenmesi, istatistik ve mühendislik gibi alan-
larda yaygın olarak kullanılır. İşte NumPy ile ilgili temel bilgiler ve örnek-
ler:
1. NumPy Kurulumu: NumPy, Python’un standart kütüphanesinde yer
almaz. Kurulum için pip kullanabilirsiniz: pip install numpy
2. NumPy Dizileri (Arrays): NumPy’nin temel veri yapısı ndarray (N-
dimensional array) olarak adlandırılır. Bu yapı, homojen (aynı türde)

59
verileri saklar.

import numpy as np

# Liste kullanarak NumPy dizisi o l u ş t u r m a


dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( dizi ) # Ç ı k t ı : [ 1 2 3 4 5 ]
print ( type ( dizi ) ) # Ç ı k t ı : < c l a s s ’ n u m p y . n d a r r a y ’ >

3. Çok Boyutlu Diziler: NumPy, 2D (matris) veya daha yüksek boyutlu


diziler oluşturmayı destekler.

import numpy as np
matris = np . array ([[1 , 2 , 3] , [4 , 5 , 6]])
print ( matris )

4. Dizi Özellikleri
• shape: Dizinin boyutlarını verir.
• dtype: Dizinin veri tipini verir.
• size: Dizideki toplam eleman sayısını verir.

import numpy as np
dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( dizi . shape ) # Ç ı k t ı : ( 5 , ) ( 1 b o y u t l u , 5 e l e m a n )
print ( dizi . dtype ) # Ç ı k t ı : i n t 6 4 ( v a r s a y ı l a n v e r i t i p i )

ASÜ - MSönmez - Python 60


print ( dizi . size ) # Ç ı k t ı : 5

5. NumPy, özel diziler oluşturmak için çeşitli fonksiyonlar sunar:


• [Link](): Tüm elemanları 0 olan dizi.
• [Link](): Tüm elemanları 1 olan dizi.
• [Link](): Belirli bir aralıkta dizi.
• [Link](): Belirli bir aralıkta eşit aralıklı sayılar.
• [Link](): Birim matris.

import numpy as np
print ( np . zeros ((3 , 3) ) ) # 3 x 3 ’ l ü k s ı f ı r m a t r i s i
print ( np . ones ((2 , 4) ) ) # 2 x 4 ’ l ü k b i r l e r m a t r i s i
print ( np . arange (0 , 10 , 2) ) ) # 0 ’ d a n 1 0 ’ a 2 ’ ş e r a r t a n d i z i
print ( np . linspace (0 , 1 , 5) ) ) # 0 i l e 1 a r a s ı n d a 5 e ş i t a r a l ı k l ı s a y ı
print ( np . eye (3) ) ) # 3 x 3 ’ l ü k b i r i m m a t r i s

6. Dizi İşlemleri: NumPy dizileri üzerinde matematiksel işlemler ko-


layca yapılabilir.

import numpy as np
a = np . array ([1 , 2 , 3])
b = np . array ([4 , 5 , 6])
# Toplama
print ( a + b ) # Ç ı k t ı : [5 7 9]
# Ç a r p m a

ASÜ - MSönmez - Python 61


print ( a * b ) # Ç ı k t ı : [ 4 1 0 1 8 ]
# I_ ç ç a r p ı m
( dot product )
print ( np . dot (a , b ) ) # Ç ı k t ı : 3 2

7. Broadcasting: NumPy, farklı boyutlardaki diziler üzerinde işlem yap-


mayı sağlayan bir özellik sunar.

import numpy as np
a = np . array ([1 , 2 , 3])
b = 2 # S k a l e r d e ğ e r
print ( a + b ) # Ç ı k t ı : [ 3 4 5 ]

8. Dizi Dilimleme (Slicing): NumPy dizileri, Python listeleri gibi dilim-


lenebilir.

import numpy as np
dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( dizi [1:4]) # Ç ı k t ı : [ 2 3 4 ]
matris = np . array ([[1 , 2 , 3] , [4 , 5 , 6] , [7 , 8 , 9]])
print ( matris [0:2 , 1:3])

9. Koşullu İşlemler: NumPy dizileri üzerinde koşullu işlemler yapılabilir.

import numpy as np
dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( dizi [ dizi > 3]) # Ç ı k t ı : [ 4 5 ]

10. Matematiksel Fonksiyonlar: NumPy, birçok matematiksel fonksiyon

ASÜ - MSönmez - Python 62


sunar:
• [Link]() : Toplam.
• [Link](): Ortalama.
• [Link]() : [Link](): Minimum ve maksimum değerler.
• [Link]() : Standart sapma.

import numpy as np
dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( np . sum ( dizi ) ) # Ç ı k t ı : 1 5
print ( np . mean ( dizi ) ) # Ç ı k t ı : 3 . 0
print ( np . max ( dizi ) ) # Ç ı k t ı : 5

11. Dizileri Yeniden Şekillendirme reshape() metodu ile bir dizinin bo-
yutları değiştirilebilir.

import numpy as np
dizi = np . arange (1 , 10)
print ( dizi . reshape (3 , 3) ) # Ç ı k t ı :
# [[1 2 3]
# [4 5 6]
# [7 8 9]]

12. Dizileri Birleştirme


• [Link](): Dizileri birleştirir.

ASÜ - MSönmez - Python 63


• [Link](): Dikey olarak birleştirir.
• [Link](): Yatay olarak birleştirir.

import numpy as np
a = np . array ([1 , 2 , 3])
b = np . array ([4 , 5 , 6])
print ( np . concatenate (( a , b ) ) ) # Ç ı k t ı : [ 1 2 3 4 5 6 ]
c = np . array ([[1 , 2] , [3 , 4]])
d = np . array ([[5 , 6] , [7 , 8]])
print ( np . vstack (( c , d ) ) ) # D i k e y b i r l e ş t i r m e
print ( np . hstack (( c , d ) ) ) # Y a t a y b i r l e ş t i r m e

13. NumPy, Python’da bilimsel hesaplamalar için vazgeçilmez bir kütüpha-


nedir.
• X=[Link](end)
• X=[Link](end)
• X=[Link](start,end)
• X=[Link](start,end,step)
• sum=[Link](4)+5*[Link](4)
• [Link](x)
• [Link](x)
• [Link](x)

ASÜ - MSönmez - Python 64


• [Link](x)
• [Link](x)

9.1 [Link] Kütüphanesi


NumPy kütüphanesinin doğrusal cebir (linear algebra) işlemleri için sağladığı bir alt kütüphanedir. Bu kütüphane,
matris ve vektör işlemleri, determinant hesaplama, özdeğer ve özvektör bulma, matris çarpması, ters matris bulma
gibi birçok temel doğrusal cebir işlemini gerçekleştirmek için kullanılır.

Temel Fonksiyonlar
1. Matris Çarpımı, dot(A,B): İki matrisin veya vektörün çarpımını hesaplar.

import numpy as np

A = np . array ([[1 , 2 , 4] , [3 , 4 , 5]])


B = np . array ([[5 , 6] , [7 , 8] , [0 , 3]])

result = np . dot (B , A )
print ( result )
result = np . dot (A , B )
print ( result )

Sonuçları kontrol ediniz.


2. Matris Determinantı , det(A): Bir kare matrisin determinantını hesaplar.

import numpy as np

ASÜ - MSönmez - Python 65


A = np . array ([[1 , 2] , [3 , 4]])
det = np . linalg . det ( A )
print ( det )

3. Matris Tersi, inv(): Bir kare matrisin tersini hesaplar.

import numpy as np
A = np . array ([[1 , 2] , [3 , 4]])
det = np . linalg . inv ( A )
print ( det )

4. Özdeğer ve Özvektörler, eig(A): Bir kare matrisin özdeğerlerini ve özvektörlerini hesaplar.

import numpy as np
A = np . array ([[1 , 2] , [2 , 1]])
eigenvalues , eigenvectors = np . linalg . eig ( A )

print ( " Ö zde ğ erler : " , eigenvalues )


print ( " Ö zvekt ö rler : " , eigenvectors )

5. Lineer Denklem Sistemlerini Çözme, solve()

import numpy as np
A = np . array ([[3 , 2] , [1 , 4]])
b = np . array ([1 , 2])
x = np . linalg . solve (A , b )
print ( x )

6. Norm Hesaplama, norm()

ASÜ - MSönmez - Python 66


import numpy as np
v = np . array ([1 , 2 , 3])
norm = np . linalg . norm ( v )
print ( norm )

7. Matris Rankı matrix_rank

import numpy as np

A = np . array ([[1 , 2] , [3 , 4]])


rank = np . linalg . matrix_rank ( A )

print ( rank )

8. En Küçük Kareler Yöntemi: Aşırı belirli (overdetermined) lineer denklem sistemlerini çözmek için kullanılan bir
yöntemdir. Denklem sayısı (m) bilinmeyen sayısından (n) fazladır (m > n) ve genellikle tam çözüm yoktur.
- Matematiksel Formülasyon Ax = b sisteminde:
• A: m × n boyutlu katsayı matrisi (m > n)
• x: n × 1 boyutlu bilinmeyenler vektörü
• b: m × 1 boyutlu sağ taraf vektörü
Çözüm vektörü x, aşağıdaki ifadeyi minimize eder:

x = arg min ∥Ax − b∥2

Normal denklemler yoluyla çözüm:

ASÜ - MSönmez - Python 67


AT Ax = AT b ⇒ x = (AT A)−1 AT b

Örnek Uygulama

Aşağıdaki deneysel verilere bir doğru uyduralım:


x (bağımsız) y (bağımlı)
1 1.1
2 1.9
3 3.2
4 4.1
5 5.0

Çözüm
y = ax + b doğrusunu uydurmak için:
(a) A matrisini oluştur:    
1 1 1.1
2 1 1.9
   
3
A= 1
, 3.2
b= 
4 1 4.1
5 1 5.0

(b) Normal denklemleri çöz:  


a
= (AT A)−1 AT b
b

ASÜ - MSönmez - Python 68


(c) Sonuç:
y = 0.990x + 0.070

import numpy as np
import matplotlib . pyplot as plt

# Verilerimiz
x = np . array ([1 , 2 , 3 , 4 , 5])
y = np . array ([1.1 , 1.9 , 3.2 , 4.1 , 5.0])

# A matrisini o l u ş t u r a l ı m ( s ü t u n l a r : x ^0 ve x ^1)
A = np . vstack ([ x , np . ones ( len ( x ) ) ]) . T

# En k ü ç ü k kareler ç ö z ü m ü
a , b = np . linalg . lstsq (A , y , rcond = None ) [0]

print ( f " Uydurulan do ğ ru : y = { a :.3 f } x + { b :.3 f } " )

# Grafik ç i z i m i
plt . plot (x , y , ’o ’ , label = ’ Orjinal veri ’ , markersize =10)
plt . plot (x , a * x + b , ’r ’ , label = f ’ Uydurulan do ğ ru : y = { a :.3 f } x +
{ b :.3 f } ’)
plt . legend ()
plt . show ()

ASÜ - MSönmez - Python 69


Bölüm 10

Scipy

Bilimsel hesaplamalar için Python’da kullanılan temel kütüphaneler-


den biridir. En yaygın kullanılan SciPy fonksiyonlarının bu bölümde ele
alınacaktır.

Optimizasyon ([Link])
[Link], SciPy kütüphanesinde bulunan ve çok bo-
yutlu optimizasyon problemlerini çözmek için kullanılan bir fonksiyon-
dur. Yerel ve küresel optimizasyon problemlerinde kullanılabilir ve farklı
optimizasyon algoritmalarını destekler. minimize fonksiyonunun temel
sözdizimi aşağıdaki gibidir:

70
from scipy . optimize import minimize

result = minimize ( fun , x0 , args =() ,


method = None , bounds = None , constraints =() )

• fun: Minimize edilecek amaç fonksiyonu.


• x0: Başlangıç tahmini (initial guess).
• args: Amaç fonksiyonuna iletilen ek argümanlar (tuple olarak).
• method: Kullanılacak optimizasyon yöntemi (örneğin, ’BFGS’, ’Nelder-Mead’, ’SLSQP’).
• bounds: Değişkenlerin sınırları (örneğin, (min, max) çiftleri).
• constraints: Kısıtlamalar (eşitlik veya eşitsizlik kısıtları).

Örnek

Aşağıda, minimize fonksiyonunun kullanımını gösteren bir örnek verilmiştir.

f (x) = (x − 3)2 + 5

import numpy as np
from scipy . optimize import minimize

# A m a ç fonksiyonu
def ob je ct iv e_ fun ct io n ( x ) :
return ( x - 3) **2 + 5

ASÜ - MSönmez - Python 71


# B a ş l a n g ı ç tahmini
x0 = 0

# Optimizasyonu ç a l ı ş t ı r
result = minimize ( objective_function , x0 , method = ’ BFGS ’)

# S o n u ç l a r ı yazd ır
print ( " Optimal de ğ er ( x ) : " , result . x )
print ( " Minimum fonksiyon de ğ eri : " , result . fun )
print ( " Ba ş ar ı l ı oldu mu ?: " , result . success )
print ( " _
I terasyon say ı s ı : " , result . nit )

Optimal de ğ er ( x ) : [3.]
Minimum fonksiyon de ğ eri : 5.0
Ba ş ar ı l ı oldu mu ?: True
_
I terasyon say ı s ı : 3

Farklı Optimizasyon Yöntemleri

minimize fonksiyonu, farklı optimizasyon yöntemlerini destekler:


• ’Nelder-Mead’: Türev gerektirmeyen bir yöntem (simplex algoritması).
• ’BFGS’: Gradyan tabanlı bir yöntem (kuadratik yakınsama hızına sahiptir).
• ’SLSQP’: Kısıtlı optimizasyon problemleri için uygundur.
• ’Powell’: Türev gerektirmeyen alternatif bir yöntem.

ASÜ - MSönmez - Python 72


Kısıtlı Optimizasyon Örneği

Aşağıda, kısıtlamalı bir optimizasyon problemi örneği verilmiştir.


Amaç fonksiyonu:
f (x) = x21 + x22
Kısıt:
x1 + x 2 ≥ 1

from scipy . optimize import minimize

# A m a ç fonksiyonu
def ob je ct iv e_ fun ct io n ( x ) :
return x [0]**2 + x [1]**2

# Kısıt fonksiyonu ( x1 + x2 >= 1)


constraint = { ’ type ’: ’ ineq ’ , ’ fun ’: lambda x : x [0] + x [1] - 1}

# B a ş l a n g ı ç tahmini
x0 = [0.5 , 0.5]

# Optimizasyonu ç a l ı ş t ı r
result = minimize ( objective_function , x0 , method = ’ SLSQP ’ ,
constraints = constraint )

# S o n u ç l a r ı yazd ır
print ( " Optimal nokta : " , result . x )
print ( " Minimum de ğ er : " , result . fun )

ASÜ - MSönmez - Python 73


root
Denklem sistemlerinin köklerini bulur.

from scipy . optimize import root

def eqn ( x ) :
return x **3 - 2* x - 5

result = root ( eqn , x0 =1)


print ( result . x ) # S o l u t i o n : ~ 2 . 0 9 4 6

Lineer Cebir ([Link])


Lineer denklem sistemlerini çözer.

from scipy . linalg import solve

A = [[3 , 2] , [1 , -4]]
b = [7 , -5]
x = solve (A , b ) # S o l u t i o n : [ 2 . , 0 . 5 ]

İntegral ([Link])
Tek boyutlu integral hesaplar.

from scipy . integrate import quad

ASÜ - MSönmez - Python 74


result , error = quad ( lambda x : x **2 , 0 , 4)
# Result : 21.333... , exact : 64/3

Enterpolasyon ([Link])
1D enterpolasyon.

from scipy . interpolate import interp1d

x = [0 , 1 , 2 , 3]
y = [0 , 2 , 1 , 3]
f = interp1d (x , y , kind = ’ cubic ’)
print ( f (1.5) ) # I n t e r p o l a t e d v a l u e

ASÜ - MSönmez - Python 75


Bölüm 11

Sympy

Python’da sembolik matematik işlemleri yapmak için kullanılan bir


kütüphanedir. SymPy, matematiksel ifadeleri sembolik olarak manipüle
etmek, denklem çözmek, türev ve integral hesaplamak, limit bulmak ve
daha birçok matematiksel işlemi gerçekleştirmek için kullanılır. SymPy,
tamamen Python ile yazılmıştır ve NumPy gibi harici kütüphanelere
bağımlı değildir.
Standart olarak SymPy, Python’un standart kütüphanesinde yer almaz.
Kurulum için aşağıdaki kodu çalıştırılması gerekir.
>> pip install sympy

76
Sembolik Değişkenler Tanımlama
Sayısal değerler yerine matematiksel semboller olarak temsil edilen sem-
bolik değişkenler oluşturmak için symbols() fonksiyonu kullanılır:

x , y = sp . symbols ( " x y " )

Daha ayrıntılı tanımlarda yapılabilir.

import sympy as sp

# Sembolik d e ğ i ş k e n l e r tan ı mlama


x , y = sp . symbols ( ’x y ’)
z = sympy . Symbol ( " z " , integer = true , prime = true , positif = true )
i = sp . Integer (19) # t a m s a y ı t a n ı m l a m a
k = sp . Float (0.3 , 25) # r e a l s a y ı 2 5 d i g i t k u l l a n ı r .
r = sp . Rational (11 , 13) # 11/13

Matematiksel İfadeler
Aşağıdaki ifadeyi Sympy’da ifade etmek için yalnızca Sympy değişkenleri ve fonksiyonları kullanın:


x2 (1 + x)
y=
x+4

x = sp . symbols ( " x " )


y = x **2*(1 + sp . sqrt ( x ) ) /( x + 4)
display ( y )

ASÜ - MSönmez - Python 77


Diğer bir örnek

import sympy as sp
x = sp . symbols ( " x " )
ifade = x **2 + 2* x + 1
display ( ifade ) # Ç ı k t ı : x * * 2 + 2 * x + 1

Sayısal Değerleri Yerine Koyma


Sembollere sayısal değerler atamak için [Link]() fonksiyonunu kullanın:

import sympy as sp
x , y = sp . symbols ( " x y " )
ifade = x **2 + 2* y + 1
y = ifade . subs ({ x :2 , y :3})
display ( y )

Diğer bir örnek

import sympy as sp
x , y , z = sp . symbols ( "x , y , z " )
a = ( x **2+ y *4) . subs (x , 3)
print ( a )
expr = x * y + z **2 * x ;
values = { x : 1.25 , y : 0.4 , z : 3.2};
b = expr . subs ( values )
print ( b )

ASÜ - MSönmez - Python 78


Reel eşdeğeri
Reel eşdeğerini almak için N() fonksiyonunu kullanın:

import sympy as sp
x = sp . sqrt (2+ sp . pi )
display ( x )

display ( sp . N ( x ) )

Sympy Matrisleri
Aşağıdaki matrisleri Sympy’da ifade etmek için Matrix() kullanın:
 
      1 4
x= 1 2 3 y= 1 2 3 z= 1 2 3 k = 2 5
3 3

import sympy as sp
x = sp . Matrix ([1 ,2 ,3])
y = sp . Matrix ([[1] ,[2] ,[3]])
z = sp . Matrix ([[1 ,2 ,3]])
k = sp . Matrix ([[1 , 4] ,[2 ,5 ] ,[3 ,3 ]])
display (x , y , z , k )
display ( x [2])
display ( y [2 ,0])
display ( x [1 ,0])
display ( k [1 ,1])

ASÜ - MSönmez - Python 79


Matris Matematik İşlemleri
display ( " Nokta Ç arp ı m ı : " , x . dot ( y ) ) # Nokta ç a r p ı m ı
display ( " Ç apraz Ç arp ı m : " , x . cross ( y ) ) # Ç a p r a z ç a r p ı m
display ( " Matris - Vekt ö r Ç arp ı m ı : " , M * x ) # M a t r i s v e v e k t ö r ç a r p ı m ı
display ( " Matris Ç arp ı m ı : " , M * M ) # M a t r i s ç a r p ı m ı
display ( " Skaler Ç arp ı m : " , 2* x ) # S k a l e r ç a r p ı m
display ( " Matris Toplama : " , x + y ) # Matris toplama
display ( " Determinant : " , M . det () ) # Determinant
display ( " Ters Matris : " , M . inv () ) # Ters matris
display ( " Transpoz : " , M . T ) # T r a n s p o z

Sympy’da Denklem Çözme


Sympy, denklem sistemlerini çözmek için yerleşik fonksiyonlara sahiptir.
Lineer denklem çözme:

import sympy as sp
x , y , z = sp . symbols ( " x y z " )
sol = sp . linsolve ([3* x - 5* y - 10 , x + y -1] , [x , y ])
display ( sol )

Non-lineer denklem çözme

import sympy as sp
x , y , z = sp . symbols ( " x y z " )
sol = sp . nonlinsolve ([ - x **2 - x + 1] , [ x ])

ASÜ - MSönmez - Python 80


Sayısal çözüm

import sympy as sp
x , y , z = sp . symbols ( " x y z " )
sol = sp . nsolve ([ x1 **2 + x1 * x2 - 10 , x2 + 3* x1 * x2 **2 - 57] , [ x1 , x2 ] ,
[1.5 ,3.5])

simplify()
İfadeleri Sadeleştirme simplify() fonksiyonu ile ifadeleri sadeleştirebilirsiniz.

import sympy as sp
ifade = ( x **2 - 1) / ( x + 1)
print ( sp . simplify ( ifade ) ) # Ç ı k t ı : x - 1

diff()
Türev Alma diff() fonksiyonu ile türev hesaplayabilirsiniz.

import sympy as sp
turev = sp . diff ( x **3 + 2* x **2 + x , x )
print ( turev ) # Ç ı k t ı : 3 * x * * 2 + 4 * x + 1

\ begin { lstlisting }{ python }


# Diferansiyel denklem ç ö z m e
y = sp . Function ( " y " )

ASÜ - MSönmez - Python 81


sol = sp . dsolve ( y ( x ) . diff ( x ) - y ( x ) * x )

integrate()
İntegral Hesaplama integrate() fonksiyonu ile integral hesaplayabilirsiniz.

import sympy as sp
integral = sp . integrate ( x **2 , x )
print ( integral ) # Ç ı k t ı : x * * 3 / 3
integral = sp . integrate ( x **2 , (x , 0 , 2) )
print ( integral ) # Ç ı k t ı : 8 / 3

limit()
Limit Hesaplama limit() fonksiyonu ile limit hesaplayabilirsiniz.

import sympy as sp
lim = sp . limit (( x **2 - 1) / ( x - 1) , x , 1)
print ( lim ) # Ç ı k t ı : 2

trigonometri
Trigonometrik İfadeler SymPy, trigonometrik ifadeleri sembolik olarak işleyebilir.

ASÜ - MSönmez - Python 82


import sympy as sp
ifade = sp . sin ( x ) **2 + sp . cos ( x ) **2
print ( sp . simplify ( ifade ) ) # Ç ı k t ı : 1

series()
Seri Açılımları series() fonksiyonu ile seri açılımları yapabilirsiniz.

import sympy as sp
seri = sp . series ( sp . exp ( x ) , x , 0 , 5)
print ( seri ) # Ç ı k t ı : 1 + x + x * * 2 / 2 + x * * 3 / 6 + x * * 4 / 2 4 + O ( x * * 5 )

LaTeX Çıktısı: SymPy, matematiksel ifadeleri LaTeX formatında çıktı olarak verebilir.

import sympy as sp
ifade = x **2 + y **2
print ( sp . latex ( ifade ) ) # Ç ı k t ı : x ^{2} + y ^{2}

evalf()
Sayısal Hesaplamalar SymPy, sembolik hesaplamalar yapar, ancak sayısal sonuçlar elde etmek için evalf() kul-
lanılabilir.

import sympy as sp
sonuc = sp . sqrt (2) . evalf ()

ASÜ - MSönmez - Python 83


print ( sonuc ) # Ç ı k t ı : 1.41421356237310

functions
Fonksiyon Tanımlama: Sembolik fonksiyonlar tanımlayabilirsiniz.

import sympy as sp
x , y , z = sp . symbols ( "x , y , z " )
f = sp . Function ( ’f ’) ( x )
print ( f ) # Ç ı k t ı : f ( x )
g = sp . Function ( " g " ) (x , y , z ) # d e f i n i n g funtions
h = sp . Lambda (x , x **2+1) # h(x)

ASÜ - MSönmez - Python 84


Bölüm 12

Matplotlib

Python’da veri görselleştirme için kullanılan popüler bir


kütüphanedir. 2D ve 3D grafikler oluşturmak için geniş bir
yelpazede seçenekler sunar. Matplotlib, özellikle bilimsel
hesaplamalar, veri analizi ve makine öğrenmesi gibi alan-
larda sıkça kullanılır.
Matplotlib Kurulumu: Matplotlib, Python’un standart kütüpha-
nesinde yer almaz. Kurulum için pip kullanabilirsiniz:
pip install matplotlib
Temel Grafik Oluşturma: Matplotlib’de grafikler pyplot modülü kullanılarak oluşturulur.

85
import matplotlib . pyplot as plt
x = [1 , 2 , 3 , 4 , 5]
y = [2 , 3 , 5 , 7 , 11]
plt . plot (x , y ,"b - - v " )
plt . show ()

• Renkler İnglizce ismlerin ilk harfi: ’b’, ’g’,’r’, ’c’, ’m’, ’y’, ’k’, ’w’
• Çizigi sitilleri: ’-’ , ’–’, ’-.’, ’:’
• İşaretler ’.’ nokta ’,’ pixel, ’o’ çember, ’v’ üçgen, ’ˆ’ üçgen, ’¡’ üçgen, ’¿’ üçgen, ’1’ tri down marker, ’2’ tri up marker,
’3’ tri left marker, ’4’ tri right marker, ’s’ square marker, ’p’ pentagon marker, ’*’ star marker, ’h’ hexagon1
marker, ’H’ hexagon2 marker, ’+’ plus marker, ’x’ x marker, ’D’ diamond marker, ’d’ thin diamond marker, ’—’
vline marker, ’ ’ hline marker

Grafik Türleri:

Matplotlib, farklı grafik türlerini destekler:


1. Çizgi Grafiği (Line Plot) [Link](x, y, label=’Çizgi Grafiği’)
2. Dağılım Grafiği (Scatter Plot) [Link](x, y, label=’Dağılım Grafiği’, color=’red’)
3. Çubuk Grafiği (Bar Plot): [Link](x, y, label=’Çubuk Grafiği’, color=’blue’)
4. Histogram (Histogram): [Link](x, bins=4, label=’Histogram’, color=’green’)
5. Pasta Grafiği (Pie Chart):

etiketler = [ ’A ’ , ’B ’ , ’C ’ , ’D ’]
boyutlar = [15 , 30 , 45 , 10]
plt . pie ( boyutlar , labels = etiketler , autopct = ’ %1.1 f %% ’)

ASÜ - MSönmez - Python 86


plt . show ()

Grafik Özelleştirme:

Matplotlib, grafikleri özelleştirmek için birçok seçenek sunar.


1. Başlık ve Etiketler:

plt . plot (x , y )
plt . title ( ’ Ba ş l ı k ’)
plt . xlabel ( ’X Ekseni ’)
plt . ylabel ( ’Y Ekseni ’)

2. Eksen Sınırları:

plt . xlim (0 , 6)
plt . ylim (0 , 12)

3. Grid (Izgara) Ekleme [Link](True)

plt . grid ()
plt . grid ( axis = ’y ’ , linewidth =1 , linestyle = " --" , color = " blue " )
plt . grid ( axis = ’x ’ , linewidth =2 , linestyle = " -" , color = " red " )

4. Renk ve Çizgi Stili

plt . plot (x , y , color = ’ green ’ , linestyle = ’ -- ’ , marker = ’o ’ , label = ’ Veri ’)

ASÜ - MSönmez - Python 87


plt . legend ()

Alt Grafikler (Subplots)

subplot() fonksiyonu ile birden fazla grafik aynı pencere içinde gösterilebilir.
plt . subplot (1 , 2 , 1) # 1 s a t ı r , 2 s ü t u n , 1 . g r a f i k
plt . plot (x , y )
plt . title ( ’ Grafik 1 ’)

plt . subplot (1 , 2 , 2) # 1 s a t ı r , 2 s ü t u n , 2 . g r a f i k
plt . scatter (x , y )
plt . title ( ’ Grafik 2 ’)

plt . show ()

Grafikleri Kaydetme

savefig() fonksiyonu ile grafikleri dosya olarak kaydedebilirsiniz.

plt . savefig ( ’ grafik . png ’) # PNG format ı nda kaydetme


plt . savefig ( ’ grafik . pdf ’) # PDF format ı nda kaydetme

ASÜ - MSönmez - Python 88


Stil Kullanımı:

Matplotlib, önceden tanımlanmış stiller sunar. Bu stillerle grafiklerin görünümünü hızlıca değiştirebilirsiniz. [Link](’ggplo
Diğer stiller: ’seaborn’, ’dark background’, ’bmh’, vb.

3D Grafikler:

Matplotlib, 3D grafikler oluşturmayı da destekler.

from mpl_toolkits . mplot3d import Axes3D


import numpy as np
import matplotlib . pyplot as plt

fig = plt . figure ()


ax = fig . add_subplot (111 , projection = ’3 d ’)

x = np . random . standard_normal (100)


y = np . random . standard_normal (100)
z = np . random . standard_normal (100)

ax . scatter (x , y , z )
plt . show ()

ASÜ - MSönmez - Python 89


12.1 Sympy Plot
1. SymPy Plot, SymPy kütüphanesinin bir modülüdür ve matematiksel ifadelerin görselleştirilmesi için kullanılır.
SymPy, Python’da sembolik matematik işlemleri yapmak için kullanılan bir kütüphanedir ve SymPy Plot modülü,
bu sembolik ifadelerin grafiklerini çizmek için kullanılır.
2. SymPy Plot modülü, temel olarak plot, plot parametric, plot3d, plot3d parametric gibi fonksiyonlar sunar. Bu
fonksiyonlar, 2D ve 3D grafikler çizmek için kullanılabilir.
3. 2D Grafik Çizimi: sin(x) fonksiyonunun grafiğini çizmek için:

from sympy import symbols , sin


from sympy . plotting import plot
x = symbols ( ’x ’)
plot ( sin ( x ) , (x , -2 , 2) )

4. Birde fazla grafiği birlikte çizmek için

from sympy import symbols


from sympy . plotting import plot
x = symbols ( ’x ’)
plot (x , x **2 , x **3 , (x , -5 , 5) )

5. Parametrik Grafik Çizimi: Parametrik bir grafik çizmek için plot_parametric fonksiyonu kullanılır. Örneğin, bir
çember çizmek için:

from sympy import symbols , cos , sin


from sympy . plotting import plot_parametric

ASÜ - MSönmez - Python 90


t = symbols ( ’t ’)
plot_parametric ( cos ( t ) , sin ( t ) , (t , 0 , 2*3.14) )

6. 3D Grafik Çizimi: 3D grafikler çizmek için plot3d fonksiyonu kullanılır. Örneğin, sin(x) * cos(y) fonksiyo-
nunun grafiğini çizmek için:

from sympy import symbols , sin , cos


from sympy . plotting import plot3d

x , y = symbols ( ’x y ’)
plot3d ( sin ( x ) * cos ( y ) , (x , -5 , 5) , (y , -5 , 5) )

ASÜ - MSönmez - Python 91


Bölüm 13

Pandas

Pandas, veri işlemesi ve analizi için Python programlama dilinde yazılmış


olan bir yazılım kütüphanesidir. Bu kütüphane temel olarak zaman eti-
ketli serileri ve sayısal tabloları işlemek için bir veri yapısı oluşturur ve
bu şekilde çeşitli işlemler bu veri yapısı üzerinde gerçekleştirilebilir olur.
Yazılım ismini bir ekonometri terimi olan veri panelinden almıştır. Bir veri
paneli birçok zaman aralığı içinde farklı gözlemlerin işlenebildiği yapıyı
tarif eder.
Özellikle tablo verileri (örneğin, CSV dosyaları, Excel dosyaları, SQL veritabanları) üzerinde çalışmak için tasarlanmıştır.
Pandas, hızlı ve kolay veri işleme, temizleme, analiz ve görselleştirme için kullanılır.
Pandas’ı kullanmadan önce kurmanız gerekir.

92
>> pip install pandas
Kurulan sürümü öğrenmek aşağıdaki kod yazılır.

import pandas as pd
print ( pd . _version__ )

Pandas’ın temel veri yapıları şunlardır:


• Series: Vektor
• DataFrame: Matris
Bu veri yapıları Excel, CSV, SQL, gibi dosyaların hepsi okunabilir, işlem yapılabilir ve tekrar istenilen formatta yeniden
saklanabilir.

13.1 Series
Series, tek boyutlu etiketli bir dizi (array) olarak düşünülebilir. Her bir elemanın bir indeksi (etiket) vardır ve bu sayede
verilere erişim ve manipülasyon kolaylaşır. Series, bir vektör gibi davranır.

Series Oluşturma

Series, bir liste, NumPy dizisi veya sözlük (dictionary) gibi farklı veri yapılarından oluşturulabilir.

import pandas as pd
# Listeden Series o l u ş t u r m a
data = [235 , 275 , 350 , 420]
series = pd . Series ( data )
print ( series )

ASÜ - MSönmez - Python 93


-----
0 235
1 275
2 350
3 420
dtype : int64

Seri indeksleri

Bir önceki örnekte eğer bir kez daha aşağıdaki şekilde yazılırsa

import pandas as pd
data = [235 , 275 , 350 , 420]
series = pd . Series ( data , index =[ " S235 " ," S275 " ," S350 " ," S420 " ])
print ( series )
-----
S235 235
S275 275
S350 350
S420 420

Dict veri yapısından [Link] oluşturulduğunda, dict veri yapısındaki anahtarlar (keys) otomatik olarak indeksler
olur.

import pandas as pd
data = { " a " : 10 , " b " : 20 , " c " : 30 , " d " : 40}
s = pd . Series ( data )
print ( s )

ASÜ - MSönmez - Python 94


----
a 10
b 20
c 30
d 40

Değerler erişme

1. Değerlere erişim [Link]["a"]) şeklide olur.


2. Değerlere index deki yeri kullanılarak da ulaşmak mümkündür [Link][0])
3. İndeksi görüntüleme, print([Link])
4. Değerleri görüntüleme, print([Link])
5. Seri boyutu print([Link])
6. Seri değeri değiştirme [Link]["a"]=100)
7. Seride bir değer eklenecek ise [Link]["e"]=500)

Filtreleme ve Matematiksel işlemler

import pandas as pd
data = [235 , 275 , 350 , 420]
s = pd . Series ( data )
filtre = s [ s > 300]
print ( filtre )
s = s * 2

ASÜ - MSönmez - Python 95


print ( s )

Temel istatistikleri görüntüleme

import pandas as pd
data =[92 ,35 ,45 ,63 ,92 ,46 ,55 ,36 ,67 ,84 ,97 ,90 ,100]
s = pd . Series ( data )
print ( s . describe () )
print ( s . count () )
----
count 13.0000
mean 69.3846
std 24.2437
min 35.0000
25% 46.0000
50% 67.0000
75% 92.0000
max 100.0000
dtype : float64

Değerlere göre sıralama

s_sirali = s . sort_values ()
print ( s_sirali )

ASÜ - MSönmez - Python 96


13.2 DataFrames
DataFrame, Pandas kütüphanesinin en temel ve en güçlü veri yapısıdır. DataFrame, iki boyutlu bir tablo yapısıdır
ve satırlar (rows) ile sütunlardan (columns) oluşur. Her bir sütun farklı bir veri tipine sahip olabilir (örneğin, sayılar,
metinler, tarihler). DataFrame, Excel tabloları veya SQL tabloları gibi düşünülebilir.
DataFrame, veri analizi, temizleme, manipülasyon ve görselleştirme işlemleri için yaygın olarak kullanılır.
DataFrame Oluşturma: DataFrame, farklı veri kaynaklarından oluşturulabilir:
• Listeler veya sözlükler (dictionaries)
• NumPy dizileri (arrays)
• CSV, Excel, SQL veritabanları gibi harici dosyalar

Sözlükten DataFrame Oluşturma

İki boyutlu bir matristen bir DataFrame oluşturulanbilir.

import pandas as pd
df1 = pd . DataFrame ([[101 ,102 ,103 ,104 ,105] ,
[201 ,202 ,203 ,204 ,205]])
print ( df1 )
---
0 1 2 3 4
0 101 102 103 104 105
1 201 202 203 204 205

Eğer istenirse satır ve kolonlara istenilen isimler verilebilir.

ASÜ - MSönmez - Python 97


import pandas as pd
df1 = pd . DataFrame ([[101 ,102 ,103 ,104 ,105] ,[201 ,202 ,203 ,204 ,205]])
column1 =[ " A " ," B " ," C " ," D " ," E " ]
index1 =[ " 01 " ," 02 " ]
df1 . index = index1
df1 . columns = column1
print ( df1 )
---
A B C D E
01 101 102 103 104 105
02 201 202 203 204 205

- columns and index kullanımı isteğe bağlıdır. - DataFrame() fonksiyonu doğrudan dict veri yapısından da elde
edilebilir.

import pandas as pd
data = {
" Isim " : [ ’ Ali ’ , ’ Veli ’ , ’ Ay ş e ’ , ’ Fatma ’] ,
" Ya ş " : [25 , 30 , 22 , 27] ,
" Ş ehir " : [ ’ Ankara ’ , ’ Istanbul ’ , ’ Izmir ’ , ’ Bursa ’]
}
df = pd . DataFrame ( data )
print ( df )
---
Isim Ya ş Ş ehir
0 Ali 25 Ankara

ASÜ - MSönmez - Python 98


1 Veli 30 Istanbul
2 Ay ş e 22 Izmir
3 Fatma 27 Bursa

- Listelerden DataFrame oluşturulabilir

DataFrame fonksiyonları

1. [Link]() : df ile ilgili bilgi verir.


2. [Link](): df verisindeki her bir kolona ait ortalama, max, min, standart sapma gibi istatistik değerlerini
verir.
3. [Link](): df verisinin boyutlarını verir.
4. [Link][]

import pandas as pd

df = pd . DataFrame ({
" A " : [10 , 20 , 30] ,
" B " : [100 , 200 , 300]
} , index =[ " x " , " y " , " z " ])

# Etikete g ö r e e r i ş i m
df . loc [ " x " ] # ’x ’ etiketli sat ı r
df . loc [ " x " : " y " ] # ’x ’ ile ’y ’ aras ı ndaki sat ı rlar ( her ikisi de
dahil )
df . loc [[ " x " , " z " ]] # Belirli etiketlerin listesi

ASÜ - MSönmez - Python 99


# Sat ı r ve s ü t u n etiketi birlikte
df . loc [ " x " , " A " ] # ’x ’ sat ı r ı , ’A ’ s ü t u n u ( tek h ü c r e )

# K o ş u l a g ö r e e r i ş i m
df . loc [ df [ " A " ] > 15] # A s ü t u n u 15 ’ ten b ü y ü k olan sat ı rlar

5. [Link][]

df . iloc [0] # 0. sat ı r


df . iloc [0:2] # 0 ve 1. sat ı rlar (2 dahil d e ğ i l )
df . iloc [[0 , 2]] # 0 ve 2. sat ı rlar

# Sat ı r ve s ü t u n pozisyonu
df . iloc [0 , 1] # 0. sat ır , 1. s ü t u n ( yani B s ü t u n u )

6. Herhangi bir elemanı, satır veya sutüna [Link][] veya [Link][] komutları ile ulaşılabilir.
iloc[] index tabanlı çalışır; loc[] isim tabanlı çalışır. Eğer sütün ve satırları isim verilmedi ise aynıdır. Ancak
isim verildi ise [Link][] kullanılır.

satir1 = df . loc [1] # 1. indeksteki sat ı r


print ( satir1 )

satirlar = df . loc [[1 ,3]] # indeksi 1. ve 3. sat ı rlar ı verir .


print ( satirlar )

satirlar2 = df . loc [2:] # 2 ve sonras ı ndakiler


print ( satirlar2 )

ASÜ - MSönmez - Python 100


Veri Okuma ve Yazma

Excelden bilgi okuma ve yazmak için penpyxl kütüphanesi yüklü olmalı

import pandas as pd

# Ö r n e k veri o l u ş t u r m a
veri = {
" Ö ğ renci No " : [101 , 102 , 103 , 104] ,
" Ad " : [ " Ali " , " Ay ş e " , " Mehmet " , " Zeynep " ] ,
" Not " : [85 , 92 , 78 , 88] ,
" S ı n ı f " : [ " 10 A " , " 10 B " , " 10 A " , " 10 B " ]
}

df = pd . DataFrame ( veri )

# Excel ’e yazma
df . to_excel ( " ogrenci_notlari . xlsx " , sheet_name = " Notlar " )

# DataFrame ’i panoya kopyalama


df . to_clipboard ( index = False )

# DataFrame ’i csv fomat ı nda kopyalama


df . to_csv ( index = False )

# Excel ’ den okuma

ASÜ - MSönmez - Python 101


okunan_df = pd . read_excel ( " ogrenci_notlari . xlsx " )
print ( okunan_df )

# Clipboar ’ dan okuma


okunan_df = pd . read_clipboard ( " ogrenci_notlari . xlsx " )
print ( okunan_df )

# csv dosyas ı nda okuma


okunan_df = pd . read_csv ( " ogrenci_notlari . xlsx " )
print ( okunan_df )

DataFrame Üzerinde İşlemler

1. Yeni Sütun Ekleme

df [ ’ Yeni_S ü tun ’] = df [ ’ Ya ş ’] * 2
print ( df )

2. Filtreleme

filtre = df [ df [ ’ Ya ş ’] > 25]


print ( filtre )

3. Sıralama

sirali_df = df . sort_values ( by = ’ Ya ş ’ , ascending = False )

ASÜ - MSönmez - Python 102


print ( sirali_df )

4. Gruplama ve Toplama

gruplanmis = df . groupby ( ’Ş ehir ’) [ ’ Ya ş ’ ]. mean ()


print ( gruplanmis )

DataFrame Görselleştirme

Pandas, Matplotlib ile entegre çalışarak DataFrame’leri görselleştirmeyi kolaylaştırır.

import pandas as pd
import matplotlib . pyplot as plt

# Ö r n e k veri o l u ş t u r m a
data ={
’Y ı l ’: [2010 , 2011 , 2012 , 2013 , 2014] ,
’ Sat ı ş ’: [200 , 250 , 300 , 350 , 400]
}
df = pd . DataFrame ( data )

# Ç i z g i g r a f i ğ i
df . plot ( x = ’Y ı l ’ , y = ’ Sat ı ş ’ , kind = ’ line ’ , title = ’Y ı llara G ö re Sat ı ş lar ’)
plt . ylabel ( ’ Sat ı ş Miktar ı ’)
plt . show ()

ASÜ - MSönmez - Python 103


Çoklu grafik çizimi

import pandas as pd
import matplotlib . pyplot as plt

# Ö r n e k veri o l u ş t u r m a
data ={
’Y ı l ’: [2010 , 2011 , 2012 , 2013 , 2014] ,
’ Sat ı ş ’: [200 , 250 , 300 , 350 , 400]
}
df = pd . DataFrame ( data )

fig , axes = plt . subplots ( nrows =2 , ncols =2 , figsize =(12 , 8) )

df . plot ( x = ’Y ı l ’ , y = ’ Sat ı ş ’ , kind = ’ line ’ , ax = axes [0 ,0] , title = ’Ç izgi


Grafi ğ i ’)
df . plot ( x = ’Y ı l ’ , y = ’ Sat ı ş ’ , kind = ’ bar ’ , ax = axes [0 ,1] , title = ’S ü tun Grafi ğ i ’)
df . set_index ( ’Y ı l ’) [ ’ Sat ı ş ’ ]. plot ( kind = ’ pie ’ , ax = axes [1 ,0] ,

autopct = ’ %1.1 f %% ’ , title = ’ Pasta Grafi ğ i ’)


df [ ’ Sat ı ş ’ ]. plot ( kind = ’ box ’ , ax = axes [1 ,1] , title = ’ Kutu Grafi ğ i ’)

plt . tight_layout ()
plt . show ()

ASÜ - MSönmez - Python 104

You might also like