Tablo okuma ve düzenleme

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.

Tablo

Ö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  


1 Beğeni

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

1 Beğeni

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;

https://xlsxwriter.readthedocs.io/index.html

1 Beğeni

İ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])
1 Beğeni