Makine öğrenimine yeni başlayanlar, veri analitiği kütüphanesi Pandas ile karşılaşmışlardır. Makine öğreniminin püf noktalarını anlama telaşıyla, bu kütüphanenin önemini çoğu zaman fark edilmiyor. Ancak kısa süre sonra verilerinizle oynamanız, onları makine öğrenimi modelinize aktarmadan önce temizlemeniz ve veri dönüşümleri gerçekleştirmeniz gereken bir engelle karşılaşacaksınız.
Pandas, çoğu python kütüphanesinin aksine, dik bir öğrenme eğrisine sahiptir. Bunun nedeni, fonksiyonları uygun şekilde uygulamak için verilerinizi iyi anlamanız gerektiğidir. Pandas'ı sözdizimsel olarak öğrenmek sizi bir yere götürmez. Pandas ile ilgili bir başka sorun da, bir şeyleri yapmanın birden fazla yolu olmasıdır.
Kurulum ve Yükleme
Pandas'ın özelliklerini anlamak için koda geçmeden önce, Pandas'ı sisteminize yükleyelim. Sanal bir ortam oluşturmanızı ve Pandas'ı virtualenv içine kurmanızı tavsiye ederim.
Virtualenv oluşturun
Install Pandas
Jupyter Notebook
Pandas'ı öğreniyorsanız, bunun için bir jupyter not defteri kullanmanızı tavsiye ederim. Jupyter not defterlerinde verilerin görselleştirilmesi, her adımda neler olup bittiğini anlamayı kolaylaştırır.
Jupyter varsayılan olarak sistem genelindeki python kurulumunuzda çalışır. Virtualenv'inizde çalıştırmak için bağlantıyı izleyin ve kullanıcı düzeyinde bir kernel oluşturun https://anbasile.github.io/programming/2017/06/25/jupyter-venv/
Yukarıdaki kod parçacıklarının her biri bir kaynaktan veri okur ve Pandas'ın DataFrame adlı dahili veri yapısına yükler
Örnek veri kümemizde, Date_of_purchase string türündedir, bu nedenle ilk adım bunları DateTime türüne dönüştürmek olacaktır.
Tarih, Ay ve Yılı Çıkarma
Şimdi gerçek dünya uygulamalarında, bu istatistiksel fonksiyonların ham kullanımı nadirdir, genellikle verileri belirli parametrelere göre gruplandırmak ve verilerin bir özetini çıkarmak isteyebilirsiniz.
Ülke bazında, ülke ve bölge bazında satışlara baktığımız bir örneğe bakalım.
Pivot Tablonun bir diğer avantajı da istediğiniz kadar boyut ve fonksiyon ekleyebilmenizdir. Ayrıca sizin için genel bir toplam değer hesaplar
Pandas, çoğu python kütüphanesinin aksine, dik bir öğrenme eğrisine sahiptir. Bunun nedeni, fonksiyonları uygun şekilde uygulamak için verilerinizi iyi anlamanız gerektiğidir. Pandas'ı sözdizimsel olarak öğrenmek sizi bir yere götürmez. Pandas ile ilgili bir başka sorun da, bir şeyleri yapmanın birden fazla yolu olmasıdır.
Kurulum ve Yükleme
Pandas'ın özelliklerini anlamak için koda geçmeden önce, Pandas'ı sisteminize yükleyelim. Sanal bir ortam oluşturmanızı ve Pandas'ı virtualenv içine kurmanızı tavsiye ederim.
Virtualenv oluşturun
virtualenv -p python3 venv
source venv/bin/activate
Install Pandas
pip install pandas
Jupyter Notebook
Pandas'ı öğreniyorsanız, bunun için bir jupyter not defteri kullanmanızı tavsiye ederim. Jupyter not defterlerinde verilerin görselleştirilmesi, her adımda neler olup bittiğini anlamayı kolaylaştırır.
pip install jupyter
jupyter notebook
Jupyter varsayılan olarak sistem genelindeki python kurulumunuzda çalışır. Virtualenv'inizde çalıştırmak için bağlantıyı izleyin ve kullanıcı düzeyinde bir kernel oluşturun https://anbasile.github.io/programming/2017/06/25/jupyter-venv/
Örnek Veriler
Basit bir satın alma siparişi verisi oluşturduk. Bir şirketin her bir satış elemanının ülkelerdeki satış verilerini ve her ülkedeki farklı bölgelerdeki şubelerini içerir.Pandas'a veri yükleme
Pandas ile farklı kaynaklardan veri yükleyebiliriz. Bunlardan birkaçı CSV'den veya uzak bir URL'den veya bir veritabanından yüklemedir. Yüklenen veriler DataFrame adı verilen bir Pandas veri yapısında saklanır. DataFrame'ler genellikle df değişken adıyla anılır. Bu nedenle, bundan sonra df'yi her gördüğünüzde onu Dataframe ile ilişkilendirmelisiniz.CSV Dosyasından
import pandas
df = pandas.read\_csv("path\_to\_csv")
Uzak URL'den
read_csv içinde CSV dosyasına uzak bir URL iletebilirsiniz.
import pandas
df = pandas.read\_csv("remote/url/path/pointing/to/csv")
DB'den
Veritabanından okumak için, verileri DB'den bir python listesine okuyun ve bir tane oluşturmak için DataFrame() kullanın
db = # Create DB connection object
cur = db.cursor()
cur.execute("SELECT \* FROM \<TABLE\>")
**df = pd.DataFrame(cur.fetchall())**
Yukarıdaki kod parçacıklarının her biri bir kaynaktan veri okur ve Pandas'ın DataFrame adlı dahili veri yapısına yükler
Verileri Anlamak
Veri çerçevemiz hazır olduğuna göre şimdi onun içinde ne olduğuna bakalım**# 1. size verilerin bir özetini gösterir**
df.head()
**# 2. Verileriniz hakkında bazı istatistiksel bilgiler**
df.describe()
**# 3. Sütun başlıklarının listesi**
df.columns.values
Verilerinizi Seçin
Verilerimizi bir DataFrame'e yüklediğimize ve yapısını anladığımıza göre, şimdi seçelim ve veriler üzerinde görselleştirmeler gerçekleştirelim. Verilerinizi seçmek söz konusu olduğunda, bunu hem Indexes ile hem de belirli koşullara göre yapabilirsiniz. Bu bölümde bu yöntemlerin her birinin üzerinden geçelim.İndeksler
İndeksler, verilerinize başvurmak için kullanılan etiketlerdir. Bu etiketler genellikle sütun başlıklarınızdır. Örneğin, Ülke, Bölge, Miktar vb,Sütunların Seçilmesi
**# 1. Seçilecek sütunların bir listesini oluşturma**
columns\_to\_be\_selected = ["Total", "Quantity", "Country"]
**# 2. DataFrame için bir dizin olarak kullanın**
df[columns\_to\_be\_selected]
**# 3. Loc yönteminin kullanılması**
df.loc[columns\_to\_be\_selected]
Satır Seçme
Sütunların aksine, mevcut DataFrame'imizde satır verilerine başvurmak için kullanabileceğimiz bir etiket yoktur. Ancak diziler gibi DataFrame de varsayılan olarak sayısal indeksleme (0, 1, 2...) sağlar.**# 1. using numerical indexes - iloc**
df.iloc[0:3, :]
**# 2. using labels as index - loc**
row\_index\_to\_select = [0, 1, 4, 5]
df.loc[row\_index\_to\_select]
Satırları Filtreleme
Şimdi, gerçek zamanlı bir senaryoda, büyük olasılıkla satırları bir dizine göre seçmek istemezsiniz. Gerçek hayattaki bir gereksinim, belirli bir koşulu karşılayan satırları filtrelemek olabilir. Veri setimizle ilgili olarak, aşağıdaki koşullardan herhangi birine göre filtreleme yapabiliriz**1. Total sales \> 200000**
df[df["Total"] \> 200000]
**2. Total sales \> 200000 and in UK**
df[(df["Total"] \> 200000) & (df["Country"] == "UK")]
Tarihlerle Oynamak
Tarih alanlarıyla uğraşırken çoğu zaman onları olduğu gibi kullanmayız. Pandas, Tarih/Ay/Yıl'ı yansıtmanızı ve bunun üzerinde işlemler gerçekleştirmenizi gerçekten kolaylaştırırÖrnek veri kümemizde, Date_of_purchase string türündedir, bu nedenle ilk adım bunları DateTime türüne dönüştürmek olacaktır.
\>\>\> type(df['Date of Purchase'].iloc[0])
**str**
Sütunu DateTime Nesnesine Dönüştürme
\>\>\> df['Date of Purchase'] = pd.to\_datetime(df['Date of Purchase'])
\>\>\> type(df['Date of Purchase'].iloc[0])
**pandas.\_libs.tslibs.timestamps.Timestamp**
Tarih, Ay ve Yılı Çıkarma
df['Date of Purchase'].dt.date **# 11-09-2018**
df['Date of Purchase'].dt.day **# 11**
df['Date of Purchase'].dt.month **# 09**
df['Date of Purchase'].dt.year **# 2018**
Gruplama
İstatistiksel işlemler
Bir Dataframe'in bir veya daha fazla sütunu üzerinde min, max, ortalama vb. istatistiksel işlemler gerçekleştirebilirsiniz.df["Total"].sum()
df[["Total", "Quantity"]].mean()
df[["Total", "Quantity"]].min()
df[["Total", "Quantity"]].max()
df[["Total", "Quantity"]].median()
df[["Total", "Quantity"]].mode()
Şimdi gerçek dünya uygulamalarında, bu istatistiksel fonksiyonların ham kullanımı nadirdir, genellikle verileri belirli parametrelere göre gruplandırmak ve verilerin bir özetini çıkarmak isteyebilirsiniz.
Ülke bazında, ülke ve bölge bazında satışlara baktığımız bir örneğe bakalım.
**# 1. Ülke bazında satışlar ve Miktar**
df.groupby("Country").sum()
**# 2. Her ülke ve Bölge üzerinden satış miktarı**
df.groupby(["Country", "Region"])["Quantity"].sum()
**# 3. Birden fazla toplama**
df.groupby(["Country", "Region"]).agg(
{'Total':['sum', 'max'],
'Quantity':'mean'})
Pivot Tablo
Pivot Tablo, boyutları hem satırlar hem de sütunlar üzerinde yığabileceğiniz groupby'nin gelişmiş bir sürümüdür. yani, veriler büyüdükçe yukarıdaki groupby'nin uzunluğu artacak ve içgörü elde etmek zorlaşacaktır, bu nedenle ona bakmanın iyi tanımlanmış bir yolu Pivot tablolar olacaktırimport numpy as np
df.pivot\_table(index=["Country"],
columns=["Region"],
values=["Quantity"],
aggfunc=[np.sum])
Pivot Tablonun bir diğer avantajı da istediğiniz kadar boyut ve fonksiyon ekleyebilmenizdir. Ayrıca sizin için genel bir toplam değer hesaplar
import numpy as np
df.pivot\_table(index=["Country"],
columns=["Region","Requester"],
values=["Quantity"],
aggfunc=[np.sum],
**margins=True,
margins\_name="Grand Total"** )