top of page

Pandas ile Veri Birleştirme ve Yeniden Şekillendirme



Hands-on Mentor Kapsamlı Blog İçeriği
Hands-on Mentor Tutorials


Joining Data with Pandas

Pandas, veri setlerini birleştirmek için çeşitli fonksiyonlar sunar. Bu fonksiyonlar, SQL'deki join işlemlerine benzer şekilde çalışır.


Inner Join

merge() fonksiyonu, iki DataFrame'i belirli bir sütuna göre birleştirir. how='inner' parametresi ile iç join (inner join) yapılır.


Örnek:


import pandas as pd

# Öğrenci bilgileri DataFrame'i oluşturma
data1 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet"],
    "Sınıf": ["A", "B", "A", "B", "A"]
}

df1 = pd.DataFrame(data1)

# Öğrenci notları DataFrame'i oluşturma
data2 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet"],
    "Matematik": [85, 95, 70, 90, 78],
    "Fizik": [90, 85, 80, 92, 75]
}

df2 = pd.DataFrame(data2)

# Inner join işlemi
merged_df = pd.merge(df1, df2, on="Öğrenci", how="inner")
print("Inner Join Result:\\n", merged_df)
# Çıktı:
#   Öğrenci Sınıf  Matematik  Fizik
# 0     Ali     A         85     90
# 1    Ayşe     B         95     85
# 2  Mehmet     A         70     80
# 3   Fatma     B         90     92
# 4   Ahmet     A         78     75


Left Join

how='left' parametresi ile sol join (left join) yapılır.


Örnek:


import pandas as pd

# Öğrenci bilgileri DataFrame'i oluşturma
data1 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet", "Hasan"],
    "Sınıf": ["A", "B", "A", "B", "A", "B"]
}

df1 = pd.DataFrame(data1)

# Öğrenci notları DataFrame'i oluşturma
data2 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet"],
    "Matematik": [85, 95, 70, 90, 78],
    "Fizik": [90, 85, 80, 92, 75]
}

df2 = pd.DataFrame(data2)

# Left join işlemi
merged_df_left = pd.merge(df1, df2, on="Öğrenci", how="left")
print("Left Join Result:\\n", merged_df_left)
# Çıktı:
#   Öğrenci Sınıf  Matematik  Fizik
# 0     Ali     A       85.0   90.0
# 1    Ayşe     B       95.0   85.0
# 2  Mehmet     A       70.0   80.0
# 3   Fatma     B       90.0   92.0
# 4   Ahmet     A       78.0   75.0
# 5   Hasan     B        NaN    NaN


Right Join

how='right' parametresi ile sağ join (right join) yapılır.


Örnek:


import pandas as pd

# Öğrenci bilgileri DataFrame'i oluşturma
data1 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet"],
    "Sınıf": ["A", "B", "A", "B", "A"]
}

df1 = pd.DataFrame(data1)

# Öğrenci notları DataFrame'i oluşturma
data2 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet", "Hüseyin"],
    "Matematik": [85, 95, 70, 90, 78, 65],
    "Fizik": [90, 85, 80, 92, 75, 70]
}

df2 = pd.DataFrame(data2)

# Right join işlemi
merged_df_right = pd.merge(df1, df2, on="Öğrenci", how="right")
print("Right Join Result:\\n", merged_df_right)
# Çıktı:
#   Öğrenci Sınıf  Matematik  Fizik
# 0     Ali     A         85     90
# 1    Ayşe     B         95     85
# 2  Mehmet     A         70     80
# 3   Fatma     B         90     92
# 4   Ahmet     A         78     75
# 5 Hüseyin   NaN         65     70


Outer Join

how='outer' parametresi ile dış join (outer join) yapılır.


Örnek:


import pandas as pd

# Öğrenci bilgileri DataFrame'i oluşturma
data1 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet"],
    "Sınıf": ["A", "B", "A", "B", "A"]
}

df1 = pd.DataFrame(data1)

# Öğrenci notları DataFrame'i oluşturma
data2 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet", "Hüseyin"],
    "Matematik": [85, 95, 70, 90, 78, 65],
    "Fizik": [90, 85, 80, 92, 75, 70]
}

df2 = pd.DataFrame(data2)

# Outer join işlemi
merged_df_outer = pd.merge(df1, df2, on="Öğrenci", how="outer")
print("Outer Join Result:\\n", merged_df_outer)
# Çıktı:
#   Öğrenci  Sınıf  Matematik  Fizik
# 0     Ali      A       85.0   90.0
# 1    Ayşe      B       95.0   85.0
# 2  Mehmet      A       70.0   80.0
# 3   Fatma      B       90.0   92.0
# 4   Ahmet      A       78.0   75.0
# 5 Hüseyin    NaN       65.0   70.0


Merging Multiple DataFrames

Birden fazla DataFrame'i birleştirmek için merge() fonksiyonu tekrar tekrar kullanılabilir.


Örnek:


import pandas as pd

# Öğrenci bilgileri DataFrame'i oluşturma
data1 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet"],
    "Sınıf": ["A", "B", "A", "B", "A"]
}

df1 = pd.DataFrame(data1)

# Matematik notları DataFrame'i oluşturma
data2 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet"],
    "Matematik": [85, 95, 70, 90, 78]
}

df2 = pd.DataFrame(data2)

# Fizik notları DataFrame'i oluşturma
data3 = {
    "Öğrenci": ["Ali", "Ayşe", "Mehmet", "Fatma", "Ahmet"],
    "Fizik": [90, 85, 80, 92, 75]
}

df3 = pd.DataFrame(data3)

# Birleştirme işlemi
merged_df = pd.merge(df1, df2, on="Öğrenci")
merged_df = pd.merge(merged_df, df3, on="Öğrenci")
print("Merged DataFrame:\\n", merged_df)
# Çıktı:
#   Öğrenci Sınıf  Matematik  Fizik
# 0     Ali     A         85     90
# 1    Ayşe     B         95     85
# 2  Mehmet     A         70     80
# 3   Fatma     B         90     92
# 4   Ahmet     A         78     75


Reshaping DataFrames

Pandas, DataFrame'leri yeniden şekillendirmek için çeşitli fonksiyonlar sunar. Bu işlemler, verilerin analiz ve görselleştirme için uygun hale getirilmesini sağlar.


Pivot

pivot() fonksiyonu, verileri geniş formattan uzun formata dönüştürür.


Örnek:


import pandas as pd

# DataFrame oluşturma
data = {
    "Tarih": ["2023-01-01", "2023-01-02", "2023-01-03"],
    "Şehir": ["Ankara", "İstanbul", "İzmir"],
    "Sıcaklık": [5, 15, 10]
}

df = pd.DataFrame(data)

# Pivot işlemi
pivoted_df = df.pivot(index="Tarih", columns="Şehir", values="Sıcaklık")
print("Pivoted DataFrame:\\n", pivoted_df)
# Çıktı:
# Şehir        Ankara  İstanbul  İzmir
# Tarih
# 2023-01-01       5       NaN    NaN
# 2023-01-02     NaN      15.0    NaN
# 2023-01-03     NaN       NaN   10.0


Melting

melt() fonksiyonu, verileri geniş formattan uzun formata dönüştürür.


Örnek:


import pandas as pd

# Pivot edilmiş DataFrame oluşturma
data = {
    "Tarih": ["2023-01-01", "2023-01-02", "2023-01-03"],
    "Ankara": [5, np.nan, np.nan],
    "İstanbul": [np.nan, 15, np.nan],
    "İzmir": [np.nan, np.nan, 10]
}

df = pd.DataFrame(data)

# Melt işlemi
melted_df = pd.melt(df, id_vars=["Tarih"], value_vars=["Ankara", "İstanbul", "İzmir"], var_name="Şehir", value_name="Sıcaklık")
print("Melted DataFrame:\\n", melted_df)
# Çıktı:
#         Tarih     Şehir  Sıcaklık
# 0  2023-01-01    Ankara       5.0
# 1  2023-01-02    Ankara       NaN
# 2  2023-01-03    Ankara       NaN
# 3  2023-01-01  İstanbul       NaN
# 4  2023-01-02  İstanbul      15.0
# 5  2023-01-03  İstanbul       NaN
# 6  2023-01-01     İzmir       NaN
# 7  2023-01-02     İzmir       NaN
# 8  2023-01-03     İzmir      10.0


Stacking and Unstacking

stack() ve unstack() fonksiyonları, DataFrame'leri yığınlamanızı ve çözmenizi sağlar.


Örnek:


import pandas as pd

# DataFrame oluşturma
data = {
    "Tarih": ["2023-01-01", "2023-01-02", "2023-01-03"],
    "Şehir": ["Ankara", "İstanbul", "İzmir"],
    "Sıcaklık": [5, 15, 10]
}

df = pd.DataFrame(data)
pivoted_df = df.pivot(index="Tarih", columns="Şehir", values="Sıcaklık")

# Stacking işlemi
stacked_df = pivoted_df.stack()
print("Stacked DataFrame:\\n", stacked_df)
# Çıktı:
# Tarih        Şehir
# 2023-01-01  Ankara       5.0
# 2023-01-02  İstanbul    15.0
# 2023-01-03  İzmir       10.0
# dtype: float64

# Unstacking işlemi
unstacked_df = stacked_df.unstack()
print("Unstacked DataFrame:\\n", unstacked_df)
# Çıktı:
# Şehir        Ankara  İstanbul  İzmir
# Tarih
# 2023-01-01     5.0       NaN    NaN
# 2023-01-02     NaN      15.0    NaN
# 2023-01-03     NaN       NaN   10.0

Bu dersin onuncu partı ile Pandas ile veri birleştirme ve yeniden şekillendirme tekniklerini öğrendik. merge() fonksiyonunu kullanarak veri setlerini birleştirme, pivot() ve melt() fonksiyonları ile veri setlerini yeniden şekillendirme, ve stack() ve unstack() fonksiyonları ile veri setlerini yığınlama ve çözme işlemlerini inceledik. Bir sonraki partta, Pandas ile eksik veri işlemlerini inceleyeceğiz ve bu teknikleri uygulayacağız.

 

Python temellerini atıp, veri analizi ve bilimi için yetkinlik kazanmak istiyorsanız, 1 aylık yoğun Python kampına hemen kayıt olabilirsiniz. ~40 saat canlı ders, ~50 adet kapsamlı proje, ~15 adet quiz ve sayısız kodlama egzersizinden oluşan, Finlandiya eğitim modellerinden esinlenilerek Helsinki'de geliştirilen interaktif ve pratik odaklı eğitim programına hemen göz atın !




bottom of page