Tablolar Arası Veri Transferi

String Metotları

Python ile kodlama yaparken, metinsel ifadelerle uğraştığımızda kullandığımız string metotlarını hatırlarsınız. Örneğin, Metinlerin tümünü büyük harfe ya da küçük harfe çevirmek. Bu tür string metotları Pandas ile kulanmak ve veri çerçevesine uygulamak mümkün. Bunun için str ifadesini kullanabiliriz.

String metotlarını kullanarak, örneğin aşağıdaki kod ile “OKUL_KURUM_ADI” sütunundaki tüm karakterler büyük harfe çevrilebilir.
print(df_bina["OKUL_KURUM_ADI"].str.upper())

Sorunuza cevap olacak String metodu contains()dir.
df1 = [df_bina["KULLANIM_ALANI"].str.contains("TOPLAM DERSLİK")]
kodu ile KULLANIM_ALANI sütununda TOPLAM DERSLİK ifadesi bulunan tüm satırlar filtrelenebilir.

Aşağıdaki kodu ve çıktısını inceleyebilirsiniz.

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"])
print("\n\nANA_TABLO\n", df_ana)

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"])  
print("\n\nBİNA_KULLANIM\n", df_bina)

df1 = df_bina[df_bina["KULLANIM_ALANI"].str.contains("TOPLAM DERSLİK")]
print("\n\n 'TOPLAM DERSLİK' İÇEREN (contains) df_bina TABLOSU:\n", df1)

df_ana = df_ana.set_index("KURUM_KODU") # indeks değerleri ayarlanıyor.
df1 = df1.set_index("KURUM_KODU")       # indeks değerleri ayarlanıyor.
print("\n\nİndeksli ANA_TABLO:\n", df_ana)
print("\n\nİndeksli df1 Tablosu:\n", df1)

df_ana["DERSLİK_SAYISI"] = df1["SAYISI"]
print("\n\nNİHAİ ANA_TABLO:\n", df_ana)

df_ana.to_excel("ANA_TABLO_SONUC.xlsx")

Çıktı:

'ANA_TABLO'
     KURUM_KODU   TİPİ      İLÇE                OKUL_KURUM_ADI  DERSLİK_SAYISI
0           11  RESMİ    SARICA          HalkEğitimi Merkezi              NaN
1           12  RESMİ    BÜNYAN             Atatürk İlkokulu              NaN
2           13  RESMİ  ŞARKIŞLA            Atatürk Ortaokulu              NaN
3           14  RESMİ    SARICA             Kırboğa İlkokulu              NaN
4           15  RESMİ    SARICA            Kırboğa Ortaokulu              NaN
5           16  RESMİ    BÜNYAN           Halk Eğitim Merkezi             NaN
6           17  RESMİ  ŞARKIŞLA            Kutu Tepe İlkokulu             NaN
7           18  RESMİ    SARICA           Kutu Tepe Ortaokulu             NaN
8           19  RESMİ    SARICA             Ortaköy İlkokulu              NaN
9           20  RESMİ    BÜNYAN            Ortaköy Ortaokulu              NaN
10          21  RESMİ  ŞARKIŞLA          İmam Hatip Ortaokulu             NaN
11          22  RESMİ    SARICA  Çok Programlı Anadolu Lisesi             NaN
12          23  RESMİ    SARICA              Sanica Anaokulu              NaN
13          24  RESMİ    BÜNYAN              Dereli İlkokulu              NaN
14          25  RESMİ  ŞARKIŞLA             Dereli Ortaokulu              NaN
15          26  RESMİ    SARICA              Atatürk İlkokulu             NaN


'BİNA_KULLANIM'
     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      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


 'TOPLAM DERSLİK' İÇEREN (contains) 'df_bina' TABLOSU:
     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
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
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
12          20  RESMİ     BÜNYAN  8- TOPLAM DERSLİK SAYISI      Ortaköy Ortaokulu      10
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
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
20          26  RESMİ     SARICA  8- TOPLAM DERSLİK SAYISI      Atatürk İlkokulu        7


'İndeksli ANA_TABLO':
              TİPİ      İLÇE                OKUL_KURUM_ADI  DERSLİK_SAYISI
KURUM_KODU                                                               
11          RESMİ    SARICA          HalkEğitimi Merkezi              NaN
12          RESMİ    BÜNYAN             Atatürk İlkokulu              NaN
13          RESMİ  ŞARKIŞLA            Atatürk Ortaokulu              NaN
14          RESMİ    SARICA             Kırboğa İlkokulu              NaN
15          RESMİ    SARICA            Kırboğa Ortaokulu              NaN
16          RESMİ    BÜNYAN           Halk Eğitim Merkezi             NaN
17          RESMİ  ŞARKIŞLA            Kutu Tepe İlkokulu             NaN
18          RESMİ    SARICA           Kutu Tepe Ortaokulu             NaN
19          RESMİ    SARICA             Ortaköy İlkokulu              NaN
20          RESMİ    BÜNYAN            Ortaköy Ortaokulu              NaN
21          RESMİ  ŞARKIŞLA          İmam Hatip Ortaokulu             NaN
22          RESMİ    SARICA  Çok Programlı Anadolu Lisesi             NaN
23          RESMİ    SARICA              Sanica Anaokulu              NaN
24          RESMİ    BÜNYAN              Dereli İlkokulu              NaN
25          RESMİ  ŞARKIŞLA             Dereli Ortaokulu              NaN
26          RESMİ    SARICA              Atatürk İlkokulu             NaN


'İndeksli df1 Tablosu':
              TİPİ       İLÇE            KULLANIM_ALANI         OKUL_KURUM_ADI  SAYISI
KURUM_KODU                                                                           
11          RESMİ     SARICA  8- TOPLAM DERSLİK SAYISI   Halk Eğitimi Merkezi      22
12          RESMİ     BÜNYAN  8- TOPLAM DERSLİK SAYISI       Atatürk İlkokulu      12
13          RESMİ   ŞARKIŞLA  8- TOPLAM DERSLİK SAYISI     Atatürk Ortaokulu        5
14          RESMİ     SARICA  8- TOPLAM DERSLİK SAYISI      Kirboga İlkokulu        4
16          RESMI     BUNYAN  8- TOPLAM DERSLİK SAYISI    Halk Eğitim Merkezi      14
17          RESMİ  ŞARKIŞLA   8- TOPLAM DERSLİK SAYISI     Kutu Tepe İlkokulu      12
20          RESMİ     BÜNYAN  8- TOPLAM DERSLİK SAYISI      Ortaköy Ortaokulu      10
22          RESMİ     SARICA  8- TOPLAM DERSLİK SAYISI  Çok Programlı Anadolu       5
23           ÖZEL     SARICA  8- TOPLAM DERSLİK SAYISI   OZELSARICA ANAOKULU       12
24          RESMİ     BÜNYAN  8- TOPLAM DERSLİK SAYISI        Dereli İlkokulu       4
25          RESMİ   ŞARKIŞLA  8- TOPLAM DERSLİK SAYISI      Dereli Ortaokulu        5
26          RESMİ     SARICA  8- TOPLAM DERSLİK SAYISI      Atatürk İlkokulu        7


'NİHAİ ANA_TABLO':
              TİPİ      İLÇE                OKUL_KURUM_ADI  DERSLİK_SAYISI
KURUM_KODU                                                               
11          RESMİ    SARICA          HalkEğitimi Merkezi             22.0
12          RESMİ    BÜNYAN             Atatürk İlkokulu             12.0
13          RESMİ  ŞARKIŞLA            Atatürk Ortaokulu              5.0
14          RESMİ    SARICA             Kırboğa İlkokulu              4.0
15          RESMİ    SARICA            Kırboğa Ortaokulu              NaN
16          RESMİ    BÜNYAN           Halk Eğitim Merkezi            14.0
17          RESMİ  ŞARKIŞLA            Kutu Tepe İlkokulu            12.0
18          RESMİ    SARICA           Kutu Tepe Ortaokulu             NaN
19          RESMİ    SARICA             Ortaköy İlkokulu              NaN
20          RESMİ    BÜNYAN            Ortaköy Ortaokulu             10.0
21          RESMİ  ŞARKIŞLA          İmam Hatip Ortaokulu             NaN
22          RESMİ    SARICA  Çok Programlı Anadolu Lisesi             5.0
23          RESMİ    SARICA              Sanica Anaokulu             12.0
24          RESMİ    BÜNYAN              Dereli İlkokulu              4.0
25          RESMİ  ŞARKIŞLA             Dereli Ortaokulu              5.0
26          RESMİ    SARICA              Atatürk İlkokulu             7.0

Kaynak:

Python’da benzerlik ifadesi söz konusu olduğunda aklıma gelen ilk kütüphane re (regex) yani Düzenli İfadeler (Regular Expressions - Regex )'dir.

Düzenli İfadeler (Regular Expressions)

Düzenli ifadeler (RegEx ya da Regular Expression), bir karakter dizisi içinde bulunan, belli bir düzene uyan eşleşmeleri bulmanıza ve yönetmenize yardımcı olacak desenler oluşturmanıza izin veren bir metin dizisidir (bir string ifadedir). Bir metinde geçen karakterleri RegEx desenleri (pattern) kullanarak arayabiliriz.

Düzenli ifadeler bir arama işleminde eşleştirilecek deseni temsil eden özel dizelerdir. Java ve Perl gibi programlama dillerinden grep, sed ve metin düzenleyici vim gibi metin işleme araçlarına kadar çok çeşitli bilgi işlem uygulamalarında kullanılan önemli bir araçtır.

Düzenli ifadeler sayesinde ne yapabiliriz bir bakalım :

  • Yer değiştirme: Belirli parçaları değiştirir. Örnek olarak metin içerisindeki tüm büyük harfleri küçük harf ya da tüm küçük harfleri büyük harfe dönüştürebilirsiniz.

  • Doğrulama : Yazdığınız bir program olsun, bu programda büyük veya küçük harf, nokta veya rakam gibi kriterleri karşılayıp karşılamadığını kontrol edebilirsiniz.

  • Arama : Bir metin içerisindeki tüm ögeleri aratabilirsiniz. Örneğin telefon numaraları ya da e-posta adresleri gibi.

  • Koordinat ile hareket etme : Örneğin, bir dizindeki belirli paketleri, dosyaları işlemek isteyebilirsiniz ancak yalnızca belirli koşulları karşılıyorlarsa, komut satırında çalıştırabiliyorsunuz.

  • Metni Yeniden Biçimlendirme : Örneğin, Bir programdaki verileri metin dosyası olarak dışa aktarabilir, ardından düzenini değiştirerek metin düzenleyicisi kullanarak başka bir programa aktarabilirsiniz.

    Python’daki düzenli ifadelere ilişkin her şey, bir modül içinde tutulur. Bu modülün adı re’dir. re modülü Python’ın dahili (build-in) modeüllerindendir. Ayrıca yüklememize gerek yoktur. Bilgisayarınızda Python yüklü ise, re modülü de yüklenmiş ve kullanıma hazır olarak bekliyordur.

Pandas’a ait apply() metodu ile Düzenli İfadelerin (re modülünün) birlikte kullanımı sonucu aşağıdaki kod ve çıktıyı elde ettim. İnceleyebilirsiniz.

import pandas as pd
import re

dosya = pd.read_excel("BİNA_KULLANIM.xlsx")
df = pd.DataFrame(dosya,columns=["KURUM_KODU", "TİPİ","İLÇE","KULLANIM_ALANI","OKUL_KURUM_ADI","SAYISI"])  
print("\nBİNA_KULLANIM\n\n", df)

desen_bilgi = r"\w*BİLGİ\w*"
desen_orta = r"\w*orta\w*"

def like_bilgi(x):
    sonuc  =  re.search(desen_bilgi, x, re.IGNORECASE)
    if sonuc:
        return x

def like_orta(x):
    sonuc  =  re.search(desen_orta, x, re.IGNORECASE)
    if sonuc:
        return x    

df["KULLANIM_ALANI"] = df["KULLANIM_ALANI"].apply(like_bilgi)
df.dropna(axis = 0, inplace = True)
print("\n\nBİLGİ SONUÇLARI:\n\n", df)

df["OKUL_KURUM_ADI"] = df["OKUL_KURUM_ADI"].apply(like_orta)
df.dropna(axis = 0, inplace = True)
print("\n\nORTA SOUÇLARI:\n\n", df)

Çıktı;

'BİNA_KULLANIM'

     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           14  RESMİ     SARICA  8- TOPLAM DERSLİK SAYISI      Kirboga İlkokulu       12
7           15  RESMİ     SARICA       BİLGİSAYAR SAYISI       Kirboga Ortaokulu       21
8           16  RESMI     BUNYAN  8- TOPLAM DERSLİK SAYISI    Halk Eğitim Merkezi      14
9           17  RESMİ  ŞARKIŞLA   8- TOPLAM DERSLİK SAYISI     Kutu Tepe İlkokulu      12
10          17  RESMİ   ŞARKIŞLA       BİLGİSAYAR SAYISI      Kutu Tepe İlkokulu        5
11          18  RESMİ     SARICA       BİLGİSAYAR SAYISI      Kutu Tepe Ortaokulu       8
12          19  RESMİ     SARICA       BİLGİSAYAR SAYISI         Ortaköy İlkokulu       5
13          16  RESMI     BUNYAN  8- TOPLAM DERSLİK SAYISI    Halk Eğitim Merkezi       9
14          20  RESMİ     BÜNYAN  8- TOPLAM DERSLİK SAYISI  Ortaköy Ortaokulu İS-      10
15          21  RESMİ   ŞARKIŞLA       BİLGİSAYAR SAYISI    İmam Hatip Ortaokulu        4
16          22  RESMİ     SARICA  8- TOPLAM DERSLİK SAYISI  Çok Programlı Anadolu       5
17          23   ÖZEL     SARICA  8- TOPLAM DERSLİK SAYISI   OZELSARICA ANAOKULU       12
18          23  RESMİ     SARICA       BİLGİSAYAR SAYISI     ÖZELSARICA ANAOKULU        7
19          24  RESMİ     BÜNYAN  8- TOPLAM DERSLİK SAYISI        Dereli İlkokulu       4
20          25  RESMİ   ŞARKIŞLA  8- TOPLAM DERSLİK SAYISI      Dereli Ortaokulu        5
21          26  RESMİ     SARICA       BİLGİSAYAR SAYISI         Atatürk İlkokulu       4
22          26  RESMİ     SARICA  8- TOPLAM DERSLİK SAYISI      Atatürk İlkokulu        7

'BİLGİ SONUÇLARI':

     KURUM_KODU   TİPİ      İLÇE       KULLANIM_ALANI         OKUL_KURUM_ADI  SAYISI

1           11  RESMİ    SARICA  BİLGİSAYAR SAYISI     Halk Eğitimi Merkezi      25
5           12  RESMİ    BÜNYAN  BİLGİSAYAR SAYISI         Atatürk İlkokulu       9
7           15  RESMİ    SARICA  BİLGİSAYAR SAYISI       Kirboga Ortaokulu       21
10          17  RESMİ  ŞARKIŞLA  BİLGİSAYAR SAYISI      Kutu Tepe İlkokulu        5
11          18  RESMİ    SARICA  BİLGİSAYAR SAYISI      Kutu Tepe Ortaokulu       8
12          19  RESMİ    SARICA  BİLGİSAYAR SAYISI         Ortaköy İlkokulu       5
15          21  RESMİ  ŞARKIŞLA  BİLGİSAYAR SAYISI    İmam Hatip Ortaokulu        4
18          23  RESMİ    SARICA  BİLGİSAYAR SAYISI     ÖZELSARICA ANAOKULU        7
21          26  RESMİ    SARICA  BİLGİSAYAR SAYISI         Atatürk İlkokulu       4

'ORTA SOUÇLARI':

     KURUM_KODU   TİPİ      İLÇE       KULLANIM_ALANI         OKUL_KURUM_ADI  SAYISI

7           15  RESMİ    SARICA  BİLGİSAYAR SAYISI       Kirboga Ortaokulu       21
11          18  RESMİ    SARICA  BİLGİSAYAR SAYISI      Kutu Tepe Ortaokulu       8
12          19  RESMİ    SARICA  BİLGİSAYAR SAYISI         Ortaköy İlkokulu       5
15          21  RESMİ  ŞARKIŞLA  BİLGİSAYAR SAYISI    İmam Hatip Ortaokulu        4
1 Beğeni

Hocam, teşekkür ederim. Elinize emeğinize sağlık

Rica ederim. Faydalı olabildiysem ne âlâ.

1 Beğeni