NumPy, Python Pandas ve Matplotlib

{Kamil Kaplan} ®
Kodcular
Published in
8 min readFeb 16, 2019

Herkese merhaba
Bu makalemde sizler ile PYTHON kütüphanerli olan NumPy , Pandas ve Matplotlib i inceleyip hakkında örnekler yapacağız. Fazla zaman kaybetmeden başlayalım.

Bu arada yazımı beğenmeyi ve paylaşmayı, bi de beni takip etmeyi unutmayın :)

https://www.mshowto.org/python-ile-veri-analizi-numpy-ve-pandas-kutuphaneleri.html

NumPy

NumPy, Python’ da bilimsel hesaplamalarda kullanılan temel pakettir.
Çok boyutlu diziler (array), çeşitli türetilmiş nesneler (maskelenmiş diziler ve matrisler gibi) ve bir sürü matematiksel , mantıksal, şekil manipülasyonu, sıralama, seçme, ayrık Fourier de dahil olmak üzere diziler üzerinde hızlı işlemler yapmamızı sağlayan Python kütüphanesidir. NumPy kullanılarak istatistik işlemleri ve simülasyonlarda yapılabilir.
-- NumPy dizileri sabit boyutlu olarak oluşturulur. Listede olduğu gibi dinamik olarak sonradan boyut (size) değiştirme işlemi yapılamaz. Eğer oluşturduğunuz dizinin boyutunu değiştirmek isterseniz, bu işlem var olan diziyi siler ve yerine yenisini oluşturur.
-- NumPy dizileri çok sayıda veri üzerinde gelişmiş matematiksel işlemleri ve diğer işlemleri kolaylaştırır. Benzeri işlemler, NumPy paketi kullanmadan daha zor yapılır.
*** NUMPY kütüphanesi genelde ARRAY’lerler yani MATRIX’lerler yapılan matematiksel işlemlerde yada depolamada kullanılır. Ama PANDAS kütüphanesi dataFrame diye tabir ettiğimiz yapılar için olusturulmuş bir kütüphanedir.

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
a = arr.reshape(3,5) # 3 X 5 matrix olusturur.
print(“Shape: “, a.shape) # (3, 5)
print(a)
# array([[ 1, 2, 3, 4, 5],
# [ 6, 7, 8, 9, 10],
# [11, 12, 13, 14, 15]])
liste = [1, 2, 3, 4, 5] # list
array = np.array(liste) # np.array
print(type(liste)) # list
print(type(array)) # numpy.ndarray
liste2 = list(array)
print(liste2) # [1, 2, 3, 4, 5]
d = np.array([1, 2, 3])
e = d.copy()
e[0] = 8
f = d.copy()
print(d, e, f) # [1 2 3] [8 2 3] [1 2 3]

PANDAS

Pandas; veri analizi ve veri ön işlemeyi kolaylaştıran açık kaynak kodlu bir kütüphanedir. Dil olarak Python kullanır. Pandas dağıtık işlemeye uygun değildir. Bu sebeple işleyeceğiniz verinin büyüklüğü makinenin kapasitesiyle sınırlıdır, özellikle de ana belleğin. Ben büyük veri setleri üzerinde işlem yaptığım için Pandas’ı çok fazla kullanamıyorum ancak bazı ufak tefek işleri yapıyorum yine de. Bu yazımda Pandas ile temel olarak neler yapılabilir, daha doğrusu ben çoğunlukla neler yapıyorum sizlerle paylaşacağım.
-- PANDAS hizli ve etkili dataframe’leri kullanmak için bir kütüphanedir.
-- Dosyalar arası geçişler çok kolaydır.
-- csv ve text dosyalarını açıp inceleyip sonuclarımıza bu dosya tiplerine rahat bir şekilde kaydedilir.
-- PANDAS kayıp veriler(missing datas) için bizim isimizi kolaylastırıyor
-- reshape yapıp datayı daha etkili bir sekilde kullanabiliriz.
-- slicing indexing kolay
-- time series data analizinde çok yardımcı
-- ayrıca herseyden önemlisi hız, pandas hız açısından optimize edilmis hizli bir kütüphane

import pandas as pd # PANDAS İŞLEMLERİ İÇİN KÜTÜPHANE DAHİL ET
dictionary = {
“name”: [“ali”, “veli”, “kamil”, “bayram”, “serkan”, “umut”],
“age” : [15, 16, 18, 38, 40, 66],
“pay” : [100, 150, 500, 250, 300, 200] }
dataFrame1 = pd.DataFrame(dictionary)
head = dataFrame1.head() # ilk 5 elemanı verir ‘istege bağlı olarak head() fonk. içine istediğiniz kadarınıda alabilir.’
print(head)
tail = dataFrame1.tail() # son 5 elemanı verir ‘istege bağlı olarak tail() fonk. içine istediğiniz kadarınıda alabilir.’
print(tail)
print(dataFrame1.columns) # Index([‘name’, ‘age’, ‘pay’], dtype=’object’)
print(dataFrame1[“age”]) # veya
print(dataFrame1.age)
# 0 15
# 1 16
# 2 24
# 3 38
# 4 40
# 5 27
# Name: age, dtype: int64
print(dataFrame1.dtypes) # dataFrame1'in sütunlarının veri tiplerini verir.
dataFrame1
[“yeni sutun”] = [-1, -2, -3, -4, -5, -6]
print(dataFrame1)
filtre1 = dataFrame1.pay > 200
filtrelenmisData = dataFrame1[filtre1]
print(filtrelenmisData2)
filtre2 = dataFrame1.age < 20
filtrelenmisData2 = dataFrame1[filtre1 & filtre2]
print(filtrelenmisData2)
ortalama_maas = dataFrame1.pay.mean()
print(ortalama_maas) # 250
dataFrame1[“maasSeviyesi”] = [“dusuk” if ortalama_maas > each else “yuksek” for each in dataFrame1.pay]
print(dataFrame1)
print(dataFrame1.columns) 
# Index([‘name’, ‘age’, ‘pay’, ‘yeni sutun’, ‘maasSeviyesi’], dtype=’object’)
dataFrame1.columns = [ each.upper() for each in dataFrame1.columns]
print(dataFrame1)
dataFrame1.columns = [ each.split()[0] + “_” + each.split()[1] if(len(each.split()) > 1) else each for each in dataFrame1.columns ]
print(dataFrame1)

Visualization with Matplotlib

Şimdi Python’da görselleştirme için Matplotlib paketine derinlemesine bakacağız. Matplotlib, NumPy dizileri üzerine kurulu ve daha geniş SciPy yığınıyla çalışmak üzere tasarlanmış çok platformlu bir veri görselleştirme kütüphanesidir.

MATLAB tarzı çizim yapılmasını sağlamak için IPython’a bir yama olarak tasarlandı. Matplotlib’in en önemli özelliklerinden biri, birçok işletim sistemi ve grafik arka ucuyla iyi oynaması. Matplotlib düzinelerce arka ucu ve çıktı türünü destekler; bu, hangi işletim sistemini kullandığınızdan veya hangi çıktı biçiminden istediğinizden bağımsız olarak çalışmaya güvenebileceğiniz anlamına gelir. Bu çapraz platform, herkese her şey yaklaşımı, Matplotlib’in en güçlü yönlerinden biri olmuştur. Aktif bir geliştirici üssüne ve Matplotlib’in bilimsel Python dünyasındaki güçlü araçlarına ve yaygınlığına yol açan büyük bir kullanıcı tabanına yol açtı.

  • Bu bölümde PANDAS kütüphanesi ile elde ettiğimiz dataFrame ‘ i görselleştirmeyi öğreneceğiz. Görselleştirme yaparken PYTHON ’ ın en temel kütüphanelerinden biri olan Matplotlib kütüphanesini kullanacağız
  • matploit kütüphanesi
    görselleştirme kütüphanesi
    line plot, scatter plot, bar plot, subplots, histogram
import pandas as pd
df = pd.read_csv(“iris.csv”) # elimizdeki veriSetini okuyoruz.
print(df.columns, “\n”) # verSetimizeki satırları göstermek için kullanılır.
# [‘Id’, ‘SepalLengthCm’, ‘SepalWidthCm’, ‘PetalLengthCm’, ‘PetalWidthCm’, ‘Species’]
print(df.Species.unique(), “\n”) # Türlerden ‘benzersiz’ olanları göstermek
# [‘Iris-setosa’, ‘Iris-versicolor’, ‘Iris-virginica’]
print(df.info(), “\n”) # veriSetimiz hakkında genel bilgilendirme verir.
# <class ‘pandas.core.frame.DataFrame’>
# RangeIndex: 150 entries, 0 to 149
# Data columns (total 6 columns):
# Id 150 non-null int64
# SepalLengthCm 150 non-null float64
# SepalWidthCm 150 non-null float64
# PetalLengthCm 150 non-null float64
# PetalWidthCm 150 non-null float64
# Species 150 non-null object
# dtypes: float64(4), int64(1), object(1)
# memory usage: 7.1+ KB
print(df.describe(), “\n”) # sadece sayısal verilerin özelliklerini görmeksetosa = df[df.Species == “Iris-setosa”]
versicolor = df[df.Species == “Iris-versicolor”]
virginica = df[df.Species == “Iris-virginica”]
print(setosa.describe(), “\n”)
print(versicolor.describe(), “\n”)
print(virginica.describe(), “\n”)

1. LINE PLOT ( GÖRSELLEŞTİRME YÖNTEMİ )

import matplotlib.pyplot as plt 
# Görselleştirmek için matplotlib kütüphanesini dahil ettik.
df1 = df.drop([“Id”],axis = 1)
# axis = 0
-- sütunları belirtmek için kullanılır.
# axis = 1
-- satırları belirtmek için kullanılır.
#
Id değeri bizim işimize yaramayacağı için siliyoruz.
df1.plot() # görseleştirme yöntemlerinden biridir.
plt.show() # HER ZAMAN GEREKLİ ‘ görselleştirilen verinin gösterilmesi ‘

Yukarıdaki resimde dikkat ederseniz tür geçişlerini görme imkanınız vardır. Satırdaki değerlerden 50 ve 100 değerinde tür geçişi vardır. Gözle görülebilecek şekilde bir ayrım yapabiliriz. Ama hangi tür geçişi olduğunu bir sonraki örnekte anlayacağız.

setosa = df[df.Species == “Iris-setosa”]
versicolor = df[df.Species == “Iris-versicolor”]
virginica = df[df.Species == “Iris-virginica”]
# plt.plot(x,y) ‘ÖRNEK KULLANIM’ bundan sonraki parametreleri isteğe bağlı
plt.plot(setosa.Id,setosa.PetalLengthCm, color = “red”, label = “setosa”)
plt.plot(versicolor.Id,versicolor.PetalLengthCm, color = “green”,
label = “versicolor”)
plt.plot(virginica.Id,virginica.PetalLengthCm, color = “blue”,
label = “virginica”)
plt.xlabel(“Id”)
plt.ylabel(“PetalLengthCm”)
plt.legend() # label değeri ekranda gözükmesi için kullanılı.
plt.show() # FIGURE 1'i gösterir
df1.plot(grid = True, linestyle = ‘:’, alpha = 0.5)
# ‘grid’ çetvel sistemini aktif eder
# ‘linestyle’ görünümü .. şekline veya _ şeklinde gösterir
# ‘alpha’ bizim line’larımızın saydamlığını arttırmak için kullanılır.
plt.show() # FIGURE 2'yi gösterir

2. SCATTER PLOT ( GÖRSELLEŞTİRME YÖNTEMİ )

  • İki tane Column’u karşılaştırmak için kullanılır.
setosa = df[df.Species == “Iris-setosa”]
versicolor = df[df.Species == “Iris-versicolor”]
virginica = df[df.Species == “Iris-virginica”]
plt.scatter(setosa.PetalLengthCm, setosa.PetalWidthCm,
color = “red”, label = “setosa” )
plt.scatter(versicolor.PetalLengthCm, versicolor.PetalWidthCm,
color = “green”, label = “versicolor” )
plt.scatter(virginica.PetalLengthCm, virginica.PetalWidthCm,
color = “blue”, label = “virginica” )
plt.legend()
plt.xlabel(“PetalLengthCm”)
plt.ylabel(“PetalWidthCm”)
plt.title(“SCATTER Plot”) # FIGURE’ın başlığı
plt.show()

3. HISTOGRAM PLOT ( GÖRSELLEŞTİRME YÖNTEMİ )

  • istatistiksel anlamda blgi elde edebilmek için önemli bir PLOT’tur.
  • öğrenilmek istenen column’da yani satıda oradaki değerlerden kaç adet olduğunu bize verir.
plt.hist(setosa.PetalLengthCm, bins = 10) # ‘bins’ verilen barların sayısı
plt.xlabel(“PetalLengthCm Values”)
plt.ylabel(“Frekans”)
plt.title(“HISTOGRAM Plot”)
plt.show()

4. BAR PLOT ( GÖRSELLEŞTİRME YÖNTEMİ )

  • Şimdiye kadar tüm matplot kütüphanesiyle PANDAS frame’ini kullanarak görselleştirme yaptık.
  • Bu görselleştirmeleri NUMPY ile deyapabilirdik. Sıradaki örneğimiz NUMP ile yapacağız.
  • Ülkerlerin gelirlerini hesaplarken kullanabilirz.
import numpy as npx = np.array([1,2,3,4,5,6,7])
y = x*2+5
plt.bar(x,y, label = “y = x*2+5”)
plt.legend()
plt.title(“BAR Plot”)
plt.xlabel(“X”)
plt.ylabel(“Y”)
plt.show()
x = np.array([1,2,3,4,5,6,7])
country = [“a”,”b”,”c”,”d”,”e”,”f”,”g”]
y = x*2 + ( x / 3)
plt.bar(country, y, label = “Ülkelerin Yıllık Geliri (y = x*2 + ( x / 3))”)
plt.legend()
plt.title(“BAR Plot”)
plt.xlabel(“Ülkeler”)
plt.ylabel(“Yıllık Gelir”)
plt.show()

5. SUBPLOTS ( GÖRSELLEŞTİRME YÖNTEMİ )

  • aynı çerçeve içerisinde farklı farklı plotlara çizdirmeye denir.
import pandas as pd
df = pd.read_csv(“iris.csv”)
import matplotlib.pyplot as plt
# Görselleştirmek için matplotlib kütüphanesini dahil ettik.
df1 = df.drop([“Id”],axis = 1)
df1.plot(subplots = True)
plt.legend()
plt.show()
import matplotlib.pyplot as pltsetosa = df[df.Species == “Iris-setosa”]
versicolor = df[df.Species == “Iris-versicolor”]
virginica = df[df.Species == “Iris-virginica”]
plt.subplot(3,1,1)
plt.plot(setosa.Id, setosa.PetalLengthCm,
color = “red”, label = “setosa”)
plt.ylabel(“setosa — PetalLengthCm”)
plt.subplot(3,1,2)
plt.plot(versicolor.Id, versicolor.PetalLengthCm,
color = “green”, label = “versicolor”)
plt.ylabel(“versicolor — PetalLengthCm”)
plt.subplot(3,1,3)
plt.plot(virginica.Id,virginica.PetalLengthCm,
color = “blue”, label = “virginica”)
plt.ylabel(“virginica — PetalLengthCm”)
plt.show()

NumPy, Pandas ve Matplotlib hakkında yazmaya çalıştığım maklenin sonuna gelmiş bulunmaktayız. Umarım faydalı olmutur. Diğer makalelerimide okumanız dileyiğle iyi çalışmalar.

Umarım faydalı bir yazı olmuştur. Herkese mutlu kodlamalar.
KAMİL KAPLAN ( Software Engineer)

Bir sonraki makalede görüşmek ümidi ile sağlıcakla kalın.

--

--