Aşağıda bir excel tablom ve birden fazla çalışma sayfası var. Bu çalışma sayfalarını AGF sütununa göre sıralamak istiyorum ve İndex sütununu kaldırmak istiyorum. Yardımcı olabilir misiniz.
Öncelikle kütüphanemizi import edelim.
import pandas as pd
Şimdi ise üzerinde işlem yapacağımız veriyi tanımlayalım
veri=pd.read_excel("İSTANBUL (Veliefendi)08.03.2023.xlsx",header=1,sheet_name=None)
Buradaki header=1
sütunların 2. satırdan itibaren okunacağını belirtiyor yani
İşaretlediğim kısmı almayacak.
sheet_name=None
yazarakta (Sheet sayfa demek oluyor) tüm sayfaların verisini çekiyoruz ve bir sözlük tipinde veri elde ediyoruz.Eğer sheet_name="Sayfa-1"
gibi bir şey yazsaydık direk içindeki veriyi verecekti ama biz bu şekilde yaparak şu şekilde bir çıktı elde ediyoruz:{“Sayfaadı1”:“veriler”,“Sayfaadı2”:“veriler”}.
with pd.ExcelWriter("İSTANBUL (Veliefendi)08.03.2023.xlsx") as w:
Burada yazacağımız excel için yazıcı nesnesi oluşturuyoruz.
Sonra bu with in içine bir döngü kuruyoruz.
for sayfa,eski in veri.items():
Verinin her değerinin key (sayfaadı) kısmını sayfa değerine koy values (veri) değerini eski değerine koy
for un içine
y=eski.drop(eski.columns[0],axis=1).sort_values(by="AGF")
y.to_excel(w, sheet_name=sayfa, index=False)
bunu yazıyoruz.
y=eski.drop(eski.columns[0],axis=1).sort_values(by="AGF")
Bu kod y nin içine eski değerindeki ilk sütunun adındaki sütunu sil diyoruz ve AGF sütununa göre sırala
y.to_excel(w, sheet_name=sayfa, index=False)
bu kod y yi excele çevir yazıcı değerini atadık w ile sonra hangi sayfaya yazacağımızı ve son olarak index sütunu oluşturmasın dedik.
Kodumuzun son hali bu şekilde
import pandas as pd
veri=pd.read_excel("İSTANBUL (Veliefendi)08.03.2023.xlsx",header=1,sheet_name=None)
with pd.ExcelWriter("İSTANBUL (Veliefendi)08.03.2023.xlsx") as w:
for sayfa,eski in veri.items():
y=eski.drop(eski.columns[0],axis=1).sort_values(by="AGF")
y.to_excel(w, sheet_name=sayfa, index=False)
Not: Eğer kodu 2 kere çalıştırsanız hata verecektir ve İSTANBUL (Veliefendi)08.03.2023.xlsx adlı dosyayı bozacaktır çünkü ilk satırı tekrar yok sayıyor ama bu sefer ilk satırda sütun adlarımız var onu yok sayarsa alt satırda AGF adlı sütunu bulamaz ve hata verir
import pandas as pd
sheets = pd.ExcelFile("İSTANBUL (Veliefendi)08.03.2023.xlsx")
kosu= sheets.sheet_names
for i in range(len(kosu)):
df = pd.read_excel("İSTANBUL (Veliefendi)08.03.2023.xlsx", sheet_name=kosu[i], skiprows=[0])
print(df.head().sort_values(by="AGF"))
Çıktı;
Unnamed: 0 NO AGF ATADI TAKI AYGIR_KISRAK KILO \
1 0.0 1.0 - AŞKIN ABİ GD Balıkhan/Alçiçektınaz(Angora) 58.0
2 1.0 2.0 - BELLATRIX GK1 Haberbatur/Berilim(Toşur) 58.0
3 2.0 3.0 - FARYALI GK Enginhan/Pervinhanım(Muratağa) 55.0
4 3.0 4.0 - KAV BEY GD Hisarbey/Mesrure52(Alkuruş13) 58.0
0 NaN NaN NaN NaN NaN NaN NaN
JOKEY ATSAHIBI/ANTRENOR START HANDIKAP_PUANI DERECE \
1 E.Aktuğ İ.Altunbaş/T.Ateş 6.0 26 6 - 8 4 4
2 M.Kaya Ö.E.Sofuoğlu/H.Şimşek 3.0 36 7 - 4 2 8
3 B.Çığla Nuri Yıldız/H.Harmanbaşı 5.0 18 5 0 5
4 A.Kurşun O.Seyhan/D.Kaya 8.0 31 9 - 7 3 7 3
0 NaN NaN NaN NaN NaN
KOSMADIGI GUN ORT.PUAN
1 39 23.0
2 14 71.0
3 6 4.0
4 14 115.0
0 NaN NaN
Unnamed: 0 NO AGF ATADI TAKI \
1 0.0 1.0 8.62 ASUDE SULTAN D
4 3.0 4.0 10.87 PASSION RUNNER G
2 1.0 2.0 11.73 THE BEAUTIFUL ECE G
3 2.0 3.0 25.33 SECRET EAGLE NaN
0 NaN NaN NaN NaN NaN
AYGIR_KISRAK KILO JOKEY \
1 Footstepsinthesand(GB)/CasaTua(FR)(OasisDream) 61.0 K.Demirel
4 ChurchPictures(GB)/SummerSun(Galetto) 59.5 M.Kaya
2 MaviKumsal/DevriSaadet(LastCommander) 58.5 G.Özçelik
3 SmartRobin(JPN)/Atenflex(Medya) 60.0 G.Kocakaya
0 NaN NaN NaN
ATSAHIBI/ANTRENOR START HANDIKAP_PUANI DERECE KOSMADIGI GUN \
1 V.Kahraman/Müc.Kaya 1.0 72.0 1 7 1 2 - 7 5 18.0
4 Y.Turaktekin/H.Şimşek 11.0 65.0 6 2 5 6 - 8 3 18.0
2 B.Ataç/Z.B.Durgun 5.0 67.0 2 2 - 1 8 3 4 11.0
3 Alper Özbek/H.Acar 9.0 66.0 3 6 4 - 6 2 2 18.0
0 NaN NaN NaN NaN NaN
ORT.PUAN
1 83.0
4 51.0
2 115.0
3 132.0
0 NaN
Unnamed: 0 NO AGF ATADI TAKI AYGIR_KISRAK \
2 1.0 2.0 2.21 AKIŞ GD Turbo/PembeŞeker(Birader)
4 3.0 4.0 5.50 CİĞERDELEN NaN Sarraf/Yaprakcık(Tulyad)
3 2.0 3.0 6.48 ALEVKIRAN GD Ateştopu/Acarhatun(Druid)
1 0.0 1.0 22.41 NAKIŞ G Batukan/Bakhaber(Haberbatur)
0 NaN NaN NaN NaN NaN NaN
KILO JOKEY ATSAHIBI/ANTRENOR START HANDIKAP_PUANI \
2 55.0 C.Paso Muhammed Yıldız/Hüs.Karabulut 5.0 53.0
4 54.0 K.Demirel C.Ün/Mur.Akkılıç 4.0 75.0
3 55.0 Z.Karabulut M.Ş.Girer/C.Turan 11.0 77.0
1 59.0 A.Yıldız G.N.Sümer/T.Ateş 7.0 89.0
0 NaN NaN NaN NaN NaN
DERECE KOSMADIGI GUN ORT.PUAN
2 7 0 8 7 - 1 9 11.0 6.0
4 8 9 3 5 9 - 6 11.0 41.0
3 1 5 - 4 4 7 5 32.0 28.0
1 5 1 - 1 3 5 9 4.0 123.0
0 NaN NaN NaN
Unnamed: 0 NO AGF ATADI TAKI AYGIR_KISRAK \
3 2.0 3.0 1.91 MUHBİR GK Kaizbert(RUS)/SimSim(Tekelioğlu)
1 0.0 1.0 6.17 EYLEM HANIM G Siyahbulut/Yekgün(İbocan)
2 1.0 2.0 7.89 JAVARONOK GKD Kaizbert(RUS)/Haççe(Haberbatur)
4 3.0 4.0 14.73 ULUARAT GK Uluer/Koşarat(Emiroğlu)
0 NaN NaN NaN NaN NaN NaN
KILO JOKEY ATSAHIBI/ANTRENOR START HANDIKAP_PUANI \
3 55.0 A.Kaçmaz Mert Çelik/E.Koca 9.0 40.0
1 56.0 M.Kaya Eylem Taniyit/Güv.Gökçe 5.0 38.0
2 51.0 Ç.Taşcı Mete Çelik/E.Koca 2.0 49.0
4 52.0 B.Çığla M.E.Düzarat/Hay.Yıldırım 6.0 57.0
0 NaN NaN NaN NaN NaN
DERECE KOSMADIGI GUN ORT.PUAN
3 2 2 3 - 5 1 0 13.0 2.0
1 0 3 - 5 8 2 1 14.0 51.0
2 1 5 8 - 6 1 2 14.0 78.0
4 0 2 1 3 - 3 1 42.0 163.0
0 NaN NaN NaN
Unnamed: 0 NO AGF ATADI TAKI \
1 0.0 1.0 3.90 BEST OF CANAN GD1
3 2.0 3.0 19.84 HOT TOCCET NaN
2 1.0 2.0 26.45 FREE SPIRIT NaN
4 3.0 4.0 43.65 SOPHIANEA D
0 NaN NaN NaN NaN NaN
AYGIR_KISRAK KILO JOKEY \
1 SidneysCandy(USA)/Çamsakızı(OceanCrest) 54.0 A.Kurşun
3 Toccet(USA)/HeatBlast(StrikeTheGold) 54.0 H.Karataş
2 Scarface/Ciripaha(USA)(BigBrown) 54.0 G.Kocakaya
4 Bushranger(IRE)/LuckyNumber(Dehere) 56.0 M.Kaya
0 NaN NaN NaN
ATSAHIBI/ANTRENOR START HANDIKAP_PUANI DERECE KOSMADIGI GUN \
1 K.Yararel/N.Esen 1.0 54.0 3 1 1 3 8 - 4 50.0
3 A.Ş.Evcimen/H.Boyraz 5.0 70.0 5 4 3 2 4 - 4 38.0
2 K.Kurt/T.Pelen 2.0 62.0 2 1 1 2 - 1 4 34.0
4 Selim Kaya/V.Karakuş 4.0 68.0 1 1 3 - 5 1 3 11.0
0 NaN NaN NaN NaN NaN
ORT.PUAN
1 7.0
3 102.0
2 151.0
4 163.0
0 NaN
Unnamed: 0 NO AGF ATADI TAKI \
2 1.0 2.0 1.07 APPROVED STAR G!?
3 2.0 3.0 5.86 ATICI BEY GD
4 3.0 4.0 9.39 EXPECTANCY KD
1 0.0 1.0 30.11 DENİZHAN NaN
0 NaN NaN NaN NaN NaN
AYGIR_KISRAK KILO JOKEY \
2 Approve(IRE)/Starlit(BinAjwaad) 56.0 M.Kaya
3 CardinalPioneer/TsunamiGirl(ScreamToScream) 55.0 G.Kocakaya
4 Hakeem(USA)/Karen'sCuisine(USA)(Leroidesanimaux) 55.0 A.Kurşun
1 Kaneko/Silva(Karelin) 58.0 G.Özçelik
0 NaN NaN NaN
ATSAHIBI/ANTRENOR START HANDIKAP_PUANI DERECE \
2 Z.Saraçoğlu/Aydın Alçiçek 8.0 54 5 9 - 7 9 6 0
3 Fırat Yıldırım/E.Ergünay 5.0 90 5 9 5 2 - 4 1
4 H.Kızılca/N.Esen 9.0 98 3 1 2 7 7 3 -
1 K.Şahin/M.Öztürk 6.0 83 3 1 1 2 - 1 1
0 NaN NaN NaN NaN
KOSMADIGI GUN ORT.PUAN
2 11 6.0
3 12 38.0
4 126 81.0
1 32 153.0
0 NaN NaN
Unnamed: 0 NO AGF ATADI TAKI \
2 1.0 2.0 3.26 PRENSES LİNA GD
1 0.0 1.0 6.70 ÇAĞLAYANŞELALE GD
3 2.0 3.0 7.01 BAŞAYDIN GD
4 3.0 4.0 16.64 KESKİN TAY GKD1
0 NaN NaN NaN NaN NaN
AYGIR_KISRAK KILO JOKEY ATSAHIBI/ANTRENOR \
2 Hisarbey/Alaziye(Alaz) 60.0 F.Çetinbaş E.Fırat/B.Şengel
1 Kaizbert(RUS)/Haççe(Haberbatur) 61.0 C.Altun F.T.Yıldız/Y.Karaküçük
3 Bilgin/Aybastı(Sülo) 60.0 E.Aktuğ Sedat Demir/R.Güneli
4 Doğangün/KarGüzeli(AnadoluAteşi) 59.5 G.Kocakaya Ş.Batmaz/S.Baydan
0 NaN NaN NaN NaN
START HANDIKAP_PUANI DERECE KOSMADIGI GUN ORT.PUAN
2 5.0 60.0 2 7 1 - 8 4 0 13.0 28.0
1 2.0 60.0 1 1 5 - 6 6 6 16.0 53.0
3 6.0 54.0 8 0 8 5 - 7 2 49.0 41.0
4 10.0 53.0 4 2 2 6 - 5 5 49.0 69.0
0 NaN NaN NaN NaN NaN
için klasör yolunu belirttim.
Traceback (most recent call last):
File "C:\Users\Recep_PC\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3457, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-2-ba05f54b83c0>", line 1, in <module>
runfile('C:\\Users\\Recep_PC\\PycharmProjects\\pythonProject\\function_kosu_verileri.py', wdir='C:\\Users\\Recep_PC\\PycharmProjects\\pythonProject')
File "C:\Program Files\JetBrains\PyCharm 2022.3\plugins\python\helpers\pydev\_pydev_bundle\pydev_umd.py", line 198, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2022.3\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:\Users\Recep_PC\PycharmProjects\pythonProject\function_kosu_verileri.py", line 23, in <module>
print(df.head().sort_values(by="AGF"))
File "C:\Users\Recep_PC\Anaconda3\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper
return func(*args, **kwargs)
File "C:\Users\Recep_PC\Anaconda3\lib\site-packages\pandas\core\frame.py", line 6322, in sort_values
k = self._get_label_or_level_values(by, axis=axis)
File "C:\Users\Recep_PC\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1840, in _get_label_or_level_values
raise KeyError(key)
KeyError: 'AGF'
AGF adlı sütun bulunamadı
Kodları Linux işletim sisteminde çalıştırıyorum, XLSX dosyası ile PYTHON dosyası aynı kasörde olsa da olmasada, dosya konumu doğru yazıldığında kod dğru çalıştı.
Eğer her koşu, sıralandıktan sonra ayrı bir excel olarak kaydedilsin isterseniz de aşağıdaki kodu çalıştırabilirsiniz.
İşlem Sonucunda Python dosyasının bulunduğu dizinde Kosu1.xlsx, Kosu2.xlsx, …Kosu7.xlsx isimli dosyalar oluşuyor.
import pandas as pd
sheets = pd.ExcelFile("İSTANBUL (Veliefendi)08.03.2023.xlsx")
kosu= sheets.sheet_names
for i in range(len(kosu)):
df = pd.read_excel("İSTANBUL (Veliefendi)08.03.2023.xlsx", sheet_name=kosu[i], skiprows=[0])
sonuc = df.head().sort_values(by="AGF")
sirali = kosu[i] + ".xlsx"
sonuc.to_excel(sirali)
sıralamayı artandan azalana sıralamak için sort values içinde ascanding true diyorum ama değişmiyor
ascending=False yapmalısın
Sildiğimiz ana başlığı geri koyabilirmiyiz.
satırları koşullu biçimlendirme yapabiliyormuyuz excelde( bayrak ekleme, kalın yazı , yazı rengi vb) hangi konuya eğilmeliyim bunları yapabilmek için
Burayı inceleyebilirsiniz;
İstek doğrultusunda sıralama yapıldıktan sonra sonucu AYNI Excel dosyasında FARKLI Sekmelerde kaydetmek için aşağıdaki kodu çalıştırabilirsiniz.
import pandas as pd
sheets = pd.ExcelFile("İSTANBUL (Veliefendi)08.03.2023.xlsx")
kosu= sheets.sheet_names
kosu
with pd.ExcelWriter('Sirali_Tum_Kosular.xlsx') as dosya:
for i in range(len(kosu)):
df = pd.read_excel("İSTANBUL (Veliefendi)08.03.2023.xlsx", sheet_name=kosu[i], skiprows=[0])
sonuc = df.head().sort_values(by="AGF")
sonuc.to_excel(dosya, sheet_name=kosu[i])