Bug fix and optimizations

This commit is contained in:
Gregory Trullemans 2022-03-01 19:00:33 +01:00
parent e39801f7d2
commit f2ecc618b6
2 changed files with 39 additions and 35 deletions

2
.gitignore vendored
View File

@ -1,4 +1,6 @@
*.csv
*.xls
*.xlsx
# Mac OS
.DS_Store

View File

@ -16,11 +16,11 @@ def skill_frequency(filename):
"""
skills_dict = dict()
number_of_skill = 0
number_of_routine = 0
number_of_unfinished_routine = 0
number_of_tucked = 0
number_of_picked = 0
number_of_routine = 0
number_of_straight = 0
number_of_unfinished_routine = 0
data = pd.read_csv(filename, delimiter=';')
column_list = list(data.columns)
@ -28,18 +28,20 @@ def skill_frequency(filename):
for column in column_list:
number_of_routine += 1
skill_in_routine = 0
for skill in data[column]:
number_of_skill += 1
skill_in_routine += 1
skills_dict[skill] = skills_dict.get(skill, 0) + 1
if not pd.isna(skill):
number_of_skill += 1
skill_in_routine += 1
skills_dict[skill] = skills_dict.get(skill, 0) + 1
position = skill.strip()[-1:]
if position == 'o':
number_of_tucked += 1
elif position == '<':
number_of_picked += 1
elif position == '/':
number_of_straight +=1
position = skill.strip()[-1:]
if position == 'o':
number_of_tucked += 1
elif position == '<':
number_of_picked += 1
elif position == '/':
number_of_straight +=1
if skill_in_routine != 10:
number_of_unfinished_routine += 1
@ -54,15 +56,15 @@ def setup_combinaison_dictionnary(skills_dict):
"""
combination_dict = dict()
for key, value in skills_dict.items():
for key in skills_dict.keys():
combination_dict[key] = dict()
for k, v in skills_dict.items():
for k in skills_dict.keys():
combination_dict[key][k] = 0
combination_dict[key]['begin'] = 0
combination_dict['end'] = dict()
for k, v in skills_dict.items():
combination_dict['end'][k] = 0
for key in skills_dict.keys():
combination_dict['end'][key] = 0
return combination_dict
@ -79,20 +81,31 @@ def combinaison_frequency(filename, skills_dict):
for column in column_list:
previous_skill = None
skill_in_routine = 0
for skill in data[column]:
if previous_skill is None:
combination_dict[skill]['begin'] += 1
else:
combination_dict[skill][previous_skill] += 1
previous_skill = skill
combination_dict['end'][previous_skill] += 1
if not pd.isna(skill):
skill_in_routine += 1
if previous_skill is None:
combination_dict[skill]['begin'] += 1
else:
combination_dict[skill][previous_skill] += 1
previous_skill = skill
if skill_in_routine == 10:
# on ne compte pas la combinaison de fin s'il y a crash.
combination_dict['end'][previous_skill] += 1
return combination_dict
def export_result_in_csv(filename, skills_dict, combination_dict, number_of_skill, number_of_routine, number_of_unfinished_routine) -> None:
def export_result_in_csv(filename, skills_dict, combination_dict, number_of_skill, number_of_routine, number_of_unfinished_routine, number_of_tucked, number_of_picked, number_of_straight) -> None:
with open('skill_frequencies_' + filename, 'w') as result_file:
writer = csv.writer(result_file, delimiter=';')
writer.writerow(["# Routine", "# Unfinished R.", "# skill", "# tucked", "# picked", "# straight"])
writer.writerow([number_of_routine, number_of_unfinished_routine, number_of_skill, number_of_tucked, number_of_picked, number_of_straight])
writer.writerow(["", "", "", number_of_tucked / number_of_skill, number_of_picked / number_of_skill, number_of_straight / number_of_skill])
writer.writerow([""])
writer.writerow([""])
writer.writerow(["Skill", "# Apparition", "% Apparition"])
for key, value in skills_dict.items():
writer.writerow([str(key), str(value), str(value / number_of_routine)])
@ -106,17 +119,6 @@ def export_result_in_csv(filename, skills_dict, combination_dict, number_of_skil
writer.writerow([str(skill) + ' - ' + str(following_skill), str(value) , str(value / number_of_routine)])
def print_result(number_of_skill, number_of_routine, number_of_unfinished_routine, number_of_tucked, number_of_picked, number_of_straight) -> None:
print('------------------------------------------------------------------------')
print('Number of routine: ' + str(number_of_routine))
print('Number of unfinished routine: ' + str(number_of_unfinished_routine))
print('Number of skill: ' + str(number_of_skill))
print('Number of skill tucked: ' + str(number_of_tucked))
print('Number of skill picked: ' + str(number_of_picked))
print('Number of skill straight: ' + str(number_of_straight))
print('------------------------------------------------------------------------')
if __name__ == '__main__':
if len(sys.argv) < 2:
print('Please, give a filename.')
@ -127,4 +129,4 @@ if __name__ == '__main__':
skills_dict, number_of_skill, number_of_routine, number_of_unfinished_routine, number_of_tucked, number_of_picked, number_of_straight = skill_frequency(filename)
combination_dict = combinaison_frequency(filename, skills_dict)
print_result(number_of_skill, number_of_routine, number_of_unfinished_routine, number_of_tucked, number_of_picked, number_of_straight)
export_result_in_csv(filename, skills_dict, combination_dict, number_of_skill, number_of_routine, number_of_unfinished_routine)
export_result_in_csv(filename, skills_dict, combination_dict, number_of_skill, number_of_routine, number_of_unfinished_routine, number_of_tucked, number_of_picked, number_of_straight)