Pandas Seri / DataFrame Birleştirme
Pandas, Python’da veri analizi yapmak için kullanılan bir kütüphanedir. Pandas, verileri tablo şeklinde tutan Seri ve DataFrame adlı iki temel veri yapısı sunar. Bu veri yapılarını birleştirmek için farklı metotlar vardır. Bunlardan bazıları şunlardır:
- concat(): Bu metot, DataFrame’leri yatay veya dikey olarak birleştirmek için kullanılır. Yani, DataFrame’leri birbirinin altına veya yanına ekler. Örneğin, aşağıdaki iki DataFrame’i birleştirmek için concat() kullanabiliriz: python import pandas as pd df1 = pd.DataFrame({"isim": ["Ali", "Ayşe", "Mehmet"], "yaş": [25, 30, 35]}) df2 = pd.DataFrame({"isim": ["Zeynep", "Ahmet", "Fatma"], "yaş": [28, 32, 40]}) df3 = pd.concat([df1, df2]) # df1 ve df2’yi alt alta birleştirir df4 = pd.concat([df1, df2], axis=1) # df1 ve df2’yi yan yana birleştirir - merge(): Bu metot, DataFrame’leri ortak bir sütun veya indeks üzerinde birleştirmek için kullanılır. Yani, DataFrame’leri birbirine bağlayan bir anahtar değer vardır. Örneğin, aşağıdaki iki DataFrame’i birleştirmek için merge() kullanabiliriz: python import pandas as pd df1 = pd.DataFrame({"isim": ["Ali", "Ayşe", "Mehmet"], "yaş": [25, 30, 35], "şehir": ["Ankara", "İstanbul", "İzmir"]}) df2 = pd.DataFrame({"isim": ["Ali", "Ayşe", "Mehmet"], "meslek": ["Mühendis", "Öğretmen", "Doktor"]}) df3 = pd.merge(df1, df2, on="isim") # df1 ve df2’yi isim sütunu üzerinde birleştirir - join(): Bu metot, DataFrame’leri bir anahtar sütun veya bir indeks üzerinde birleştirmek için kullanılır. Ancak, merge() metodu ile farklı olarak, join() metodu DataFrame’lerin indekslerini kullanarak birleştirme yapabilir. Örneğin, aşağıdaki iki DataFrame’i birleştirmek için join() kullanabiliriz: python import pandas as pd df1 = pd.DataFrame({"isim": ["Ali", "Ayşe", "Mehmet"], "yaş": [25, 30, 35]}, index=["a", "b", "c"]) df2 = pd.DataFrame({"şehir": ["Ankara", "İstanbul", "İzmir"], "meslek": ["Mühendis", "Öğretmen", "Doktor"]}, index=["a", "b", "c"]) df3 = df1.join(df2) # df1 ve df2’yi indekslerine göre birleştirir 25. UYGULAMA İki DataFrame nesnesini concat metodunu kullanarak birleştirme işlemi yapmak için aşağıdaki işlem adımlarını uygulayın. 1. Adım: İki adet rastgele sayılardan oluşan 5x4’lük NumPy dizisi oluşturunuz. python rastgele1=np.random.randint(1,10,size=(5,4)) rastgele2=np.random.randint(10,20,size=(5,4)) 2. Adım: Oluşturulan NumPy dizilerinden DataFrame oluşturunuz ve sütun adlarını değiştiriniz. python df1=pd.DataFrame(rastgele1,columns=["a","b","c","d"]) df2=pd.DataFrame(rastgele2,columns=["a","b","c","d"]) 3. Adım: Oluşturulan DataFrame nesnelerini concat metodunu kullanarak birleştirme işlemini yapınız. python df=pd.concat([df1,df2]) df 4. Adım: Birleştirme işlemi sonucunda indeks numaralarını düzenlemek için concat metodunun ignore_index parametresini kullanınız. python df=pd.concat([df1,df2], ignore_index=True) df 5. Adım: Farklı sütun ismine sahip olan DataFrame nesnelerini birleştirme işlemi için oluşturulan ikinci DataFrame nesnesinin sütun ismini değiştiriniz. python df2.columns=["a","b","e","f"] df=pd.concat([df1,df2],ignore_index=True) df 6. Adım: İki DataFrame nesnesinde ortak olan sütun adlarına göre birleştirme işlemi için concat metodunun join parametresini kullanınız. python df=pd.concat([df1,df2],ignore_index=True, join="inner") df Verilen adımları takip ederek, rastgele sayılardan oluşturulan iki DataFrame nesnesini concat metodunu kullanarak birleştirme işlemi yapmak için aşağıdaki Python kodunu yazabilirsiniz: # Pandas kütüphanesini içe aktarma import pandas as pd # NumPy kütüphanesini içe aktarma import numpy as np # İki adet rastgele sayılardan oluşan 5x4’lük NumPy dizisi oluşturma rastgele1 = np.random.randint(1,10,size=(5,4)) rastgele2 = np.random.randint(10,20,size=(5,4)) # Oluşturulan NumPy dizilerinden DataFrame oluşturma ve sütun adlarını değiştirme df1 = pd.DataFrame(rastgele1,columns=["a","b","c","d"]) df2 = pd.DataFrame(rastgele2,columns=["a","b","c","d"]) # Oluşturulan DataFrame nesnelerini concat metodunu kullanarak birleştirme işlemi yapma df = pd.concat([df1,df2]) # Birleştirme işlemi sonucunda indeks numaralarını düzenlemek için concat metodunun ignore_index parametresini kullanma df = pd.concat([df1,df2], ignore_index=True) # Farklı sütun ismine sahip olan DataFrame nesnelerini birleştirme işlemi için oluşturulan ikinci DataFrame nesnesinin sütun ismini değiştirme df2.columns = ["a","b","e","f"] df = pd.concat([df1,df2],ignore_index=True) # İki DataFrame nesnesinde ortak olan sütun adlarına göre birleştirme işlemi için concat metodunun join parametresini kullanma df = pd.concat([df1,df2],ignore_index=True, join="inner") # Sonuçları ekrana yazdırma print(df) 26. UYGULAMA İki DataFrame nesnesini merge metodunu kullanarak birleştirme işlemi yapmak için aşağıdaki işlem adımlarını takip ediniz. 1. Adım: İki adet DataFrame oluşturunuz. ust = pd.DataFrame({ "anahtar": ["B0", "B1", "B2", "B3"], "A": ["A0", "A1", "A2", "A3"], "B": ["B0", "B1", "B2", "B3"], }) alt = pd.DataFrame({ "anahtar": ["B0", "B1", "B4", "B5"], "C": ["C0", "C1", "C2", "C3"], "D": ["D0", "D1", "D2", "D3"], }) 2. Adım: Oluşturulan DataFrame nesnelerinin anahtar adındaki sütun üzerinden merge metodunu kullanarak birleştirme işlemini yapınız. birlesim = pd.merge(ust, alt, on="anahtar") birlesim 3. Adım: Oluşturulan alt isimli DataFrame nesnesini anahtar sütunundaki B4 değerini B2 olarak değiştirip birleştirme işlemini tekrar yaparak birleştirme sonucunu gözlemleyiniz. alt.iloc[[2],[0]]="B2" birlesim = pd.merge(ust, alt, on="anahtar") birlesim 4. Adım: Birleştirme işleminde anahtar sütundaki bilgiler üzerinden üstteki DataFrame nesnesine göre how argümanı ile yapınız. birlesim = pd.merge(ust, alt, on="anahtar", how="left") birlesim 5. Adım: Birleştirme işlemini anahtar sütundaki bilgiler üzerinden alttaki DataFrame nesnesine göre how parametresi ile yapınız. birlesim = pd.merge(ust, alt, on="anahtar", how="right") birlesim DataFrame nesnelerini birleştirmek için aşağıdaki Python kodunu kullanabilirsiniz. python # pandas kütüphanesini içe aktaralım import pandas as pd # İki adet DataFrame oluşturalım ust = pd.DataFrame({ "anahtar": ["B0", "B1", "B2", "B3"], "A": ["A0", "A1", "A2", "A3"], "B": ["B0", "B1", "B2", "B3"], }) alt = pd.DataFrame({ "anahtar": ["B0", "B1", "B4", "B5"], "C": ["C0", "C1", "C2", "C3"], "D": ["D0", "D1", "D2", "D3"], }) # DataFrame nesnelerini anahtar sütunu üzerinden birleştirelim birlesim = pd.merge(ust, alt, on="anahtar") print(birlesim) # alt DataFrame nesnesinin anahtar sütunundaki B4 değerini B2 olarak değiştirelim alt.iloc[[2],[0]]="B2" birlesim = pd.merge(ust, alt, on="anahtar") print(birlesim) # Birleştirme işlemini üst DataFrame nesnesine göre yapalım birlesim = pd.merge(ust, alt, on="anahtar", how="left") print(birlesim) # Birleştirme işlemini alt DataFrame nesnesine göre yapalım birlesim = pd.merge(ust, alt, on="anahtar", how="right") print(birlesim) Kodun çıktısı şöyle olacaktır: anahtar A B C D 0 B0 A0 B0 C0 D0 1 B1 A1 B1 C1 D1 anahtar A B C D 0 B0 A0 B0 C0 D0 1 B1 A1 B1 C1 D1 2 B2 A2 B2 C2 D2 anahtar A B C D 0 B0 A0 B0 C0 D0 1 B1 A1 B1 C1 D1 2 B2 A2 B2 C2 D2 3 B3 A3 B3 NaN NaN anahtar A B C D 0 B0 A0 B0 C0 D0 1 B1 A1 B1 C1 D1 2 B2 A2 B2 C2 D2 3 B3 A3 B3 NaN NaN 4 B5 NaN NaN C3 D3 27. UYGULAMA 1. Adım: İki adet DataFrame oluşturunuz. Örneğin, şöyle yapabilirsiniz: python df1 = pd.DataFrame( {"X": ["X0", "X1", "X3"], "Y": ["Y0","Y1","Y3"]}, index=["K0", "K1", "K3"]) df1 df2 = pd.DataFrame( {"Z": ["Z0", "Z1", "Z2"], "W": ["W0","W1","W2"]}, index=["K0", "K1", "K2"]) df2 2. Adım: Oluşturulan DataFrame nesnelerinin birleştirme işlemini join metodunu kullanarak yapınız. Örneğin, şöyle yapabilirsiniz: python birlesim = df1.join(df2) birlesim 3. Adım: Oluşturulan DataFrame nesnelerini join metodunun how=”outer” parametresini kullanarak birleştirme işlemini yapınız. Örneğin, şöyle yapabilirsiniz: python birlesim = df1.join(df2, how="outer") birlesim 4. Adım: Pandas how parametresinin değerini inner olarak değiştirerek sonuçları gözlemleyiniz. Örneğin, şöyle yapabilirsiniz: python birlesim = df1.join(df2, how="inner") birlesim |