Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import math
- def roundup(x):
- return int(math.floor(x / 10.0)) * 10
- def get_key(element):
- element = str(element).split(";")
- return str(element[1]) + ";" + str(element[2]) + ";" + str(element[7]) + ";" + str(
- element[13]) + ";" + str(element[14])
- def get_key_nosplit(element):
- return str(element[1]) + ";" + str(element[2]) + ";" + str(element[7]) + ";" + str(
- element[13]) + ";" + str(element[14])
- def get_intervals(data_local, categories_local):
- intervals_local = {}
- for category in categories_local:
- nums = []
- for idx_local in range(0, len(data_local)):
- row_local = data_local[idx_local]
- if category == get_key(row_local).split(";")[1]:
- nums.append(int(str(row_local).split(";")[3]))
- print("Interval for category: " + str(category) + " " + str(min(nums)) + " " + str(max(nums)))
- intervals_local[category] = [min(nums), max(nums)]
- return intervals_local
- def get_sale(dataset_local, key_local, intervals_local):
- sales_local = {}
- sales_local["elektronika_high"] = [0, 0, 0, 0, 0, 5, 5, 10, 10, 10, 10]
- sales_local["elektronika_medium"] = [0, 0, 0, 0, 10, 10, 15, 15, 15, 15, 20, 20]
- sales_local["elektronika_low"] = [0, 0, 0, 0, 20, 20, 25, 25, 25, 25, 30]
- sales_local["oblecenie_high"] = [0, 0, 0, 0, 10, 15, 20, 25, 30]
- sales_local["oblecenie_medium"] = [0, 0, 0, 0, 30, 35, 40, 45, 50]
- sales_local["oblecenie_low"] = [0, 0, 0, 0, 50, 55, 60, 65, 70]
- sales_local["kancelarske_potreby_high"] = [0, 0, 0, 0, 5, 5, 5, 10]
- sales_local["kancelarske_potreby_medium"] = [0, 0, 0, 0, 10, 10, 10, 15]
- sales_local["kancelarske_potreby_low"] = [0, 0, 0, 0, 15, 15, 15, 20]
- count = 0
- total = 0
- for row_local in dataset_local:
- row_local = row_local.split(";")
- if get_key_nosplit(row_local) == key_local:
- count += 1
- # print(row_local[3])
- total = total + int(row_local[3])
- category = key_local.split(";")[1]
- interval_local = intervals_local[category]
- range_local = int(interval_local[1]) - int(interval_local[0])
- step = range_local / 3.0
- # print("Category: " + str(category) + " step: " + str(step))
- if count > 0:
- average = total / count
- # print("Average: " + str(average))
- if average >= interval_local[1] - step:
- category += "_high"
- return random.choice(sales_local[category])
- elif average <= interval_local[0] + step:
- category += "_low"
- return random.choice(sales_local[category])
- else:
- category += "_medium"
- return random.choice(sales_local[category])
- file = open('Data2.csv', newline='', encoding="utf-8")
- data = list(file.readlines())
- keys = []
- for row in data:
- keys.append(get_key(row))
- del keys[0]
- keys = list(set(keys))
- print(len(keys))
- categories = []
- for key in keys:
- categories.append(key.split(";")[1])
- categories = set(list(categories))
- intervals = get_intervals(data, categories)
- print(intervals)
- sales = {}
- data_edited = [data[0]]
- del data[0]
- for key in keys:
- sales[key] = get_sale(data, key, intervals)
- for idx in range(0, len(data)):
- row = data[idx]
- sale = sales[get_key(row)]
- row = str(row).split(";")
- row[4] = str(sale)
- data_edited.append(row)
- data_edited[0] = data_edited[0].split(";")
- with open("data_new.csv", "w+", encoding="utf-8", newline='') as f:
- for row in data_edited:
- row = ";".join(row)
- f.write(str(row))
- f.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement