Merhaba Arkadaşlar
Bir Excel dosyasından diğer Excel dosyasına veri almak istiyorum.
Yapmak istediğim;
1- Ana Tablo’daki KURUM_KODU, Öğrenci_Sayıları tablosundaki "KURUM_KODU"na eşitse,
2- Ana_Tablo’daki EĞİTİM_KADEMESİ, Öğrenci_Sayıları tablosundaki "EĞİTİM_KADEMESİ"ne eşitse (OKULÖNCESİ hariç)
3_Öğrenci_Sayıları tablosundaki, öğrenci sayıları sütunlarını (ERKEK_ÖĞRENCİ, KIZ_ÖĞRENCİ ,TOPLAM_ÖĞRENCİ) Ana Tablo’daki aynı addaki sütunlara toplamlarını getirmesi
Üzerinde çalıştığım kod;
import pandas as pd
dosya = pd.read_excel(r"D:\PYTHON_DATA\ANA_TABLO.xlsx")
df_ana= pd.DataFrame(dosya)
dosya = pd.read_excel(r"D:\PYTHON_DATA\ROPORLAR (DÜZENLENEN)\ÖĞRENCİ_SAYILARI.xlsx")
df_ogrenci = pd.DataFrame(dosya)
df1=df_ogrenci[df_ogrenci["EĞİTİM_KADEMESİ"] != "OKULÖNCESİ"]
df2= df_ogrenci["EĞİTİM_KADEMESİ"] == df_ana["EĞİTİM_KADEMESİ"] #burasını yapamadım (iki tablo arasında eğitim kademeleri eşit olacak, okulöncesi hariç)
#ve kurum_kodları eşit olacak
erkek = df1,df2.groupby("KURUM_KODU").sum()["ERKEK_ÖĞRENCİ"]
kız = df1,df2.groupby('KURUM_KODU').sum()["KIZ_ÖĞRENCİ"]
toplam = df1,df2.groupby(["KURUM_KODU"]).sum()["TOPLAM_ÖĞRENCİ"]
df_ana=df_ana.set_index("KURUM_KODU")
df_ana["ERKEK_ÖĞRENCİ"] = erkek
df_ana["KIZ_ÖĞRENCİ"] = kız
df_ana["TOPLAM_ÖĞRENCİ"] = toplam
#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(df_ana)
df_ana.to_excel(r"D:\PYTHON_DATA\ANA_TABLO.xlsx")
Merhaba,
Kod içerisinde kullandığın (Örnek) dosyaları ya da ekran görüntülerini paylaşabilir misin?
Merhaba,
OKULÖNCESİ’ni hariç tutmadan yazdığım kod aşağıdadır. (Nasıl Hariç tutulabilir biraz düşün
)
Excel ile çalışırken de bu tür çok sütunlu kıyas / mukayese,…vb işlemler yapacağım zaman, istenilen verileri önce bir sütunda birleştiriyor ardından işime bakıyorum.
Burada da benzer mantık uyguladım.
- Tablolarda, başlığı Kurum_Egitim olan geçici bir sütun oluşturdum ,
- Kurum_Egitim sütununa, KURUM_KODU ile EĞİTİM_KADEMESİ birleştirerek ekledim. Buradaki birleştirme işlemine dikkat edin. Tamsayı (integer) veri ile Metinsel (String) Veri nasıl birleştirildi !!!
- Bu sütunu indeks olarak ayarladım,
- Gruplama ve toplam hesaplama işlemlerini bu satır verilerini kullanarak tespit ettim ve eşleştirdim.
- Son olarak KURUM_KODU’nu indeks olarak ayarlayarak geçici sütunu sildim.
NOT 1:
Toplam Öğrenci sayısı = Erkek Öğrenci + Kız Öğrenci metodu kullanarak hesaplattım. Yani bir tablodaki değeri alıp diğer tabloya yazmadım.
NOT 2:
Tablo içeriği, sendeki ekran görüntüsü ile birebir aynı değil. Kurum_Kodu, Sınıflar, Kız ve Erkek Öğrenci sayılarını, …vb LibreOfis ile rastgele oluşturdum.
import pandas as pd
dosya = pd.read_excel("ANA_TABLO.ods")
df_ana= pd.DataFrame(dosya)
# print("\n\n'df_ana: '\n", df_ana)
dosya = pd.read_excel("ÖĞRENCİ_SAYILARI.ods")
df_ogrenci = pd.DataFrame(dosya)
# print("\n\n'df_ogrenci: '\n", df_ogrenci)
df_ana["Kurum_Egitim"] = df_ana["KURUM_KODU"].astype(str) + "_" + df_ana["EĞİTİM_KADEMESİ"] # df_ana["KURUM_KODU"].apply(str) şeklinde de kullanılabilir.
df_ana = df_ana.set_index("Kurum_Egitim")
# print("\n\n'df_ana: '\n", df_ana)
df_ogrenci["Kurum_Egitim"] = df_ogrenci["KURUM_KODU"].apply(str) + "_" + df_ogrenci["EĞİTİM_KADEMESİ"]
df_ogrenci = df_ogrenci.set_index("Kurum_Egitim")
# print("\n\n'df_ogrenci: '\n", df_ana)
df_ana["ERKEK_ÖĞRENCİ"] = df_ogrenci.groupby("Kurum_Egitim").sum()["ERKEK_ÖĞRENCİ"]
# print("\n\n'df_ana - erkek: '\n", df_ana)
df_ana["KIZ_ÖĞRENCİ"] = df_ogrenci.groupby("Kurum_Egitim").sum()["KIZ_ÖĞRENCİ"]
# print("\n\n'df_ana - kız: '\n", df_ana)
df_ana["TOPLAM_ÖĞRENCİ"] = df_ana["ERKEK_ÖĞRENCİ"] + df_ana["KIZ_ÖĞRENCİ"]
# print("\n\n'df_ana - toplam: '\n", df_ana)
df_ana = df_ana.set_index("KURUM_KODU")
print("\n\n'df_ana - toplam: '\n", df_ana)
# df_ana.drop("Kurum_Egitim", inplace= True)
df_ana.to_excel("ANA_TABLO_Sonuc.ods")
ÇIKTI:
'df_ana: '
KURUM_KODU TİPİ İLÇE KURUM_TÜRÜ KURUM_ADI ... OKUL_SAYISI DERSLİK_SAYISI ERKEK_ÖĞRENCİ KIZ_ÖĞRENCİ TOPLAM_ÖĞRENCİ
0 4 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ... NaN NaN NaN NaN NaN
1 3 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ... NaN NaN NaN NaN NaN
2 1 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN NaN NaN NaN
3 1 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN NaN NaN NaN
4 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN NaN NaN NaN
5 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN NaN NaN NaN
6 8 RESMİ SARICA İlkokul NaN ... NaN NaN NaN NaN NaN
7 7 RESMİ SARICA Ortaokul NaN ... NaN NaN NaN NaN NaN
8 9 RESMİ SARICA İlkokul NaN ... NaN NaN NaN NaN NaN
9 5 RESMİ SALİHLİ İlkokul NaN ... NaN NaN NaN NaN NaN
10 6 RESMİ SALİHLİ İlkokul NaN ... NaN NaN NaN NaN NaN
[11 rows x 12 columns]
'df_ogrenci: '
KURUM_KODU TİPİ İLÇE GENEL_MÜDÜRLÜK KURUM_TÜRÜ ... OKUL_SAYISI DERSLİK_SAYISI ERKEK_ÖĞRENCİ KIZ_ÖĞRENCİ TOPLAM_ÖĞRENCİ
0 5 RESMİ SALİHLİ 4. Genel Müdürlük Anadolu Lisesi ... NaN NaN 7 19 1
1 3 RESMİ SALİHLİ 3. Genel Müdürlük Anadolu Meslek Programı ... NaN NaN 18 6 3
2 2 RESMİ SALİHLİ 9. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 12 8 5
3 4 RESMİ SALİHLİ 7. Genel Müdürlük Anadolu İmam Hatip Lisesi ... NaN NaN 11 7 10
4 5 RESMİ OSMANLI 6. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 2 13 5
5 1 RESMİ OSMANLI 7. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 5 6 9
6 1 RESMİ SARICA 1. Genel Müdürlük İlkokul ... NaN NaN 2 11 20
7 3 RESMİ SARICA 7. Genel Müdürlük Ortaokul ... NaN NaN 4 20 12
8 6 RESMİ SARICA 6. Genel Müdürlük İlkokul ... NaN NaN 5 20 17
9 1 RESMİ SALİHLİ 3. Genel Müdürlük İlkokul ... NaN NaN 8 12 6
10 2 RESMİ SALİHLİ 10. Genel Müdürlük İlkokul ... NaN NaN 15 12 17
11 8 RESMİ SALİHLİ 5. Genel Müdürlük Anadolu Lisesi ... NaN NaN 7 14 4
12 9 RESMİ SALİHLİ 7. Genel Müdürlük Anadolu Meslek Programı ... NaN NaN 8 20 1
13 4 RESMİ SALİHLİ 1. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 12 10 6
14 9 RESMİ SALİHLİ 5. Genel Müdürlük Anadolu İmam Hatip Lisesi ... NaN NaN 10 15 8
15 6 RESMİ OSMANLI 5. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 17 9 11
16 9 RESMİ OSMANLI 9. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 8 18 7
17 1 RESMİ SARICA 10. Genel Müdürlük İlkokul ... NaN NaN 14 13 6
18 3 RESMİ SARICA 9. Genel Müdürlük Ortaokul ... NaN NaN 4 1 6
19 4 RESMİ SARICA 1. Genel Müdürlük İlkokul ... NaN NaN 17 2 20
20 7 RESMİ SALİHLİ 8. Genel Müdürlük İlkokul ... NaN NaN 13 10 5
21 7 RESMİ SALİHLİ 5. Genel Müdürlük İlkokul ... NaN NaN 9 7 3
22 7 RESMİ SALİHLİ 9. Genel Müdürlük Anadolu Lisesi ... NaN NaN 13 1 4
23 2 RESMİ SALİHLİ 7. Genel Müdürlük Anadolu Meslek Programı ... NaN NaN 4 16 9
24 5 RESMİ SALİHLİ 10. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 20 5 17
25 8 RESMİ SALİHLİ 6. Genel Müdürlük Anadolu İmam Hatip Lisesi ... NaN NaN 16 20 14
26 6 RESMİ OSMANLI 6. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 17 20 20
27 5 RESMİ OSMANLI 9. Genel Müdürlük İmam Hatip Lisesi ... NaN NaN 5 17 12
28 2 RESMİ SARICA 1. Genel Müdürlük İlkokul ... NaN NaN 2 15 7
29 9 RESMİ SARICA 1. Genel Müdürlük Ortaokul ... NaN NaN 9 14 2
30 8 RESMİ SARICA 2. Genel Müdürlük İlkokul ... NaN NaN 15 5 5
31 7 RESMİ SALİHLİ 9. Genel Müdürlük İlkokul ... NaN NaN 18 13 15
32 6 RESMİ SALİHLİ 10. Genel Müdürlük İlkokul ... NaN NaN 17 13 13
33 4 RESMİ SALİHLİ 8. Genel Müdürlük İlkokul ... NaN NaN 1 14 18
[34 rows x 16 columns]
'df_ana - Kurum_Egitim: '
KURUM_KODU TİPİ İLÇE KURUM_TÜRÜ KURUM_ADI ... OKUL_SAYISI DERSLİK_SAYISI ERKEK_ÖĞRENCİ KIZ_ÖĞRENCİ TOPLAM_ÖĞRENCİ
Kurum_Egitim ...
4_ORTAÖĞRETİM 4 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ... NaN NaN NaN NaN NaN
3_ORTAÖĞRETİM 3 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ... NaN NaN NaN NaN NaN
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN NaN NaN NaN
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN NaN NaN NaN
2_ORTAÖĞRETİM 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN NaN NaN NaN
2_ORTAOKUL 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN NaN NaN NaN
8_İLKOKUL 8 RESMİ SARICA İlkokul NaN ... NaN NaN NaN NaN NaN
7_ORTAOKUL 7 RESMİ SARICA Ortaokul NaN ... NaN NaN NaN NaN NaN
9_İLKOKUL 9 RESMİ SARICA İlkokul NaN ... NaN NaN NaN NaN NaN
5_İLKOKUL 5 RESMİ SALİHLİ İlkokul NaN ... NaN NaN NaN NaN NaN
6_İLKOKUL 6 RESMİ SALİHLİ İlkokul NaN ... NaN NaN NaN NaN NaN
[11 rows x 12 columns]
'df_ogrenci indeks Kurum_Egitim: '
KURUM_KODU TİPİ İLÇE KURUM_TÜRÜ KURUM_ADI ... OKUL_SAYISI DERSLİK_SAYISI ERKEK_ÖĞRENCİ KIZ_ÖĞRENCİ TOPLAM_ÖĞRENCİ
Kurum_Egitim ...
4_ORTAÖĞRETİM 4 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ... NaN NaN NaN NaN NaN
3_ORTAÖĞRETİM 3 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ... NaN NaN NaN NaN NaN
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN NaN NaN NaN
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN NaN NaN NaN
2_ORTAÖĞRETİM 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN NaN NaN NaN
2_ORTAOKUL 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN NaN NaN NaN
8_İLKOKUL 8 RESMİ SARICA İlkokul NaN ... NaN NaN NaN NaN NaN
7_ORTAOKUL 7 RESMİ SARICA Ortaokul NaN ... NaN NaN NaN NaN NaN
9_İLKOKUL 9 RESMİ SARICA İlkokul NaN ... NaN NaN NaN NaN NaN
5_İLKOKUL 5 RESMİ SALİHLİ İlkokul NaN ... NaN NaN NaN NaN NaN
6_İLKOKUL 6 RESMİ SALİHLİ İlkokul NaN ... NaN NaN NaN NaN NaN
[11 rows x 12 columns]
'df_ana - erkek: '
KURUM_KODU TİPİ İLÇE KURUM_TÜRÜ KURUM_ADI ... OKUL_SAYISI DERSLİK_SAYISI ERKEK_ÖĞRENCİ KIZ_ÖĞRENCİ TOPLAM_ÖĞRENCİ
Kurum_Egitim ...
4_ORTAÖĞRETİM 4 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ... NaN NaN NaN NaN NaN
3_ORTAÖĞRETİM 3 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ... NaN NaN 18.0 NaN NaN
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN 7.0 NaN NaN
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN 7.0 NaN NaN
2_ORTAÖĞRETİM 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN 6.0 NaN NaN
2_ORTAOKUL 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN 12.0 NaN NaN
8_İLKOKUL 8 RESMİ SARICA İlkokul NaN ... NaN NaN 38.0 NaN NaN
7_ORTAOKUL 7 RESMİ SARICA Ortaokul NaN ... NaN NaN NaN NaN NaN
9_İLKOKUL 9 RESMİ SARICA İlkokul NaN ... NaN NaN 8.0 NaN NaN
5_İLKOKUL 5 RESMİ SALİHLİ İlkokul NaN ... NaN NaN 14.0 NaN NaN
6_İLKOKUL 6 RESMİ SALİHLİ İlkokul NaN ... NaN NaN 17.0 NaN NaN
[11 rows x 12 columns]
'df_ana - kız: '
KURUM_KODU TİPİ İLÇE KURUM_TÜRÜ KURUM_ADI ... OKUL_SAYISI DERSLİK_SAYISI ERKEK_ÖĞRENCİ KIZ_ÖĞRENCİ TOPLAM_ÖĞRENCİ
Kurum_Egitim ...
4_ORTAÖĞRETİM 4 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ... NaN NaN NaN NaN NaN
3_ORTAÖĞRETİM 3 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ... NaN NaN 18.0 6.0 NaN
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN 7.0 17.0 NaN
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN 7.0 17.0 NaN
2_ORTAÖĞRETİM 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN 6.0 31.0 NaN
2_ORTAOKUL 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN 12.0 8.0 NaN
8_İLKOKUL 8 RESMİ SARICA İlkokul NaN ... NaN NaN 38.0 39.0 NaN
7_ORTAOKUL 7 RESMİ SARICA Ortaokul NaN ... NaN NaN NaN NaN NaN
9_İLKOKUL 9 RESMİ SARICA İlkokul NaN ... NaN NaN 8.0 18.0 NaN
5_İLKOKUL 5 RESMİ SALİHLİ İlkokul NaN ... NaN NaN 14.0 49.0 NaN
6_İLKOKUL 6 RESMİ SALİHLİ İlkokul NaN ... NaN NaN 17.0 20.0 NaN
[11 rows x 12 columns]
'df_ana - toplam = (Erkek + Kız): '
KURUM_KODU TİPİ İLÇE KURUM_TÜRÜ KURUM_ADI ... OKUL_SAYISI DERSLİK_SAYISI ERKEK_ÖĞRENCİ KIZ_ÖĞRENCİ TOPLAM_ÖĞRENCİ
Kurum_Egitim ...
4_ORTAÖĞRETİM 4 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ... NaN NaN NaN NaN NaN
3_ORTAÖĞRETİM 3 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ... NaN NaN 18.0 6.0 24.0
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN 7.0 17.0 24.0
1_ORTAÖĞRETİM 1 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ... NaN NaN 7.0 17.0 24.0
2_ORTAÖĞRETİM 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN 6.0 31.0 37.0
2_ORTAOKUL 2 RESMİ OSMANLI İmam Hatip Lisesi NaN ... NaN NaN 12.0 8.0 20.0
8_İLKOKUL 8 RESMİ SARICA İlkokul NaN ... NaN NaN 38.0 39.0 77.0
7_ORTAOKUL 7 RESMİ SARICA Ortaokul NaN ... NaN NaN NaN NaN NaN
9_İLKOKUL 9 RESMİ SARICA İlkokul NaN ... NaN NaN 8.0 18.0 26.0
5_İLKOKUL 5 RESMİ SALİHLİ İlkokul NaN ... NaN NaN 14.0 49.0 63.0
6_İLKOKUL 6 RESMİ SALİHLİ İlkokul NaN ... NaN NaN 17.0 20.0 37.0
[11 rows x 12 columns]
'df_ana - indeks KURUM_KODU: '
TİPİ İLÇE KURUM_TÜRÜ KURUM_ADI SINIF1 EĞİTİM_KADEMESİ OKUL_SAYISI DERSLİK_SAYISI ERKEK_ÖĞRENCİ KIZ_ÖĞRENCİ TOPLAM_ÖĞRENCİ
KURUM_KODU
4 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi 9. SINIF ORTAÖĞRETİM NaN NaN NaN NaN NaN
3 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi 9. SINIF ORTAÖĞRETİM NaN NaN 18.0 6.0 24.0
1 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 9. SINIF ORTAÖĞRETİM NaN NaN 7.0 17.0 24.0
1 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 9. SINIF ORTAÖĞRETİM NaN NaN 7.0 17.0 24.0
2 RESMİ OSMANLI İmam Hatip Lisesi NaN 9. SINIF ORTAÖĞRETİM NaN NaN 6.0 31.0 37.0
2 RESMİ OSMANLI İmam Hatip Lisesi NaN 5. SINIF ORTAOKUL NaN NaN 12.0 8.0 20.0
8 RESMİ SARICA İlkokul NaN 1. SINIF İLKOKUL NaN NaN 38.0 39.0 77.0
7 RESMİ SARICA Ortaokul NaN 1. SINIF ORTAOKUL NaN NaN NaN NaN NaN
9 RESMİ SARICA İlkokul NaN 1. SINIF İLKOKUL NaN NaN 8.0 18.0 26.0
5 RESMİ SALİHLİ İlkokul NaN 1. SINIF İLKOKUL NaN NaN 14.0 49.0 63.0
6 RESMİ SALİHLİ İlkokul NaN 1. SINIF İLKOKUL NaN NaN 17.0 20.0 37.0
2 Beğeni
Hocam, teşekkür ederim. Elinize emeğinize sağlık
Haklısınız, eğitim kademesine göre ayırıyor.
Hocam, denedim tamamdır.
Hocam, bu işlemi pandas sql ile yapabilir miyiz
import pandas as pd
import sqlite3
dosya = pd.read_excel(r"C:\Users\ErdalOZDEMIR\Desktop\PYTHON_DATA\ANA_TABLO.xlsx")
df_ana= pd.DataFrame(dosya)
conn = sqlite3.connect(r"C:\Users\ErdalOZDEMIR\Desktop\PYTHON_DATA\ROPORLAR (DÜZENLENEN)\ÖĞRENCİ_SAYILARI.xlsx")
sql = ("SELECT KURUM_KODU, EĞİTİM_KADEMESİ,Sum(ERKEK_ÖĞRENCİ),Sum(KIZ_ÖĞRENCİ),Sum(TOPLAM_ÖĞRENCİ)"
"FROM ÖĞRENCİ_SAYILARI groupby KURUM_KODU,EĞİTİM_KADEMESİ"
"WHERE(EĞİTİM_KADEMESİ=İLKOKUL,ORTAOKUL,ORTAÖĞRETİM")
print(sql)
conn.close()
Rica ederim.
SQL (programlama) dili hakkında bilgim yok maalesef
Hocam Merhaba,
Öğrenci sayılarıyla ilgili; Verileri Ana tabloya aktarınca yanındaki tüm sayfalar siliniyor. Bunun bir çözümü var mı
Bende hiç bir veri silinmiyor.
Zira sadece Ana Dosyadaki ERKEK_ÖĞRENCİ
ve KIZ_ÖĞRENCİ
sütunlarında işlem yapıyoruz.
Son gönderdiğim mesajdaki kodu mu kullanıyorsun?
Hocam veriler silinmiyor, yanındaki diğer sayfalar siliniyor. Son gönderdiğiniz kodu kullanıyorum.
Aferdesin, yanlış anladım.
İstediğin için aşağıdaki kodu inceleyip kendi koduna uyarlayabilirsin.
önceki mesajımda yazdığım kodların sonundaki şu kısmı df_ana.to_excel("ANA_TABLO_Sonuc.ods")
sil, yerine aşağıdaki kodu (uyarlayıp) ekle
filename = "ANA_TABLO.xlsx"
def write_excel(filename,Sayfa1,dataframe):
with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer:
workBook = writer.book
try:
workBook.remove(workBook[Sayfa1])
except:
print("Worksheet does not exist")
finally:
dataframe.to_excel(writer, sheet_name=Sayfa1,index=False)
writer._save()
write_excel(filename,'Sayfa1',df_ana)
Pandas’ın ExcelWriter
metodundaki mode
parametresi işimizi çözüyor.
mode parametresi iki değer alabiliyor. {w
: yaz, a
: ekle}, Varsayılan mod w
yani yazma modu.
Önce df_ana verisini istediğimiz gibi elde ediyoruz. Yazma aşamasına getiriyoruz.
Ardından Excel dosyasındaki İlgili sekmeyi silip, aynı isimle yeniden EKLİYORUZ
Kaynaklar
1 Beğeni
Hocam Merhaba,
Teşekkür ederim
Hocam denedim; Sayfayı en sona atıyor, ayrıca dosyayı açtığımızda tekrar kayıt istiyor.
Rica ederim.
Sekmeyi, excel’in ilk sekmesine taşımak için openpyxl
kütüphanesinin move_sheet()
metodunu kullanabilirsin.
Dosyayı açtığımda benden tekrar kayıt istemiyor.
from openpyxl import load_workbook
wb = load_workbook(filename)
sa = len(wb.sheetnames) # sekme adları sayısı
wb.move_sheet("Sayfa1", offset = -(sa-1))
wb.save(filename)
Kodun tamamı ; (İlk Sekmeye taşımaya çalıştığım sekmenin adı: “Sayfa1”)
import pandas as pd
from openpyxl import Workbook
from openpyxl import load_workbook
dosya = pd.read_excel("ANA_TABLO.ods")
df_ana= pd.DataFrame(dosya)
dosya = pd.read_excel("ÖĞRENCİ_SAYILARI.ods")
df_ogrenci = pd.DataFrame(dosya)
df_ana["Kurum_Egitim"] = df_ana["KURUM_KODU"].astype(str) + "_" + df_ana["EĞİTİM_KADEMESİ"] # df_ana["KURUM_KODU"].apply(str) şeklinde de kullanılabilir.
df_ana = df_ana.set_index("Kurum_Egitim")
df_ogrenci["Kurum_Egitim"] = df_ogrenci["KURUM_KODU"].apply(str) + "_" + df_ogrenci["EĞİTİM_KADEMESİ"]
df_ogrenci = df_ogrenci.set_index("Kurum_Egitim")
df_ana["ERKEK_ÖĞRENCİ"] = df_ogrenci.groupby("Kurum_Egitim").sum()["ERKEK_ÖĞRENCİ"]
df_ana["KIZ_ÖĞRENCİ"] = df_ogrenci.groupby("Kurum_Egitim").sum()["KIZ_ÖĞRENCİ"]
df_ana["TOPLAM_ÖĞRENCİ"] = df_ana["ERKEK_ÖĞRENCİ"] + df_ana["KIZ_ÖĞRENCİ"]
df_ana = df_ana.set_index("KURUM_KODU")
def write_excel(filename, Sayfa, dataframe):
with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer:
workBook = writer.book
try:
workBook.remove(workBook[Sayfa])
except:
print("Worksheet does not exist")
finally:
dataframe.to_excel(writer, sheet_name=Sayfa, index=False)
writer._save()
filename = "ANA_TABLO.xlsx"
write_excel(filename, "Sayfa1" ,df_ana)
wb = load_workbook(filename)
sa = len(wb.sheetnames) # sekme adları sayısı
wb.move_sheet("Sayfa1", offset = -(sa-1))
wb.save(filename)
Kaynak
1 Beğeni
Hocam Merhaba,
Teşekkür ederim. Elinize emeğinize sağlık.
Sorun çözülmüştür. Hocam, bu öğrenci sayılarını Openpyxl ile yapabilir miyiz. Birde bunu görmek istiyorum. Yoksa başka bir konu açarak mı sorayım.
Hayırlı Akşamlar
Rica ederim.
Openpyxl kütüphanesini daha önce görmüştüm ancak pek kullanmadım.
Senin soru üzerine çözüm yolu araştırırken Openpyxl ile tekrar yolum kesişti.
Kütüphaneye ait dokümantasyon incelendiğinde Excel ile yapılabilen pek çok şey, bu kütüphane ile de yapılabilir kanaatine varıyorum.
Openpyxl Kütüphanesi Dokümantosyonu;