Merhaba,
Veri Çerçevemizde aynı isme ya da aynı değere sahip birden fazla veri bilgisi olabilir. Verileri gruplayarak, grupların toplam değerleri, ortalama değerleri, grupta kaç adet veri bulunduğu, gruptaki verilerden en küçük ya da en büyük verinin hangisi olduğu gibi pek çok bilgi edinmek için, groupby()
metodundan yararlanırız.
Söylediğiniz gibi KURUM KODU
ve KULLANIM ALANI
birleşiminde (aşağıdaki tabloda olduğu gibi) birer adet veri varsa yani tekrar eden veri yoksa, groupby()
fonksiyonunu kullanmamıza gerek kalmaz.
BİNA_KULLANIM Tekrarsiz:
KURUM_KODU TİPİ İLÇE KULLANIM_ALANI OKUL_KURUM_ADI SAYISI
0 11 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Halk Eğitimi Merkezi 22
1 11 RESMİ SARICA BİLGİSAYAR SAYISI Halk Eğitimi Merkezi 25
2 12 RESMİ BÜNYAN 8- TOPLAM DERSLİK SAYISI Atatürk İlkokulu 12
3 13 RESMİ ŞARKIŞLA 8- TOPLAM DERSLİK SAYISI Atatürk Ortaokulu 5
4 14 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Kirboga İlkokulu 4
5 12 RESMİ BÜNYAN BİLGİSAYAR SAYISI Atatürk İlkokulu 9
6 15 RESMİ SARICA BİLGİSAYAR SAYISI Kirboga Ortaokulu 21
7 16 RESMI BUNYAN 8- TOPLAM DERSLİK SAYISI Halk Eğitim Merkezi 14
8 17 RESMİ ŞARKIŞLA 8- TOPLAM DERSLİK SAYISI Kutu Tepe İlkokulu 12
9 17 RESMİ ŞARKIŞLA BİLGİSAYAR SAYISI Kutu Tepe İlkokulu 5
10 18 RESMİ SARICA BİLGİSAYAR SAYISI Kutu Tepe Ortaokulu 8
11 19 RESMİ SARICA BİLGİSAYAR SAYISI Ortaköy İlkokulu 5
12 20 RESMİ BÜNYAN 8- TOPLAM DERSLİK SAYISI Ortaköy Ortaokulu İS- 10
13 21 RESMİ ŞARKIŞLA BİLGİSAYAR SAYISI İmam Hatip Ortaokulu 4
14 22 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Çok Programlı Anadolu 5
15 23 ÖZEL SARICA 8- TOPLAM DERSLİK SAYISI OZELSARICA ANAOKULU 12
16 23 RESMİ SARICA BİLGİSAYAR SAYISI ÖZELSARICA ANAOKULU 7
17 24 RESMİ BÜNYAN 8- TOPLAM DERSLİK SAYISI Dereli İlkokulu 4
18 25 RESMİ ŞARKIŞLA 8- TOPLAM DERSLİK SAYISI Dereli Ortaokulu 5
19 26 RESMİ SARICA BİLGİSAYAR SAYISI Atatürk İlkokulu 4
20 26 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Atatürk İlkokulu 7
Excel’de Pivot Tablo kullanılarak KURUM KODU
ve KULLANIM ALANI
birleşimi incelendiğinde aşağıdaki gibi birer adet veri olduğu teyit edilebilir;
KURUM_KODU KULLANIM_ALANI Say - KULLANIM_ALANI
11 8- TOPLAM DERSLİK SAYISI 1
BİLGİSAYAR SAYISI 1
12 8- TOPLAM DERSLİK SAYISI 1
BİLGİSAYAR SAYISI 1
13 8- TOPLAM DERSLİK SAYISI 1
14 8- TOPLAM DERSLİK SAYISI 1
15 BİLGİSAYAR SAYISI 1
16 8- TOPLAM DERSLİK SAYISI 1
17 8- TOPLAM DERSLİK SAYISI 1
BİLGİSAYAR SAYISI 1
18 BİLGİSAYAR SAYISI 1
19 BİLGİSAYAR SAYISI 1
20 8- TOPLAM DERSLİK SAYISI 1
21 BİLGİSAYAR SAYISI 1
22 8- TOPLAM DERSLİK SAYISI 1
23 8- TOPLAM DERSLİK SAYISI 1
BİLGİSAYAR SAYISI 1
24 8- TOPLAM DERSLİK SAYISI 1
25 8- TOPLAM DERSLİK SAYISI 1
26 8- TOPLAM DERSLİK SAYISI 1
BİLGİSAYAR SAYISI 1
Bu durumda aşağıdaki kod işinize yarayacaktır.
import pandas as pd
dosya = pd.read_excel("ANA_TABLO.xlsx")
df_ana= pd.DataFrame(dosya,columns=["KURUM_KODU", "TİPİ","İLÇE","OKUL_KURUM_ADI","DERSLİK_SAYISI"])
dosya = pd.read_excel("BİNA_KULLANIM_Tekrarsiz.xlsx")
df_bina = pd.DataFrame(dosya,columns=["KURUM_KODU", "TİPİ","İLÇE","KULLANIM_ALANI","OKUL_KURUM_ADI","SAYISI"])
df1 = df_bina[df_bina["KULLANIM_ALANI"] == "8- TOPLAM DERSLİK SAYISI"] # filtre uyguluyoruz
df_ana = df_ana.set_index("KURUM_KODU") # indeks değerleri ayarlanıyor.
df1 = df1.set_index("KURUM_KODU") # indeks değerleri ayarlanıyor.
df_ana["DERSLİK_SAYISI"] = df1["SAYISI"]
df_ana.to_excel("ANA_TABLO_SONUC.xlsx")
Bu kod ile, ANA_TABLO.xlsx dosyası üzerinde değişiklik yapmamış olduk. Çıktı değerleri ANA_TABLO_SONUC.xlsx dosyasına kaydedilir. Böylece ANA_TABLO.xlsx dosyanızın yapısı bozulmamış olur. Bağlantı ile verileri ana dosyanıza otomatik olarak güncelleyebilirsiniz.
Şunu da ifade edeyim ki;
Tekrar eden veriler olmasa da ( df1 = df1.groupby("KURUM_KODU").sum()["SAYISI"]
) kodunu kullanarak aynı sonucu elde ederiz.
Çünkü tekrar eden veri yoksa, değerler toplamı kendisine eşittir
df1 = df1.groupby("KURUM_KODU").sum()["SAYISI"]`)
print(df1)
Tekrar eden veri olmadığı durumda da sum()
metodunu kullanarak yukarıdaki kod çıktısını inceleyebilirsiniz.
Tüm kod ise şudur;
import pandas as pd
dosya = pd.read_excel("ANA_TABLO.xlsx") #, index_col=0)
df_ana= pd.DataFrame(dosya,columns=["KURUM_KODU", "TİPİ","İLÇE","OKUL_KURUM_ADI","DERSLİK_SAYISI"])
dosya = pd.read_excel("BİNA_KULLANIM_Tekrarsiz.xlsx") #, index_col=0)
df_bina = pd.DataFrame(dosya,columns=["KURUM_KODU", "TİPİ","İLÇE","KULLANIM_ALANI","OKUL_KURUM_ADI","SAYISI"])
df1 = df_bina[df_bina["KULLANIM_ALANI"] == "8- TOPLAM DERSLİK SAYISI"]
df1 = df1.groupby("KURUM_KODU").sum()["SAYISI"]
df_ana = df_ana.set_index("KURUM_KODU") # indeks değerleri ayarlanıyor.
df_ana["DERSLİK_SAYISI"] = df1
df_ana.to_excel("ANA_TABLO_SONUC4.xlsx")