Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Need help with this script
#1
Hello friends. Below is a code I use in Google Colab. It works so slow that I wait for hours. Is it possible to edit this code to run faster? I would be very happy if you can help. Happy days everyone..


[inline]
[python]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   = [[ 9,6,9,9,7,7,], "cift"]
kume_2   = [[ 9,9,6,6,9,9,7,10,], "tek"]
kume_3   = [[ 9,9,9,11,7,], "cift"]
kume_4   = [[ 7,9,9,9,7,9,9,10,10,], "cift"]
kume_5   = [[ 4,14,4,14,10,14,13,14,13,], "cift"]
kume_6   = [[ 14,13,14,13,10,14,13,13,], "cift"]
kume_7   = [[ 6,4,6,6,5,14,], "tek"]
kume_8   = [[ 8,14,8,5,4,14,13,], "tek"]
kume_9   = [[ 11,11,9,11,], "cift"]
kume_10   = [[ 10,10,7,9,], "tek"]
kume_11   = [[ 11,6,11,], "tek"]
kume_12   = [[ 10,8,8,], "tek"]
kume_13   = [[ 10,12,11,1,], "tek"]
kume_14   = [[ 11,1,], "cift"]
kume_15   = [[ 11,], "cift"]
kume_16   = [[ ], "cift"]
kume_17   = [[ 15,15,2,15,], "tek"]
kume_18   = [[ ], "cift"]
kume_19   = [[ 15,15,15,12,11,12,15,15,], "tek"]
kume_20   = [[ 11,12,11,15,15,], "cift"]
kume_21   = [[ 15,15,15,], "cift"]
kume_22   = [[ 15,15,15,15,], "tek"]
kume_23   = [[ 15,], "tek"]
kume_24   = [[ 15,15,], "tek"]
kume_25   = [[ ], "tek"]
kume_26   = [[ 8,8,], "tek"]
kume_27   = [[ 8,], "tek"]
kume_28   = [[ 16,], "tek"]
# -------------------------------------

tum_kumeler = [kume_1, kume_2, kume_3, kume_4, kume_5, kume_6, kume_7, kume_8, kume_9, kume_10, kume_11, kume_12, kume_13, kume_14, kume_15, kume_16, kume_17, kume_18, kume_19, kume_20, kume_21, kume_22, kume_23, kume_24, kume_25, kume_26, kume_27, kume_28]
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], "Küme 5 " + kume_5[1], "Küme 6 " + kume_6[1], "Küme 7 " + kume_7[1], "Küme 8 " + kume_8[1], "Küme 9 " + kume_9[1], "Küme 10 " + kume_10[1], "Küme 11 " + kume_11[1], "Küme 12 " + kume_12[1], "Küme 13 " + kume_13[1], "Küme 14 " + kume_14[1], "Küme 15 " + kume_15[1], "Küme 16 " + kume_16[1], "Küme 17 " + kume_17[1], "Küme 18 " + kume_18[1], "Küme 19 " + kume_19[1], "Küme 20 " + kume_20[1], "Küme 21 " + kume_21[1], "Küme 22 " + kume_22[1], "Küme 23 " + kume_23[1], "Küme 24 " + kume_24[1], "Küme 25 " + kume_25[1], "Küme 26 " + kume_26[1], "Küme 27 " + kume_27[1], "Küme 28 " + kume_28[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')
[/inline]
buran write Apr-13-2023, 06:46 AM:
Please, use proper tags when post code, traceback, output, etc. This time I have added tags for you.
See BBcode help for more info.
Reply
#2
Please, fix the indentation of your code
Alie likes this post
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
Since the code does not do what you want, describe what the code is supposed to do. Maybe provide a sample input and whet the output should be.
Alie likes this post
Reply
#4
(Apr-13-2023, 08:56 PM)deanhystad Wrote: Since the code does not do what you want, describe what the code is supposed to do. Maybe provide a sample input and whet the output should be.

Sorry for replying late. I was pretty busy. I've updated the topic again and will simplify it. i just need an edit to make this code run faster. It works so slowly that it is not possible to be efficient as it is.
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020