Pandas - concat
Cum 15 Temmuz 2022concat() Fonksiyonu
Concat kelimesi Concatenate kelimesinin kısaltamasıdır. Concatenate kelimesinin Türkçe karşılığı Birleştir'dir.
concat()
fonksiyonu ile veri çerçeveleri alt alta ya da yan yana birleştirilebilir. Varsayılan değer satır bazlı yani alt alta birleştirmedir.
Birleştirme örneklerini öğrenemek için öncelikle 2 sözlük yapısı oluşturup, bunları veri çerçevesine dönüştürelim.
veri1 = {'A': ['A1','A2','A3','A4'],'B': ['B1','B2','B3','B4'],'C': ['C1','C2','C3','C4']}
veri2 = {'A': ['A5','A6','A7','A8'],'B': ['B5','B6','B7','B8'],'C': ['C5','C6','C7','C8']}
df1 = pd.DataFrame(veri1, index = [1,2,3,4])
df2 = pd.DataFrame(veri2, index = [5,6,7,8])
print(df1)
A | B | C | |
---|---|---|---|
1 | A1 | B1 | C1 |
2 | A2 | B2 | C2 |
3 | A3 | B3 | C3 |
4 | A4 | B4 | C4 |
print(df2)
A | B | C | |
---|---|---|---|
5 | A5 | B5 | C5 |
6 | A6 | B6 | C6 |
7 | A7 | B7 | C7 |
8 | A8 | B8 | C8 |
Oluşturduğumuz veri çerçevelerini, concat()
fonksiyonu ile birleştirelim. concat()
fonksiyonuna en az iki adet veri çevçevesi eklemek gerekir. Malumunuz, Pandas'ta genellikle birden fazla parametre, seçenek ekleneceği zaman, bu değerler köşeli parantez içerisinde yani liste veri tipi olarak yazılır.
print(pd.concat([df1, df2]))
A | B | C | |
---|---|---|---|
1 | A1 | B1 | C1 |
2 | A2 | B2 | C2 |
3 | A3 | B3 | C3 |
4 | A4 | B4 | C4 |
5 | A5 | B5 | C5 |
6 | A6 | B6 | C6 |
7 | A7 | B7 | C7 |
8 | A8 | B8 | C8 |
Gördüğünüz gibi, iki veri çerçevesi altalta birleştirildi.
Parametreler
axis parametresi
Hatırlarsanız drop metodunu anlatırken axis parametresinden bahsetmiştik. axis parametresi, 0 ve 1 değerlerini alır, 0 satırları, 1 ise sütunları temsil eder demiştik. Aynı parametreyi birleştirme işleminde de kullanabiliriz. eğer axis parametresi kullanılmaz ise, varsayılan değer axis = 0 olduğu için yani satırları baz alarak birleştirme yapılır.
Şimdi axis=1 parametresini ekleyerek veri çerçevelerini yanyana birleştirmeyi deneyelim.
print(pd.concat([df1, df2], axis = 1))
A | B | C | A | B | C | |
---|---|---|---|---|---|---|
1 | A1 | B1 | C1 | NaN | NaN | NaN |
2 | A2 | B2 | C2 | NaN | NaN | NaN |
3 | A3 | B3 | C3 | NaN | NaN | NaN |
4 | A4 | B4 | C4 | NaN | NaN | NaN |
5 | NaN | NaN | NaN | A5 | B5 | C5 |
6 | NaN | NaN | NaN | A6 | B6 | C6 |
7 | NaN | NaN | NaN | A7 | B7 | C7 |
8 | NaN | NaN | NaN | A8 | B8 | C8 |
Bu durumda, 2 veri çerçevesi yanyana birleştirildi ancak veri çerçevelerinde aynı indeks değerleri bulunmadığı için ilgili indeks değerinin karşılığında NaN (Not A Number) değeri atandı.
Eğer aşağıdaki gibi bir veri çerçevemiz olsaydı ve bu veri çerçevesini df1 ile yanyana birleştirseydik nasıl bir sonuç elde ederdik dersiniz.
veri3 = {'A': ['A5','A6','A7','A8'],'B': ['B5','B6','B7','B8'],'C': ['C5','C6','C7','C8']}
df3 = pd.DataFrame(veri3, index = [1,6,3,8])
print(df3)
A | B | C | |
---|---|---|---|
1 | A5 | B5 | C5 |
6 | A6 | B6 | C6 |
3 | A7 | B7 | C7 |
8 | A8 | B8 | C8 |
print(pd.concat([df1, df3], axis = 1))
A | B | C | A | B | C | |
---|---|---|---|---|---|---|
1 | A1 | B1 | C1 | A5 | B5 | C5 |
2 | A2 | B2 | C2 | NaN | NaN | NaN |
3 | A3 | B3 | C3 | A7 | B7 | C7 |
4 | A4 | B4 | C4 | NaN | NaN | NaN |
6 | NaN | NaN | NaN | A6 | B6 | C6 |
8 | NaN | NaN | NaN | A8 | B8 | C8 |
df1 ve df3'te ortak indeks değerleri olduğu için 1. ve 3. satırlar tamamen geçerli veri ile doldu.
concat fonksiyonu sadece 2 veri çerçevesini birleştirmiyor. 2'den fazla veri çerçevesini de birleştiriyor. Oluşturduğumuz df1, df2 ve df3 veri çerçevelerini altalta ve yanyana birleştirip sonuçları inceleyelim.
print(pd.concat([df1, df2, df3]))
A | B | C | |
---|---|---|---|
1 | A1 | B1 | C1 |
2 | A2 | B2 | C2 |
3 | A3 | B3 | C3 |
4 | A4 | B4 | C4 |
5 | A5 | B5 | C5 |
6 | A6 | B6 | C6 |
7 | A7 | B7 | C7 |
8 | A8 | B8 | C8 |
1 | A5 | B5 | C5 |
6 | A6 | B6 | C6 |
3 | A7 | B7 | C7 |
8 | A8 | B8 | C8 |
print(pd.concat([df1, df2, df3], axis = 1))
A | B | C | A | B | C | A | B | C | |
---|---|---|---|---|---|---|---|---|---|
1 | A1 | B1 | C1 | NaN | NaN | NaN | A5 | B5 | C5 |
2 | A2 | B2 | C2 | NaN | NaN | NaN | NaN | NaN | NaN |
3 | A3 | B3 | C3 | NaN | NaN | NaN | A7 | B7 | C7 |
4 | A4 | B4 | C4 | NaN | NaN | NaN | NaN | NaN | NaN |
5 | NaN | NaN | NaN | A5 | B5 | C5 | NaN | NaN | NaN |
6 | NaN | NaN | NaN | A6 | B6 | C6 | A6 | B6 | C6 |
7 | NaN | NaN | NaN | A7 | B7 | C7 | NaN | NaN | NaN |
8 | NaN | NaN | NaN | A8 | B8 | C8 | A8 | B8 | C8 |