Adding counting position of skill

This commit is contained in:
Gregory Trullemans 2022-03-01 09:36:22 +01:00
parent 959eea9067
commit e39801f7d2
1 changed files with 59 additions and 37 deletions

View File

@ -3,33 +3,55 @@
import csv
import sys
import pandas as pd
def skill_frequency(filename) -> None:
# def skill_frequency(filename) -> None:
def skill_frequency(filename):
"""
Répertorie toutes les figures contenue dans le fichier et compte le nombre de fois qu'elles
apparaissent.
La fonction compte aussi le nombre de série, le nombre de série non finie et le nombre de
figures.
"""
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_straight = 0
with open(filename, 'r') as csvfile:
csv_reader = csv.reader(csvfile, delimiter=';', quotechar='\'')
for line in csv_reader:
number_of_routine += 1
previous_skill = None
skill_in_routine = 0
for skill in line:
number_of_skill += 1
skill_in_routine += 1
skills_dict[skill.replace(" ", "")] = skills_dict.get(skill, 0) + 1
data = pd.read_csv(filename, delimiter=';')
column_list = list(data.columns)
if skill_in_routine != 10:
number_of_unfinished_routine += 1
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
return skills_dict, number_of_skill, number_of_routine, number_of_unfinished_routine
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
return skills_dict, number_of_skill, number_of_routine, number_of_unfinished_routine, number_of_tucked, number_of_picked, number_of_straight
def setup_combinaison_dictionnary(skills_dict):
"""
Crée le dictionnaire de combinaison par rapport à toutes les figures contenues dans le
dictionnaire de figure.
"""
combination_dict = dict()
for key, value in skills_dict.items():
@ -46,20 +68,24 @@ def setup_combinaison_dictionnary(skills_dict):
def combinaison_frequency(filename, skills_dict):
# Definition du second dictionnaire pour les combinaises
"""
Compte la fréquence des occurences des combinaisons de (deux) figures.
"""
combination_dict = setup_combinaison_dictionnary(skills_dict)
with open(filename, 'r') as csvfile:
csv_reader = csv.reader(csvfile, delimiter=';', quotechar='\'')
for line in csv_reader:
previous_skill = None
for skill in line:
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
data = pd.read_csv(filename, delimiter=';')
column_list = list(data.columns)
for column in column_list:
previous_skill = None
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
return combination_dict
@ -80,19 +106,14 @@ 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() -> None:
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('')
for key, value in skills_dict.items():
print(str(key) + ' : ' + str(value) + ' / ' + str(number_of_routine))
print('')
for key, v in combination_dict.items():
for k, value in combination_dict[key].items():
if value != 0:
print(str(k) + ' & ' + str(key) + ' : ' + str(value) + ' / ' + str(number_of_routine))
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('------------------------------------------------------------------------')
@ -103,6 +124,7 @@ if __name__ == '__main__':
else:
filename = sys.argv[1]
# il faudrait vérifier que c'est un CSV.
skills_dict, number_of_skill, number_of_routine, number_of_unfinished_routine = skill_frequency(filename)
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)