Veri Bilimi & Veri Manipülasyonu - Pandas
DataFrame Birleştirme - concat() Yöntemi
Yazar:
Enes ASAN
Yayın tarihi :20-Ara-21
Bölüm kodlarını ve/veya veri setlerini indir.
DataFrame birleştirme işlemi için concat() fonksiyonu kullanılır.
Söz dizimi:.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)
- objs, Seriler veya DataFrame nesneleri
- axis, Alt alta birleştirmek için axis=0, yan yana birleştirmek için axis=1 ifadesi kullanılır. Default olarak axis=0 dır.
- join, nesneleri birleştirmenin yolu, iki farklı değer alır: "inner", "outer", default olarak outer'dir.
- ignore_index, index değerlerini güncel tablo için ayarlamak için kullanılır. True olduğunda yeni index değerleri alır.
- keys, birleştirilen tabloda birleşim alanları belirtilmek istenirse kullanılır. (Örn: keys=["df1","df2"])
- verify_integrity, birleştirilen nesnelerde aynı değerlerin(kopya değerlerin) olup olmadığını kontrol amaçlı kullanılır.
- sort, hizalama yapmak için kullanılır.
Örneklerde kullanılmak üzere "df1" ve "df2" isminde iki farklı DataFrame oluşturalım.
import pandas as pd
import numpy as np
df1=pd.DataFrame(np.random.randint(1,10,(5,3)),columns=["S1","S2","S3"])
df2=pd.DataFrame(np.random.randint(1,10,(3,3)),columns=["S1","S2","S3"])
df1
Çıktı:
df2
Çıktı:
1.Sütun isimleri aynı iki tabloyu alt alta birleştirme
#iki tablo alt alta birleştirildi ama index değerleri eski değerlerde kaldı
df=pd.concat([df1,df2])
df
Çıktı:
#index değerlerini de güncel şekilde sıralamak istersek ignore_index=True komutu kullanılır
df=pd.concat([df1,df2],ignore_index=True)
df
Çıktı:
df=pd.concat([df1,df2],keys=["df1:","df2:"])
df
Çıktı:
2.Sütun isimleri farklı iki tabloyu alt alta birleştirme
#df2 için bir sütunun ismini değiştirelim
df2.columns=['S1', 'S2', 'S4']
df2
Çıktı:
#1.tabloda S4 sütunu ve ikinci tabloda da S3 sütunu olmadığı için NaN değereler oluştu.
pd.concat([df1,df2],keys=["df1:","df2:"])
Çıktı:
#sadece eşleşen sütun isimlerine göre birleşim
pd.concat([df1,df2],join="inner",ignore_index=True)
Çıktı:
3.Yan yana DataFrame birleştirme
#df2 sütun isimlerini değiştirelim
df2.columns=['S4', 'S5', 'S6']
df2
Çıktı:
df=pd.concat([df1,df2],axis=1)
df
Çıktı:
4.DataFrame ve Series bileştirme
mySeries=pd.Series([1,2,3,4,5],name="S4")
mySeries
Çıktı:
0 1 1 2 2 3 3 4 4 5 Name: S4, dtype: int64
pd.concat([df1,mySeries],axis=1)
Çıktı: