Pandas Nedir? Python Pandas Kütüphanesinin Kullanımı
Pandas, Python programlama dilinde veri işleme ve veri analizi için kullanılan güçlü bir kütüphanedir. Pandas DataFrame yapısı sayesinde Python'da veri temizleme, filtreleme, gruplama ve veri manipülasyonu gibi işlemler verimli bir şekilde yapılabilmektedir.

Erdoğancan Yüksel
13 dakika 18 saniye okuma süresi

Pandas Nedir? Python Pandas Kütüphanesinin Kullanımı

Erdoğancan Yüksel
13 dakika 18 saniye okuma süresi
Pandas, Python programlama dilinde veri işleme ve veri analizi için kullanılan güçlü bir kütüphanedir. Pandas DataFrame yapısı sayesinde Python'da veri temizleme, filtreleme, gruplama ve veri manipülasyonu gibi işlemler verimli bir şekilde yapılabilmektedir.

Pandas Nedir?
Pandas, veri analizi ve veri işleme için yaygın olarak kullanılan verimli bir Python kütüphanesidir. Pandas (Panel Data) çok boyutlu veri yapılarını işlemek ve verilerin manipülasyonu için kullanılmaktadır. Pandas'da temel olarak Series ve DataFrame olarak adlandırılan iki ana veri yapısı bulunmaktadır. İlgili veri yapıları kullanılarak verilerin analizleri daha basit ve hızlı yapılabilmektedir. Bu özelliklerinden dolayı Pandas önemli bir Python kütüphanesidir.
Pandas'da dtypes olarak adlandırılan veri türleri şu şekilde sıralanabilir:
- int64: Tamsayılar için kullanılır.
- float64: Ondalıklı sayılar için kullanılır.
- bool: True veya False değeri alır.
- object: Nesne türüdür ve karışık veri tipleri için kullanılır.
- category: Kategorik veri türüdür. Belirli metin değerleri içeren sınırlı listeler için kullanılır. İlgili değerler hafızada daha verimli bir şekilde saklanır.
- datetime64: Tarih ve saat değerleri için kullanılır.
- timedelta64[ns]: İki tarih veya saat arasındaki süreyi temsil etmek için kullanılır.
- string: Metin veri türüdür.
Kod örneği:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000.0, 60000.5, 70000.3],
'Is_Manager': [True, False, False],
'Start_Date': ['2020-01-15', '2019-06-01', '2018-03-20'],
'Title': ['Manager', 'Assistant', 'Intern']
}
# DataFrame'in oluşturulması ve veri türlerinin ayarlanması
df = pd.DataFrame(data)
df['Start_Date'] = pd.to_datetime(df['Start_Date']) # Start_Date sütununun datetime64[ns] türüne dönüştürülmesi
df['Title'] = df['Title'].astype('category') # Title sütununun category veri türüne dönüştürülmesi
# Output:
print(df.dtypes)
# Output:
Name object
Age int64
Salary float64
Is_Manager bool
Start_Date datetime64[ns]
Title category
Pandas Kurulumu
Komut sistemini açtıktan sonra ve aşağıdaki kodu komut satırına yazıyoruz. Kurulumun sağlanması için bilgisayarda Python'ın yüklü olması gerekmektedir.
pip install pandas
Eğer bilgisayarda Anaconda yüklü ise ve Pandas kütüphanesi burada kullanılmak isteniyor ise aşağıdaki komut Anaconda Prompt üzerinden çalıştırılmalıdır.
conda install pandas
Pandas Kütüphanesinin Tanımlanması
Pandas kütüphanesi Python projelerinde aşağıdaki şekilde tanımlanabilmektedir:
import pandas
Diğer bir tanımlama şekli de en yaygın şekilde kullanılan pd takma adı ile tanımlanmasıdır:
import pandas as pd
Pandas Series
Python'daki listelerle veya NumPy dizilerine benzer işlev sağlamaktadır. Series, veri ve indeks olmak üzere iki bileşenden oluşmaktadır. Veriler int, string, boolean, datetime veya object gibi veri türlerinden oluşmaktadır. Indeks ise bu verilere referans vermek için kullanılmaktadır.
Pandas Series oluşturmak için Series() fonksiyonu kullanılmaktadır. Pandas Series, veri analizi ve işleme işlemlerinde yaygın olarak kullanılmaktadır ve güçlü bir araçtır.
Kod örneği:
import pandas as pd
dictionaryDatExample = {'User-1': ['Active', '2024-01-15'], 'User-2': ['Passive', '2020-01-15']}
pd.Series(dictionaryDatExample)
# Output:
User-1 [Active, 2024-01-15]
User-2 [Passive, 2020-01-15]
dtype: object
dataList = [10, 20, 30, 40, 50]
pd.Series(dataList)
# Index belirtilmeyen durumda otomatik olarak her bir veriye index ataması yapılır.
# Output:
0 10
1 20
2 30
3 40
4 50
dtype: int64
# Özelleştirilmiş index ataması yapmak için index = parametresi kullanılır.
pd.Series(dataList, index= ['Ahmet', 'Mehmet', 'Can', 'Barış', 'Haktan'])
# Output:
Ahmet 10
Mehmet 20
Can 30
Barış 40
Haktan 50
dtype: int64
# Serilerde matematiksel işlemler
data1 = pd.Series([20, 30, 40, 50], index=['a', 'b', 'c', 'd'])
data2 = pd.Series([10, 5, 3, 1], index=['a', 'c', 'f', 'g'])
data1 + 2
# Output:
a 22
b 32
c 42
d 52
dtype: int64
# Eksik veriler için ilgili değer NaN olarak atanır.
data1 + data2
# Output:
a 30.0
b NaN
c 45.0
d NaN
f NaN
g NaN
dtype: float64
Pandas DataFrame
Pandas DataFrame, Pandas kütüphanesinde veri tablolarını temsil etmektedir. Çok sayıda satır ve sütunlardan oluşan iki boyutlu bir veri yapısıdır. DataFrame'ler farklı veri tiplerini içerebilmektedir ve her bir veri bir satır ve sütun indeksi ile ilişkilendirilmektedir.
DataFrame'ler üzerinde veri manipülasyonu, verilerin analizi ve veriler üzerinde işlemler yapmak oldukça kolay hale gelmektedir.
Kod örneği:
import pandas as pd
import numpy as np
data = np.random.randn(4,3)
data
# NumPy yardımı ile 4 satır ve 3 kolondan oluşan bir data oluşturuldu.
# Output:
array([[-0.13941637, -0.50907718, -1.67464985],
[ 0.94756765, 1.03262129, -0.62721243],
[ 0.51653947, 0.31042099, -0.02915932],
[-0.9138679 , -0.51386815, -0.92682456]])
# DataFrame oluşturmak için pd.DataFrame fonksiyonu kullanılmaktadır. (Index ve kolonlar otomatik oluşturuldu.)
dataFrame = pd.DataFrame(data)
dataFrame
# Output:
0 1 2
0 -0.139416 -0.509077 -1.674650
1 0.947568 1.032621 -0.627212
2 0.516539 0.310421 -0.029159
3 -0.913868 -0.513868 -0.926825
# Belirli bir kolon ve satırdan data'yı kullanmak için
dataFrame[0][3] # 0 -> kolon, 3 -> satır
# Output:
np.float64(-0.9138679020426379)
# Index ve kolonların belirlendiği durumda DataFrame oluşturma
dataFrame2 = pd.DataFrame(data, index=['Can', 'Emre', 'Barış', 'Haktan'], columns=['Maas', 'Yas', 'Calisma Saati'])
dataFrame2
# Output:
Maas Yas Calisma Saati
Can -0.139416 -0.509077 -1.674650
Emre 0.947568 1.032621 -0.627212
Barış 0.516539 0.310421 -0.029159
Haktan -0.913868 -0.513868 -0.926825
Pandas DataFrame'lerde satır ve sütunlarda işlemler için kod örnekleri:
import pandas as pd
import numpy as np
data = np.random.randn(4,3)
#index ve kolonların belirlendiği durumda DataFrame oluşturma
df = pd.DataFrame(data, index = ['Can', 'Emre', 'Barış', 'Haktan'], columns = ['Maas', 'Yas', 'Calisma Saati'])
df
# Output:
Maas Yas Calisma Saati
Can -0.139416 -0.509077 -1.674650
Emre 0.947568 1.032621 -0.627212
Barış 0.516539 0.310421 -0.029159
Haktan -0.913868 -0.513868 -0.926825
# Kolon bilgisi için
dataFrame2['Yas']
# Output:
Can -0.509077
Emre 1.032621
Barış 0.310421
Haktan -0.513868
Name: Yas, dtype: float64
# Satır bilgisi için .loc kullanılmaktadır.
dataFrame2.loc['Can']
# Output:
Maas -0.139416
Yas -0.509077
Calisma Saati -1.674650
Name: Can, dtype: float64
# DataFrame'e yeni kolon eklenmesi
df['Mesai Saati'] = [6,6,8,8]
df
# Output:
Maas Yas Calisma Saati Mesai Saati
Can -0.139416 -0.509077 -1.674650 6
Emre 0.947568 1.032621 -0.627212 6
Barış 0.516539 0.310421 -0.029159 8
Haktan -0.913868 -0.513868 -0.926825 8
# Satır silmek için drop fonksiyonu kullanılır.
df.drop('Can')
# Output:
Maas Yas Calisma Saati Mesai Saati
Emre 0.947568 1.032621 -0.627212 6
Barış 0.516539 0.310421 -0.029159 8
Haktan -0.913868 -0.513868 -0.926825 8
# Sütun silmek için drop fonksiyonu axis=1 belirtilerek kullanılır.
df.drop('Mesai Saati', axis=1)
# Output:
Maas Yas Calisma Saati
Can -0.139416 -0.509077 -1.674650
Emre 0.947568 1.032621 -0.627212
Barış 0.516539 0.310421 -0.029159
Haktan -0.913868 -0.513868 -0.926825
# inplace=True yapılmadığı durumda orijinal DataFrame'den eleman kalıcı olarak silinmez. Kalıcı silmek için True yapılmaktadır.
df.drop('Mesai Saati', axis=1, inplace=True)
df
# Output:
Maas Yas Calisma Saati
Can -0.139416 -0.509077 -1.674650
Emre 0.947568 1.032621 -0.627212
Barış 0.516539 0.310421 -0.029159
Haktan -0.913868 -0.513868 -0.926825
# Şartlı DataFrame gösteriminde şartı sağlamayan değerler NaN olarak dönmektedir.
df[df < 0]
# Output:
Maas Yas Calisma Saati
Can -0.139416 -0.509077 -1.674650
Emre NaN NaN -0.627212
Barış NaN NaN -0.029159
Haktan -0.913868 -0.513868 -0.926825
# Index kolonunu güncellemek için set_index() fonksiyonu kullanılır.
df['Yeni Index'] = ['C','E','B','H']
df
# Output:
Maas Yas Calisma Saati Yeni Index
Can -0.139416 -0.509077 -1.674650 C
Emre 0.947568 1.032621 -0.627212 E
Barış 0.516539 0.310421 -0.029159 B
Haktan -0.913868 -0.513868 -0.926825 H
df.set_index('Yeni Index')
# Output:
Maas Yas Calisma Saati
Yeni Index
C -0.139416 -0.509077 -1.674650
E 0.947568 1.032621 -0.627212
B 0.516539 0.310421 -0.029159
H -0.913868 -0.513868 -0.926825
# Index'i resetlemek için reset_index() fonksiyonu kullanılır.
df.reset_index()
# Output:
index Maas Yas Calisma Saati
0 Can -0.139416 -0.509077 -1.674650
1 Emre 0.947568 1.032621 -0.627212
2 Barış 0.516539 0.310421 -0.029159
3 Haktan -0.913868 -0.513868 -0.926825
Pandas MultiIndex
MultiIndex çok boyutlu veriler ile çalışmak ve ilgili verilerin manipülasyonu için yaygın olarak kullanılmaktadır. MultiIndex, bir DataFrame veya Series'in çok boyutlu olarak indekslenmesini ifade etmektedir. MultiIndex kod örneği:
import pandas as pd
import numpy as np
arrays = [["fruit","fruit","fruit","vegetable","vegetable","vegetable"],["apple","orange","banana","cabbage","carrot","bean"]]
# Output:
[['fruit', 'fruit', 'fruit', 'vegetable', 'vegetable', 'vegetable'], ['apple', 'orange', 'banana', 'cabbage', 'carrot', 'bean']]
tuples = list(zip(*arrays)) # İlgili array'lerin birleştirilmesi
# Output:
[('fruit', 'apple'), ('fruit', 'orange'), ('fruit', 'banana'), ('vegetable', 'cabbage'), ('vegetable', 'carrot'), ('vegetable', 'bean')]
index = pd.MultiIndex.from_tuples(tuples, names = ["first","second"]) # names -> Kolonlara verilen isimlerdir.
# Output:
MultiIndex([( 'fruit', 'apple'),
( 'fruit', 'orange'),
( 'fruit', 'banana'),
('vegetable', 'cabbage'),
('vegetable', 'carrot'),
('vegetable', 'bean')],
names=['first', 'second'])
dataFrame = pd.DataFrame(np.random.randint(1,18,6), index = index, columns = ["Adet"])
# Output:
Adet
first second
fruit apple 12
orange 12
banana 16
vegetable cabbage 3
carrot 6
bean 14
Pandas dropna() ve fillna() Fonksiyonları
dropna() fonksiyonu DataFrame veya Series'lerde eksik verileri(NaN değerler) kaldırmak için kullanılır. axis = 0 eksik veri bulunan satırları kaldırmak için kullanılırken, axis = 1 eksik veri bulunan sütunları kaldırmak için kullanılır. how = 'any' en az bir adet NaN içeren veriler kaldırılır. how = 'all' ise tüm değerleri NaN olan veriler kaldırılır.
fillna() fonksiyonu eksik verileri belirlenen bir değer doğrultusunda doldurmak için kullanılmaktadır.
dropna() ve fillna() fonksiyonlarının kullanımları ile ilgili kod örneği:
import pandas as pd
import numpy as np
dicData = {"Istanbul": [30,26,28,np.nan], "Ankara": [24, np.nan, 27,29], "Izmir": [40,38,np.nan,41],"Bursa":[30,28,26,26]}
dicData
Output:
{'Istanbul': [30, 26, 28, nan], 'Ankara': [24, nan, 27, 29], 'Izmir': [40, 38, nan, 41], 'Bursa': [30, 28, 26, 26]}
#Data'ların DataFrame'e dönüştürülmesi
df = pd.DataFrame(dicData)
df
Output:
Istanbul Ankara Izmir Bursa
0 30.0 24.0 40.0 30
1 26.0 NaN 38.0 28
2 28.0 27.0 NaN 26
3 NaN 29.0 41.0 26
days = ["Pazartesi","Sali","Carsamba","Persembe"]
df["Gunler"] = days
df.set_index("Gunler")
Output:
Istanbul Ankara Izmir Bursa
Gunler
Pazartesi 30.0 24.0 40.0 30
Sali 26.0 NaN 38.0 28
Carsamba 28.0 27.0 NaN 26
Persembe NaN 29.0 41.0 26
#NaN değer bulunan satırlar silinir.
df.dropna()
Output:
Istanbul Ankara Izmir Bursa Gunler
0 30.0 24.0 40.0 30 Pazartesi
#axis = 1 yapıldığında NaN bulunan sütunlar silinir.
df.dropna(axis = 1)
Output:
Bursa Gunler
0 30 Pazartesi
1 28 Sali
2 26 Carsamba
3 26 Persembe
dicData2 = {"Istanbul": [30,26,28,np.nan], "Ankara": [24, np.nan, 27,29], "Izmir": [40,38,np.nan,41],"Bursa":[30,28,26,26],"Balıkesir": [np.nan, 42, np.nan, 45], "Antalya": [np.nan,np.nan,np.nan,np.nan]}
dicData2
Output:
{'Istanbul': [30, 26, 28, nan], 'Ankara': [24, nan, 27, 29], 'Izmir': [40, 38, nan, 41], 'Bursa': [30, 28, 26, 26], 'Balıkesir': [nan, 42, nan, 45], 'Antalya': [nan, nan, nan, nan]}
df2 = pd.DataFrame(dicData2)
df2
Output:
Istanbul Ankara Izmir Bursa Balıkesir Antalya
0 30.0 24.0 40.0 30 NaN NaN
1 26.0 NaN 38.0 28 42.0 NaN
2 28.0 27.0 NaN 26 NaN NaN
3 NaN 29.0 41.0 26 45.0 NaN
days = ["Pazartesi","Sali","Carsamba","Persembe"]
df2["Gunler"] = days
df2.set_index("Gunler")
Output:
Istanbul Ankara Izmir Bursa Balıkesir Antalya
Gunler
Pazartesi 30.0 24.0 40.0 30 NaN NaN
Sali 26.0 NaN 38.0 28 42.0 NaN
Carsamba 28.0 27.0 NaN 26 NaN NaN
Persembe NaN 29.0 41.0 26 45.0 NaN
#Tüm satırlarda NaN değerler olduğu için boş DataFrame geri döndürülür.
df2.dropna()
Output:
Empty DataFrame
Columns: [Istanbul, Ankara, Izmir, Bursa, Balıkesir, Antalya, Gunler]
Index: []
#En az bir adet any bulunan satırları siler. Yukarıdaki işlem ile aynıdır.
df2.dropna(how = 'any')
Output:
Empty DataFrame
Columns: [Istanbul, Ankara, Izmir, Bursa, Balıkesir, Antalya, Gunler]
Index: []
#Tüm satırları NaN olan değerleri siler.
df2.dropna(how = 'all')
Output:
Istanbul Ankara Izmir Bursa Balıkesir Antalya Gunler
0 30.0 24.0 40.0 30 NaN NaN Pazartesi
1 26.0 NaN 38.0 28 42.0 NaN Sali
2 28.0 27.0 NaN 26 NaN NaN Carsamba
3 NaN 29.0 41.0 26 45.0 NaN Persembe
#Tüm değerleri NaN olan sütunu siler
df2.dropna(axis = 1, how = 'all')
Output:
Istanbul Ankara Izmir Bursa Balıkesir Gunler
0 30.0 24.0 40.0 30 NaN Pazartesi
1 26.0 NaN 38.0 28 42.0 Sali
2 28.0 27.0 NaN 26 NaN Carsamba
3 NaN 29.0 41.0 26 45.0 Persembe
#NaN değerler value'ye atanan değer ile doldurulur.
df2.fillna(value = 20)
Output:
Istanbul Ankara Izmir Bursa Balıkesir Antalya Gunler
0 30.0 24.0 40.0 30 20.0 20.0 Pazartesi
1 26.0 20.0 38.0 28 42.0 20.0 Sali
2 28.0 27.0 20.0 26 20.0 20.0 Carsamba
3 20.0 29.0 41.0 26 45.0 20.0 Persembe
Pandas groupby() Fonksiyonu
groupby() fonksiyonu veri setini seçilen belirli bir sütuna göre gruplandırmayı sağlamaktadır. Gruplama işleminden sonra ilgili veri grubu üzerinde max(), min(), count() ve mean() gibi aggregation işlemleri yapılabilir. Kod örneği:
import pandas as pd
import numpy as np
dic = {"Departman": ["Yazılım","Yazılım","Pazarlama","Pazarlama", "Hukuk","Hukuk"],
"Calisan Ismi": ["Ahmet","Mehmet","Can","Burak","Zeynep","Barış"],
"Maas": [100,150,200,300,400,500]}
dataFrame = pd.DataFrame(dic)
dataFrame
# Output:
Departman Calisan Ismi Maas
0 Yazılım Ahmet 100
1 Yazılım Mehmet 150
2 Pazarlama Can 200
3 Pazarlama Burak 300
4 Hukuk Zeynep 400
5 Hukuk Barış 500
groupObject = dataFrame.groupby("Departman") #Hangi kolona göre gruplandıracağımızı seçiyoruz
#Veri setindeki eleman sayısı için count() kullanılır.
groupObject.count()
# Output:
Calisan Ismi Maas
Departman
Hukuk 2 2
Pazarlama 2 2
Yazılım 2 2
#Veri setindeki kolonun ortalaması için mean() kullanılır.
groupObject.mean(numeric_only = True)
# Output:
Maas
Departman
Hukuk 450.0
Pazarlama 250.0
Yazılım 125.0
#Veri setindeki minimum değerin gösterimi için min() kullanılır.
groupObject = dataFrame.groupby("Departman")["Maas"].min()
groupObject
# Output:
Departman
Hukuk 400
Pazarlama 200
Yazılım 100
Name: Maas, dtype: int64
min_maas_df = dataFrame.loc[dataFrame.groupby("Departman")["Maas"].idxmin()]
min_maas_df
# Output:
Departman Calisan Ismi Maas
4 Hukuk Zeynep 400
2 Pazarlama Can 200
0 Yazılım Ahmet 100
#Veri setindeki maksimum değerin gösterimi için max() kullanılır.
groupObject = dataFrame.groupby("Departman")["Maas"].max()
groupObject
# Output:
Departman
Hukuk 500
Pazarlama 300
Yazılım 150
Name: Maas, dtype: int64
max_maas_df = dataFrame.loc[dataFrame.groupby("Departman")["Maas"].idxmax()]
max_maas_df
# Output:
Departman Calisan Ismi Maas
5 Hukuk Barış 500
3 Pazarlama Burak 300
1 Yazılım Mehmet 150
Pandas describe() Fonksiyonu
describe() fonksiyonu veri setinin temel istatistiksel özelliklerini vermektedir. Bu özellikler: count, mean(ortalama), std(standart sapma), min(minimum), max(maksimum), yüzde 25, 50 ve 75'lik dilimlerini içermektedir. Kod örneği:
import pandas as pd
import numpy as np
dic = {"Departman": ["Yazılım","Yazılım","Pazarlama","Pazarlama", "Hukuk","Hukuk"],
"Calisan Ismi": ["Ahmet","Mehmet","Can","Burak","Zeynep","Barış"],
"Maas": [100,150,200,300,400,500]}
dataFrame = pd.DataFrame(dic)
dataFrame
# Output:
Departman Calisan Ismi Maas
0 Yazılım Ahmet 100
1 Yazılım Mehmet 150
2 Pazarlama Can 200
3 Pazarlama Burak 300
4 Hukuk Zeynep 400
5 Hukuk Barış 500
# DataFrame'deki 'Maas' sütununun betimsel istatistikleri
dataFrame["Maas"].describe()
# Output:
count 6.00000
mean 275.00000
std 154.11035
min 100.00000
25% 162.50000
50% 250.00000
75% 375.00000
max 500.00000
Name: Maas, dtype: float64
Pandas concat() Fonksiyonu
concat() fonksiyonu Pandas DataFrame veya Series'leri bir eksen boyunca(satır veya sütun) birleştirmektedir. Sütun bazında birleştirme yan yana yapılırken, satır bazında birleştirme üst üste yapılmaktadır. Kod örneği:
import pandas as pd
import numpy as np
dic1 = {"Isim": ["Ahmet","Mehmet","Zeynep","Can"],
"Spor": ["Koşu", "Yüzme","Koşu","Basketbol"],
"Kalori": [100,200,300,400]}
df1 = pd.DataFrame(dic1, index = [0,1,2,3])
df1
# Output:
Isim Spor Kalori
0 Ahmet Koşu 100
1 Mehmet Yüzme 200
2 Zeynep Koşu 300
3 Can Basketbol 400
dic2 = {"Isim": ["Osman","Levent","Atlas","Fatma"],
"Spor": ["Koşu", "Yüzme","Koşu","Basketbol"],
"Kalori": [200,100,50,300]}
df2 = pd.DataFrame(dic2, index = [4,5,6,7])
df2
# Output:
Isim Spor Kalori
4 Osman Koşu 200
5 Levent Yüzme 100
6 Atlas Koşu 50
7 Fatma Basketbol 300
dic3 = {"Isim": ["Ayşe","Mahmut","Duygu","Emre"],
"Spor": ["Koşu", "Yüzme","Badminton","Tenis"],
"Kalori": [300,400,500,250]}
df3 = pd.DataFrame(dic3, index = [8,9,10,11])
df3
# Output:
Isim Spor Kalori
8 Ayşe Koşu 300
9 Mahmut Yüzme 400
10 Duygu Badminton 500
11 Emre Tenis 250
pd.concat([df1,df2,df3], axis = 0) #Satırların birleştirilmesi
# Output:
Isim Spor Kalori
0 Ahmet Koşu 100
1 Mehmet Yüzme 200
2 Zeynep Koşu 300
3 Can Basketbol 400
4 Osman Koşu 200
5 Levent Yüzme 100
6 Atlas Koşu 50
7 Fatma Basketbol 300
8 Ayşe Koşu 300
9 Mahmut Yüzme 400
10 Duygu Badminton 500
11 Emre Tenis 250
df4 = pd.DataFrame([["bird","polly"], ["monkey","george"]], columns= ["animal","name"])
df5 = pd.DataFrame([["a",1],["b",1]], columns = ["letter","number"])
pd.concat([df4,df5], axis = 1) #Sütunların birleştirilmesi
# Output:
animal name letter number
0 bird polly a 1
1 monkey george b 1
Pandas merge() Fonksiyonu
merge() fonksiyonu SQL'deki JOIN işlemlerine benzer şekilde iki veri setini ortak sütun veya sütunlar doğrultusunda birleştirmektedir. Kod örneği:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'key': ['K0', 'K1', 'K2'],
'A': ['A0', 'A1', 'A2']
})
df2 = pd.DataFrame({
'key': ['K1', 'K2', 'K3'],
'B': ['B1', 'B2', 'B3']
})
df1
# Output:
key A
0 K0 A0
1 K1 A1
2 K2 A2
df2
# Output:
key B
0 K1 B1
1 K2 B2
2 K3 B3
result = pd.merge(df1,df2, on = 'key') #key sütunu üzerinden birleştirme yapılır.
result
# Output:
key A B
0 K1 A1 B1
1 K2 A2 B2
#İlk data sütunu üzerinden soldan birleştirme
result_left = pd.merge(df1,df2, on = 'key', how= 'left')
result_left
# Output:
key A B
0 K0 A0 NaN
1 K1 A1 B1
2 K2 A2 B2
#İkinci data sütunu üzerinden sağdan birleştirme
result_right = pd.merge(df1,df2, on = 'key', how= 'right')
result_right
# Output:
key A B
0 K1 A1 B1
1 K2 A2 B2
2 K3 NaN B3
#Her iki data sütunu üzerinden dış birleştirme
result_outer = pd.merge(df1,df2, on = 'key', how= 'outer')
result_outer
# Output:
key A B
0 K0 A0 NaN
1 K1 A1 B1
2 K2 A2 B2
3 K3 NaN B3
Pandas unique() ve nunique() Fonksiyonları
unique() fonksiyonu seçilen sütundaki tekrar eden değerleri kaldırmaktadır. nunique() fonksiyonu ise eşsiz değerlerin sayısını vermektedir. Kod örneği:
import pandas as pd
dic1 = {
'Isim': ['Can','Barış','Emre','Haktan','Zeynep','Ozan','Onur'],
'Departman': ['Yazılım','Satış','Pazarlama','Yazılım','Satış','Lojistik','Finans'],
'Maas': [200,300,400,500,300,550,675]
}
df = pd.DataFrame(dic1)
df
# Output:
Isim Departman Maas
0 Can Yazılım 200
1 Barış Satış 300
2 Emre Pazarlama 400
3 Haktan Yazılım 500
4 Zeynep Satış 300
5 Ozan Lojistik 550
6 Onur Finans 675
df['Departman'].unique()
# Output:
array(['Yazılım', 'Satış', 'Pazarlama', 'Lojistik', 'Finans'],
dtype=object)
df['Departman'].nunique()
# Output:
5 # Yazılım, Satış, Pazarlama, Lojistik, Finans
df['Maas'].unique()
# Output:
array([200, 300, 400, 500, 550, 675])
df['Maas'].nunique()
# Output:
6 # 200, 300, 400, 500, 550, 675
Pandas aggfunc Kullanımı
aggfunc(aggregate function) Pandas'ta pivot tablolar ve groupby() işlemlerinde yaygın olarak kullanılmaktadır. İlgili veri setine toplama, ortalama, maksimum, minimum gibi özel hesaplamalar yapılmasına olanak sağlamaktadır. Kod örneği:
import pandas as pd
data = {
'Departman': ['Yazılım', 'Yazılım', 'Pazarlama', 'Pazarlama', 'Hukuk', 'Hukuk'],
'Calisan Ismi': ['Ahmet', 'Mehmet', 'Can', 'Burak', 'Zeynep', 'Barış'],
'Maas': [100, 150, 200, 300, 400, 500]
}
df = pd.DataFrame(data)
# Değerler ve baz alınacak index seçilir. aggfunc ile yapılacak işlem belirlenir.
pivot_df = pd.pivot_table(df, values='Maas', index='Departman', aggfunc='mean')
pivot_df
# Output:
Maas
Departman
Hukuk 450.0
Pazarlama 250.0
Yazılım 125.0
pivot_df_multiple = pd.pivot_table(df, values='Maas', index='Departman', aggfunc=['sum', 'mean'])
pivot_df_multiple
# Output:
sum mean
Maas Maas
Departman
Hukuk 900 450.0
Pazarlama 500 250.0
Yazılım 250 125.0
# Birden fazla kolonun ortak index olarak kullanımı:
data2 = {
'Departman': ['Yazılım', 'Yazılım', 'Pazarlama', 'Pazarlama', 'Hukuk', 'Hukuk'],
'Calisan Ismi': ['Ahmet', 'Ahmet', 'Can', 'Burak', 'Zeynep', 'Barış'],
'Maas': [100, 150, 200, 300, 400, 500]
}
df2 = pd.DataFrame(data2)
pivot_df2 = pd.pivot_table(df2, values='Maas', index=['Departman', 'Calisan Ismi'], aggfunc='mean')
pivot_df2
# Output:
Maas
Departman Calisan Ismi
Hukuk Barış 500.0
Zeynep 400.0
Pazarlama Burak 300.0
Can 200.0
Yazılım Ahmet 125.0
# groupby ve agg() ile aggfunc kullanımı
data = {
'Departman': ['Yazılım', 'Yazılım', 'Pazarlama', 'Pazarlama', 'Hukuk', 'Hukuk'],
'Calisan Ismi': ['Ahmet', 'Mehmet', 'Can', 'Burak', 'Zeynep', 'Barış'],
'Maas': [100, 150, 200, 300, 400, 500]
}
df = pd.DataFrame(data)
# Departmana göre maaşlar üzerinde birden fazla toplulaştırma işlemi (sum, mean, max)
grouped = df.groupby('Departman').agg({
'Maas': ['sum', 'mean', 'max']
})
grouped
# Output:
Maas
sum mean max
Departman
Hukuk 900 450.0 500
Pazarlama 500 250.0 300
Yazılım 250 125.0 150
Pandas Veri Okuma Fonksiyonları
- pd.read_csv(): CSV dosyasından veri okumak ve DataFrame'e dönüştürmek için kullanılır.
- pd.read_excel(): Excel dosyasından veri okumak ve DataFrame'e dönüştürmek için kullanılır.
- pd.read_sql(): Veritabanından dosyasından veri okumak ve DataFrame'e dönüştürmek için kullanılır.
Kod örneği:
import pandas as pd
# CSV dosyasından veri okunması
df_csv = pd.read_csv('dosya_yolu.csv')
# Excel dosyasından veri okunması
df_excel = pd.read_excel('dosya_yolu.xlsx')
# Excel'de belirli bir sayfanın datasının okunması
df_excel_sheet = pd.read_excel('dosya_yolu.xlsx', sheet_name='Sayfa1')
# Veritabanından veri okunması
import sqlite3
conn = sqlite3.connect('veritabani.db')
df_sql = pd.read_sql('SELECT * FROM tablo_adi', conn)
conn.close()
Pandas Veri Kaydetme Fonksiyonları
- pd.to_csv(): Veriyi CSV dosyası formatında kayıt eder.
- pd.to_excel(): Veriyi Excel dosyası formatında kayıt eder.
- pd.to_sql(): Veriyi SQL veritabanına yazmak için kullanılır.
Kod örneği:
import pandas as pd
# CSV dosyasına veri yazılması
df = pd.DataFrame({
'A': [1, 2, 3],
'B': ['X', 'Y', 'Z']
})
df.to_csv('dosya_yolu.csv', index=False)
# Excel dosyasına veri yazılması
df.to_excel('dosya_yolu.xlsx', sheet_name='Sayfa1', index=False)
# Veritabanına verilerin yazılması
import sqlite3
conn = sqlite3.connect('veritabani.db')
df.to_sql('tablo_adi', conn, if_exists='replace', index=False)
conn.close()
Sonuç olarak Pandas Kütüphanesi Python'da veri analizi ve veri manipülasyonu işlemlerini büyük ölçüde kolaylaştıran güçlü bir kütüphanedir. Veri ön işleme, veri temizleme, eksik veriler üzerinde işlemler, verileri birleştirme ve gruplama işlemleri için oldukça fayda sağlamaktadır.