Bug fix and optimizations
This commit is contained in:
parent
e39801f7d2
commit
f2ecc618b6
|
@ -1,4 +1,6 @@
|
|||
*.csv
|
||||
*.xls
|
||||
*.xlsx
|
||||
|
||||
# Mac OS
|
||||
.DS_Store
|
72
analyse.py
72
analyse.py
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue