Veri Bilimi İçin Python

Yasemin Derya Dilli
6 min readNov 2, 2023

--

Veri bilimi alanında ilk adımlarını atan birisi olarak bu yolculukta öğrendiklerimi yazıya dökerek kendi kütüphanemi oluşturmaya başladığım ilk medium yazısına hoş geldiniz.

Bu uzun yazıda aşağıdaki konulara yakından bakmış olacaksınız. Keyifli dakikalar…

  • Veri Yapıları
  • Fonksiyonlar
  • Koşullar
  • Döngüler
  • Comprehension

VERİ YAPILARI (DATA STRUCTURES)

Veri saklama, işleme ve düzenleme işlemleri için kullanılır

# — Sayılar (Numbers): int, float, complex
# — Karakter Dizileri (Strings): str
# — Boolean (TRUE-FALSE): bool
# — Liste (List)
# — Sözlük (Dictionary)
# — Demet (Tuple)
# — Set

Numbers:

İnt: x = 46

Float : x = 10.3

Complex : x = 2j + 1

Strings= str

x = “Hello ai era”

Boolean

True- False döndüren veri yapısıdır. Sorgulama yapmak için kullanılır.

type(True)
5 == 4
3 == 2
1 == 1

Liste
x = [“btc”, “eth”, “xrp”]

— Değiştirilebilir
— Sıralıdır. Index işlemleri yapılabilir.
— Kapsayıcıdır.

Sözlük (dictionary)

x = {“name”: “Peter”, “Age”: 36} # Key ve Value şeklinde değer alırlar, “name” key değeri, “Peter”, “Age”: 36 Value değeridir. Aynı key bilgisiyle birden fazla eleman olamaz.

# Değiştirilebilir.
# Sırasız. (3.7 sonra sıralı.)
# Kapsayıcı.

Tuple

x = (“python”, “ml”, “ds”)

Elemanları sıralanabilir ancak güncellenemez ve her bir eleman liste içerisinde birden fazla tekrarlanabilir.

# — Değiştirilemez.
# — Sıralıdır.
# — Kapsayıcıdır.

Set

x = {“python”, “ml”, “ds”}

# — Değiştirilebilir.
# — Sırasız + Eşsizdir.
# — Kapsayıcıdır.

x = {“python”, “ml”, “ds”}

Not 1: Liste, tuple, set ve dictionary veri yapıları aynı zamanda Python Collections (Arrays) olarak geçmektedir.
Not 2: Python’da index’ler 0’dan başlar.

String (Karakter Dizisi) Metotları

#dir(str)

dir () fonksiyonu, Python programlama dilinde bir nesnenin özelliklerini, metotlarını ve öğelerini listelemek için kullanılan bir yerleşik bir fonksiyondur.

# len

Stiring’lerin uzunluklarına erişiriz.

name = “john”
len(name) # 4


# upper() & lower()

küçük harf -büyük harf dönüşümlerini yaparız.

“yasemin”.upper() # YASEMİN
“YASEMİN”.lower() #yasemin

# replace

Karakterler değiştirir.

hi = “Hello AI Era”
hi.replace(“l”, “p”) # Heppo AI Era

# split: Böler

“Hello AI Era”.split() # [‘Hello’, ‘AI’, ‘Era’]

# strip: Kırpar

“ ofofo “.strip()
“ofofo”.strip(“o”) # fof

# capitalize: ilk harfi büyütür

“foo”.capitalize() #Foo

“foo”.startswith(“f”) #True

Liste Metotları (List Methods)

# append: eleman ekler

notes.append(100) #Listenin sonuna100 sayısını ekler.

# pop: indexe göre siler

notes.pop(5) = 5. İndex’teki veriyi siler.

# insert: indexe ekler
notes.insert(2, 99) = 2. İndex’e 99 sayısını ekler.

Sözlük Metodları (Dictonary Methods)

Sözlük Metotları (Dictonary Methods)

dictionary = {“REG”: “Regression”, “LOG”: “Logistic Regression”, “CART”:“Classification and Reg”}

dictionary[“REG”]

Çıktı = 'Regression’

dictionary = {“REG”: [“RMSE”, 10],
“LOG”: [“MSE”, 20],
“CART”: [“SSE”, 30]}

dictionary[“CART”][1] = CART key’inin 1. index’teki değerini getirir.

Çıktı = 30


dictionary[“REG”] = [“YSA”, 10] = REG key’inde RMSE değerinin yerine YSA değerini atar.

Çıktı=

dictionary = {“REG”: [“YSA”, 10],
“LOG”: [“MSE”, 20],
“CART”: [“SSE”, 30]}


# dictionary.keys()

Tüm Key’lere erişmek için kullanılır.

# dictionary.values()

Tüm Value’lara erişmek için kullanılır.

# dictionary.items()

Tüm çiftleri tuple halinde listeye çevirmek için

Çıktı = {‘REG’: [‘YSA’, 10], ‘LOG’: [‘MSE’, 20], ‘CART’: [‘SSE’, 30]}

# dictionary.update({“REG”: 11})

Key-Value değerini güncellemek için kullanılır.

Çıktı = {‘REG’: 11, ‘LOG’: [‘MSE’, 20], ‘CART’: [‘SSE’, 30]}

#dictionary.update({“RF”: 10})

Yeni Key-Value eklemek için kullanılır.

Çıktı = {‘REG’: 11, ‘LOG’: [‘MSE’, 20], ‘CART’: [‘SSE’, 30], ‘RF’: 10}

Set Metotları (Set Methods)

#difference()

İki kümenin farkını gösterir.
set1 = set([1, 3, 5])
set2 = set([1, 2, 3])
set1.difference(set2) = # set1'de olup set2'de olmayanlar. Çıktı {5}
set1 — set2 # diğer yöntem

# symmetric_difference()

İki kümede de birbirlerine göre olmayanları gösterir.

set1.symmetric_difference(set2) = Çıktı {2, 5}
set2.symmetric_difference(set1) = Çıktı {2, 5}

# intersection():

İki kümenin kesişimini gösterir.

set1.intersection(set2) = Çıktı {1, 3}
set2.intersection(set1) = Çıktı {1, 3}
set1 & set2 = Çıktı {1, 3}

#union()

İki kümenin birleşimi gösterir.

set1.union(set2) # Çıktı {1, 2, 3, 5}
set2.union(set1) # Çıktı {1, 2, 3, 5}

# isdisjoint()

İki kümenin kesişimi boş mu?

set1 = set([7, 8, 9])
set2 = set([5, 6, 7, 8, 9, 10])

set1.isdisjoint(set2) #Çıktı — ‘False’
set2.isdisjoint(set1) #Çıktı — ‘False’

# issubset()

Bir küme diğer kümenin alt kümesi mi?

set1.issubset(set2) #set1, set2'nin alt kümesi mi?

Çıktı = ‘True’
set2.issubset(set1)
Çıktı = ‘False’

# issuperset()

Bir küme diğer kümeyi kapsıyor mu?

set2.issuperset(set1) # set2, set1'i kapsıyor mu ?

Çıktı = ‘True’
set1.issuperset(set2)

Çıktı =’False’

FONKSİYONLAR, KOŞULLAR, DÖNGÜLER, COMPREHENSIONS

— Fonksiyonlar (Functions)
— Koşullar (Conditions)
— Döngüler (Loops)
— Comprehesions


# Fonksiyonlar (FUNCTIONS)

Belirli bir işlemi gerçekleştirmek için kullanılan, adlandırılmış ve yeniden kullanılabilir bir kod bloğu oluşturma işlemidir. def, fonksiyon tanımının başlangıcını belirtir.


def calculate(x):
print(x * 2)

calculate(5)


# İki argümanlı/parametreli bir fonksiyon tanımlayalım.

def summer(arg1, arg2):
print(arg1 + arg2)

summer(7, 8)

summer(8, 7)

summer(arg2=8, arg1=7)



# Docstring

Docstring, bir nesnenin kullanımı, işlevi, parametreleri ve dönüş değerini açıklayan metin tabanlı bir açıklama sunar. Docstring, kodunuzun okunabilirliğini ve anlaşılabilirliğini artırır ve diğer geliştiricilerin veya kendinizin kodu daha iyi anlamasına yardımcı olur.

?print şeklinde ya da help(print) şeklinde Python Console’la yazdığımızda print fonksiyonunun ne iş yaptığını herkesin anlayacağı şekilde açıklar.

# Fonksiyonların Statement/Body Bölümü

Fonksiyonun hangi sırayla, hangi görevi yapacağına karar verilen bölümdür.

Aşağıda girilen değerleri bir liste içinde saklayacak fonksiyon tanımlanmış. Adım adım üstünden gidelim.

Örnek Uygulama

list_store = [] = Fonksiyon çıktılarını tutmak için boş bir fonksiyon tanımlanmış.


def add_element(a, b): #add_element adlı bir fonksiyon oluşturulmuş. a ve b parametleri ile işlemler gerçekleştirilecek.
c = a * b # c’ye a ve b çarpımlarının sonuçları atanmış.
list_store.append(c) # başta tanımladığımız list_store listesine append metoduyla her yeni değeri kaydedilecek.
print(list_store) #print ile list_store ekrana yazdırılacak.

add_element(1, 8)
add_element(18, 8)
add_element(180, 10)



# Ne Zaman Fonksiyon Yazma İhtiyacımız Olur?

Eğer bir işlemi tekrar tekrar yapmamız gerekiyorsa kolayca fonksiyon tanımlayarak zamandan tasarruf ederiz.

# Lokal & Global Değişkenler (Local & Global Variables)


list_store = [1, 2] #Global Değişken

def add_element(a, b):
c = a * b # Yerel Değişken
list_store.append(c)
print(list_store)

add_element(1, 9)

KOŞULLAR (CONDITIONS)

# True-False’u hatırlayalım.
1 == 1
1 == 2

# if
if 1 == 1:
print(“something”)
# Eğer 1=1 ise ekrana something bastırılır.

if 1 == 2:
print(“something”)
# Koşul sağlanmadığı için ekranda hiçbir şey görülmez.

def number_check(number):
if number == 10:
print(“number is 10”)

number_check(12)
Koşul sağlanmıyor. Çıktı görülmez.

# else

def number_check(number):
if number == 10:
print(“number is 10”)
else: #number, 10'a eşit değilse;
print(“number is not 10”)

number_check(12)
ÇIKTI= number is not 10

# elif
Bir durumun sağlanması birden fazla koşula bağlıysa elif kullanılır.

def number_check(number):
if number > 10:
print(“greater than 10”)
elif number < 10:
print(“less than 10”)
else:
print(“equal to 10”)

number_check(6)

# DÖNGÜLER (LOOPS)

# for loop

students = [“John”, “Mark”, “Venessa”, “Mariam”]

for student in students: # students listesinin tüm index’lerinde gezer.
print(student) # ekrana tüm isimler yazdırılır.

for student in students:
print(student.upper()) #upper() metodu tüm harfleri büyük harfe çevirir.

çıktı : JOHN, MARK, VENESSA, MARIAM

# break & continue & while


salaries = [1000, 2000, 3000, 4000, 5000]

for salary in salaries:
if salary == 3000:
break # salaries’te gezerken salary=3000'i yakalarsa for döngüsü durur ve ekrana 3000 yazdırılır.
print(salary)


for salary in salaries:
if salary == 3000: # Eğer salary değeri 3000'e eşitse atla ve davam et.
continue
print(salary)
Çıktı : 1000, 2000, 4000, 5000

# while

number = 1
while number < 5: #number 5'ten küçük olduğu sürece devam et.
print(number)
number += 1 # her döngüde number’ı 1 artır.

# Enumerate: Otomatik Counter/Indexer

Her elemanın indeksini (yerini) ve değerini eş zamanlı olarak döndüren bir yerleşik bir fonksiyondur

students = [“John”, “Mark”, “Venessa”, “Mariam”]


for index, student in enumerate(students):
print(index, student)

Çıktı:

0 John
1 Mark
2 Venessa
3 Mariam


# Zip

Ayrı listeleri ındex’lere göre tek bir liste haline getirir.

students = [“John”, “Mark”, “Venessa”, “Mariam”]

departments = [“mathematics”, “statistics”, “physics”, “astronomy”]

ages = [23, 30, 26, 22]

list(zip(students, departments, ages))

ÇIKTI: Tuple formunda olur.

[(‘John’, ‘mathematics’, 23),
(‘Mark’, ‘statistics’, 30),
(‘Venessa’, ‘physics’, 26),
(‘Mariam’, ‘astronomy’, 22)]

# lambda

Kullan at fonksiyondur. Tek satırdır. Bir ya da daha fazla parametre kabul eder ancak tek bir işlem yapabilirler.
# map
Verileri birbiriyle eşler.

COMPREHENSIONS

# List Comprehension
Tek satırda fonksiyon yazmamızı sağlar, kod satırı kalabalığından kurtuluruz. Köşeli parantezle kullanılır. If-else yapısı varsa for döngüsünden önce yer alır.

[new_salary(salary * 2) if salary < 3000 else new_salary(salary) for salary in salaries] # En sağdan okumaya başlarız. salaries’lerde gez, tuttuğun salary değeri 3000'den küçükse salary’i 2 ile çarp ve new_salary’e ekle. Eğer salary değerin 3000'den küçük değilse salary’i değişkenini olduğu gibi new_salary’e ekle.

[salary * 2 for salary in salaries]
[salary * 2 for salary in salaries if salary < 3000]

# Sadece if yapısı varsa for döngüsü önce gelir. Yukarıda olduğu gibi.


# Dict Comprehension

List Comprehension yapısına benzerdir.

{k: v ** 2 for (k, v) in dictionary.items()}

{k.upper(): v for (k, v) in dictionary.items()}

{k.upper(): v*2 for (k, v) in dictionary.items()}

Bu bölümün sonuna geldik. Bir sonraki yazıda veri analizi için kütüphanelere yakından bakıyor olacağız.

Kaynak olarak katılımcısı olduğum Data Scientist Bootcamp kurs içeriği kullanılmıştır. Vahit Keskin’e teşekkürü borç bilirim.

Linkedin’de daha yakından tanışabiliriz :) yaseminderyadilli

--

--

Yasemin Derya Dilli
Yasemin Derya Dilli

Written by Yasemin Derya Dilli

Data Analyst | Engineer | Content Writer

No responses yet