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 !