How to balance all the dictionary elements value when reading from large sample?

Viewed 24

I've csv file with column name "image file location" and "label name". I'm trying to extract certain number of label name such that all label name count must be same.

suppose if label_name = ['car','dog','flight','god','car']

I should choose label_name with count 2 which is car in this example.

I tried below code to achieve above requriement

read_file = open('read.csv','r')
write_file = open('write.csv','w')
csv_read = csv.reader(read_file)
csv_write = csv.writer(write_file)
counter = 0
class_list=[]
class_dic = {}
no_of_samples_count = 100
for cnt, read in enumerate(csv_read):
    if len(class_list) == 100:
        if read[1] in class_dic:
            if class_dic[read[1]]== 101:
                continue
    file=read[0]
    class_name=read[1]
    xmin=read[2]
    xmax=read[3]
    ymin=read[4]
    ymax=read[5]
    shutil.copy(file,'images')
    csv_write.writerow([file,class_name,xmin,xmax,ymin,ymax])
    if class_name in class_list:
        class_dic[class_name]+=1
        continue
    else:
        class_dic[class_name]=1
        class_list.append(class_name)
    sum = 0
    for x in class_dic.values():
        sum+=x
    if sum == no_of_samples_count*no_of_samples_count:
            break
    else:
            print('sum:%d'%sum)
            continue
print(class_dic)

this logic creates uneven count of samples. Any suggestions to achieve my requirements will be very helpful

0 Answers
Related