Python Pandas

Hüseyin

Hüseyin

Üye
Top Poster Of Month
Katılım
21 Ocak 2024
Mesajlar
78
Tepkime puanı
27
Puanları
18
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


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ır

import 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"** )
 
Geri
Üst