Şimdi Ara

Python Kodunda Revizyom

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
3
Cevap
0
Favori
240
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar merhaba. Kodlama bilgim sıfır. Elimde aşağıda paylaştığım gibi bir kod var. Bu kod google colab' da kullanılıyor. "print" yazan satır da dahil oraya kadar olan kısım ayrı, alttaki kısım ayrı olarak colab' da "kod" yazan kısma yazılıp, çalıştırılıyor. Bu kodla ilgili bazı eksikler ve düzenlenmesi gereken yerler var. Eğer yardımcı olabilirseniz çok sevinirim, çünkü aciliyeti ve önemi var:

    1- Bu kodu başka bir platformda nasıl kullanabilirim ?(Örneğin;onecomplier.com benzeri online kullanım yerleri) çünkü bu haliyle yazınca hata veriyor.

    2- Bakın kodda 4 adet küme için çıktı alıyorsunuz. Bu koda aynı anda bunun gibi atıyorum 3 adet 4'lü küme yazıp, aynı anda tek dosyada hepsi için ayrı ayrı çıktı almak istiyorum. Bunun için kodda düzenleme gerek.

    3- Kodun verdiği çıktının ekran görüntüsü 1 nolu resimde görülmekte. Ben bu formatta değişik istiyorum. Bakın P ve N' ler ayrı ayrı sütunlarda belirtilmiş. benim istediğim format 2 nolu resimdeki gibi: P ve N'ler tek sütunda birleşik, hemen yanındaki sütunda ise değerler var. "PPPP" şeklindeki A sütunundaki değerler "Z' den A' ya sırala" şeklinde sıralanmış olmalı. Ben önce 1 nolu resimdeki çıktıdaki P ve N' leri tek sütunda birleştiriyorum, sonra da "Sırala ve Filtre Uygula" dan "Z' den A' ya sırala" ya tıklayarak bir sıralama elde ediyorum. İşte bu manuel işlemi en başta kod otomatik olarak yapsın çıktı alırken.


    Yukarıda üç ayrı maddede belirttim meramımı. Eğer yardımcı olabilecek arkadaşlar varsa çok makbule geçer. Herkese iyi haftalar diliyorum.


    # -*- coding: utf-8 -*-

    """Algoritma.ipynb


    Automatically generated by Colaboratory.


    Original file is located at

        https://colab.research.google.com/drive/1h5599jkQRgJ0xHfVAPkbTf4Abl_6lHA-

    """


    from itertools import combinations

    import pandas as pd

    import numpy as np

    from google.colab import files


    # Veriler------------------------------

    # Sadece aşağıdaki rakamlar ve çift tek kısımları değişltirilecek.

    # Sonra yukarıdaki menüde Çalışma Zamanı --> Tümünü Çalıştır.


    kume_1 = [ [20,7,4,11],      "cift"]

    kume_2 = [ [1,2,4,15,4],     "tek"]

    kume_3 = [ [17,3,6,1,2,4],   "cift"]

    kume_4 = [ [20,7,3],         "cift"]

    # -------------------------------------


    tum_kumeler = [kume_1, kume_2, kume_3, kume_4]

    kullanilan_sayilar = []

    for kume in tum_kumeler:

     for sayi in kume[0]:

         if sayi not in kullanilan_sayilar:

           kullanilan_sayilar.append(sayi)

    kullanilan_sayilar.sort()

    print("Kullanılan Sayılar: ",kullanilan_sayilar )


    def sub_lists (l):

       comb = []

       for i in range(len(l)+1):

           comb += [list(j) for j in combinations(l, i)]

       return comb[1:]


    def conver_str(l):

     result_list = []


     for x in l:

       string = ""

       for y in x:

         string +=str(y) + ','

       result_list.append(string[:-1])


     return (result_list)


    df = pd.DataFrame(columns = ["Küme 1 " + kume_1[1], "Küme 2 " + kume_2[1], "Küme 3 " + kume_3[1], "Küme 4 " + kume_4[1]],

                     index = conver_str(sub_lists(kullanilan_sayilar)))

    df.head(5)


    for x in range(len(df.index)):

     for y in range(len(df.columns)):

       sum = 0

       for z in df.index[x].split(','):

           sum += tum_kumeler[y][0].count(int(z))

       df.iloc[x,y] = sum

    df.head(5)


    df_result = pd.DataFrame(index = df.index,

                            columns = list(df.columns) + ["Sonuç"])

    for row in df.index:

     for col in df.columns:

       if (df.loc[row, col] % 2 == 0 and col[-1] == "t") or (df.loc[row, col] % 2 != 0 and col[-1] == "k"):

         df_result.loc[row,col] = 'P'

       else:

         df_result.loc[row,col] = 'N'


       row_result = list(df_result.loc[row])


       if row_result.count('P') == 4:

         df_result.loc[row, "Sonuç"] = 'A'


       elif (row_result[2] == 'N' or row_result[3] == 'N'):

         df_result.loc[row, "Sonuç"] = 'B'


       elif (row_result[0] == 'P' and row_result[1] == 'P'):

         df_result.loc[row, "Sonuç"] = 'C'


       elif (row_result[0] == 'N' or row_result[1] == 'N'):

         df_result.loc[row, "Sonuç"] = 'D'


       elif (row_result[0] == 'P' or row_result[1] == 'P'):

         df_result.loc[row, "Sonuç"] = 'E'


       elif row_result.count('B') == 4:

         df_result.loc[row, "Sonuç"] = 'F'


    df_result.sort_values(by=['Sonuç']).head()




    df_result.sort_values(by=['Sonuç']).to_excel("Sonuçlar.xlsx")

    files.download('Sonuçlar.xlsx')



    Python Kodunda Revizyom


    Python Kodunda Revizyom







    1. Google Colab özelinde kullanılan from google.colab import files gibi satırlar dış platformlarda hata verecektir. Eğer kodu başka bir platformda çalıştırmak istiyorsanız, bu satırı ve files.download('Sonuçlar.xlsx') satırını kaldırmalısınız. Bunun yerine, dosyayı doğrudan kaydedebilir ve kullanıcıya indirme linki verebilirsiniz. repl.it, onecompiler.com gibi sitelerde kodu çalıştırmak için bu değişiklikleri yapabilirsiniz.
    2. Birden fazla 4'lü küme grubu için çalıştırmak istiyorsanız, kümeleri bir döngü içinde işleyecek şekilde kodunuzu genelleştirmeniz gerekecek. Bunun için her küme grubunu bir liste içinde saklayabilir ve dışarıdan bir döngü ile bu listeyi işleyebilirsiniz. Her bir küme grubu için ayrı bir DataFrame oluşturup sonuçları birleştirebilirsiniz.
    3. Çıktı formatını değiştirmek için, df_result DataFrame'ini düzenleyerek P ve N değerlerini birleştirebilir ve istenilen sütun sıralamasını sağlayabilirsiniz. İstenen formata göre sıralama ve düzenleme yapılabilir.


    Aşağıda, kodunuzda yapmanız gereken düzenlemeleri ve çıktı formatınızı değiştirmek için bir örnek sunuyorum:


    Kod

    Yığını:
    import pandas as pd import numpy as np from itertools import combinations # Veriler kumeler = [     ([20, 7, 4, 11], "cift"),     ([1, 2, 4, 15, 4], "tek"),     ([17, 3, 6, 1, 2, 4], "cift"),     ([20, 7, 3], "cift") ] def sub_lists(l):     comb = [list(j) for i in range(1, len(l)+1) for j in combinations(l, i)]     return comb def conver_str(l):     return [','.join(map(str, x)) for x in l] def process_kumeler(kumeler):     tum_kumeler = {f"Küme {i+1} {k[1]}": k[0] for i, k in enumerate(kumeler)}     kullanilan_sayilar = sorted(set(sum((k[0] for k in kumeler), [])))     df = pd.DataFrame(index=conver_str(sub_lists(kullanilan_sayilar)),                       columns=tum_kumeler.keys())     for index in df.index:         for column in df.columns:             sayilar = list(map(int, index.split(',')))             df.at[index, column] = sum([tum_kumeler[column].count(sayi) for sayi in sayilar])     # P ve N değerlerini işleme ve sonuç sütunu ekleme     df_result = pd.DataFrame(index=df.index)     for column in df.columns:         conditions = [(df[column] % 2 == 0, 'P'), (df[column] % 2 != 0, 'N')]         df_result[column] = np.select([cond for cond, val in conditions],                                       [val for cond, val in conditions], default='')     # P ve N'leri birleştir ve Sonuç sütunu ekle     df_result['Sonuç'] = df_result.apply(lambda x: ''.join(x), axis=1)     df_result = df_result.sort_values(by='Sonuç')     return df_result # Her küme grubu için DataFrame oluştur ve sonuçları birleştir final_results = pd.concat([process_kumeler(kumeler)], keys=[f'Grup {i+1}' for i in range(len(kumeler))]) # Dosya olarak kaydet ve indirme linki ver (Colab dışında) final_results.to_excel("Sonuçlar.xlsx") print("Dosya başarıyla kaydedildi.")


    Bu kod istenen format düzenlemelerini ve birden fazla kümeyi işlemeyi sağlar. Çalıştıracağınız platforma göre to_excel ve dosya indirme işlemlerini uygun şekilde düzenlemeniz gerekebilir.





  • Yapay Zeka’dan İlgili Konular
    SQL ve Python hk.
    geçen yıl açıldı
    python hatası
    2 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.