Skip to content
Extraits de code Groupes Projets
algorithme_student_generate.py 12,6 ko
Newer Older
  • Learn to ignore specific revisions
  • Adrien Payen's avatar
    Adrien Payen a validé
    #  DATA BASE GENERATING
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    import pandas as pd
    import random
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    firstname_of_students = ['Smith', 'Johnson', 'Williams', 'Jones', 'Brown', 'Davis', 'Miller', 'Wilson', 'Moore', 'Taylor',
    
    Adrien Payen's avatar
    Adrien Payen a validé
        'Anderson', 'Thomas', 'Jackson', 'White', 'Harris', 'Martin', 'Thompson', 'Garcia', 'Martinez', 'Robinson',
        'Clark', 'Rodriguez', 'Lewis', 'Lee', 'Walker', 'Hall', 'Allen', 'Young', 'Hernandez', 'King',
        'Wright', 'Lopez', 'Hill', 'Scott', 'Green', 'Adams', 'Baker', 'Gonzalez', 'Nelson', 'Carter',
        'Mitchell', 'Perez', 'Roberts', 'Turner', 'Phillips', 'Campbell', 'Parker', 'Evans', 'Edwards', 'Collins',
        'Stewart', 'Sanchez', 'Morris', 'Rogers', 'Reed', 'Cook', 'Morgan', 'Bell', 'Murphy', 'Bailey',
        'Rivera', 'Cooper', 'Richardson', 'Cox', 'Howard', 'Ward', 'Torres', 'Peterson', 'Gray', 'Ramirez',
        'James', 'Watson', 'Brooks', 'Kelly', 'Sanders', 'Price', 'Bennett', 'Wood', 'Barnes', 'Ross',
        'Henderson', 'Coleman', 'Jenkins', 'Perry', 'Powell', 'Long', 'Patterson', 'Hughes', 'Flores', 'Washington',
        'Butler', 'Simmons', 'Foster', 'Gonzales', 'Bryant', 'Alexander', 'Russell', 'Griffin', 'Diaz', 'Hayes',
        'Myers', 'Ford', 'Hamilton', 'Graham', 'Sullivan', 'Wallace', 'Woods', 'Cole', 'West', 'Jordan',
        'Owens', 'Reynolds', 'Fisher', 'Ellis', 'Harrison', 'Gibson', 'McDonald', 'Cruz', 'Marshall', 'Ortiz',
        'Gomez', 'Murray', 'Freeman', 'Wells', 'Webb', 'Simpson', 'Stevens', 'Tucker', 'Porter', 'Hunter',
        'Hicks', 'Crawford', 'Henry', 'Boyd', 'Mason', 'Morales', 'Kennedy', 'Warren', 'Dixon', 'Ramos',
        'Reyes', 'Burns', 'Gordon', 'Shaw', 'Holmes', 'Rice', 'Robertson', 'Hunt', 'Black', 'Daniels',
        'Palmer', 'Mills', 'Nichols', 'Grant', 'Knight', 'Ferguson', 'Rose', 'Stone', 'Hawkins', 'Dunn',
        'Perkins', 'Hudson', 'Spencer', 'Gardner', 'Stephens', 'Payne', 'Pierce', 'Berry', 'Matthews', 'Arnold',
        'Wagner', 'Willis', 'Ray', 'Watkins', 'Olson', 'Carroll', 'Duncan', 'Snyder', 'Hart', 'Cunningham',
        'Bradley', 'Lane', 'Andrews', 'Ruiz', 'Harper', 'Fox', 'Riley', 'Armstrong', 'Carpenter', 'Weaver',
        'Greene', 'Lawrence', 'Elliott', 'Chavez', 'Sims', 'Austin', 'Peters', 'Kelley', 'Franklin', 'Lawson',
        'Fields', 'Gutierrez', 'Ryan', 'Schmidt', 'Carr', 'Vasquez', 'Castillo', 'Wheeler', 'Chapman', 'Oliver',
        'Montgomery', 'Richards', 'Williamson', 'Johnston', 'Banks', 'Meyer', 'Bishop', 'McCoy', 'Howell', 'Alvarez',
        'Morrison', 'Hansen', 'Fernandez', 'Garza', 'Harvey', 'Little', 'Burton', 'Stanley', 'Nguyen', 'George',
        'Jacobs', 'Reid', 'Kim', 'Fuller', 'Lynch', 'Dean', 'Gilbert', 'Garrett', 'Romero', 'Welch']
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    last_name_of_students = ['Emma', 'Liam', 'Olivia', 'Noah', 'Ava', 'Isabella', 'Sophia', 'Jackson', 'Mia', 'Lucas',
    
    Adrien Payen's avatar
    Adrien Payen a validé
        'Aiden', 'Ethan', 'Luna', 'Mason', 'Harper', 'Evelyn', 'Oliver', 'Aria', 'Amelia', 'Caden',
        'Grayson', 'Charlotte', 'Chloe', 'Ella', 'Sebastian', 'Carter', 'Abigail', 'Scarlett', 'Madison',
        'Lily', 'Avery', 'Ella', 'Aubrey', 'Mila', 'Layla', 'Riley', 'Zoe', 'Sofia', 'Jackson', 'Liam',
        'Leah', 'Zoe', 'Henry', 'Gabriel', 'Grace', 'Hannah', 'Mila', 'Alexa', 'Eva', 'Liam', 'Mia',
        'Logan', 'Benjamin', 'Emily', 'Nora', 'Elijah', 'Lucy', 'Owen', 'Elizabeth', 'Stella', 'Levi',
        'William', 'Lily', 'Zoey', 'Parker', 'Brooklyn', 'Samuel', 'Luke', 'Madelyn', 'Eleanor', 'Nathan',
        'Isaac', 'Ryan', 'Ariana', 'Addison', 'Scarlett', 'Julian', 'Natalie', 'Victoria', 'Adam', 'Alexis',
        'Aaron', 'Aaliyah', 'Robert', 'Samantha', 'Christopher', 'Hazel', 'Serenity', 'Jordan', 'Leah', 'Chase',
        'Lillian', 'Liam', 'Skylar', 'Bella', 'Zachary', 'Caleb', 'Tyler', 'Connor', 'Eli', 'Aaliyah',
        'Ezekiel', 'Eva', 'Landon', 'Grace', 'Makayla', 'Nicholas', 'Natalie', 'Nathan', 'Avery', 'Cameron',
        'Hudson', 'Violet', 'Claire', 'Gavin', 'Eva', 'Zachary', 'Alexa', 'Brooklyn', 'Kylie', 'Peyton',
        'Emma', 'John', 'Aubrey', 'Carter', 'Mila', 'Elena', 'Paisley', 'Grayson', 'Hailey', 'Elijah',
        'Ellie', 'Julian', 'Adrian', 'Aria', 'Liliana', 'Bentley', 'Kinsley', 'Savannah', 'Eliana', 'Sofia',
        'Liam', 'Ella', 'Evelyn', 'Avery', 'Austin', 'Scarlett', 'Leah', 'Aiden', 'Audrey', 'Amelie',
        'Julian', 'Mila', 'Olivia', 'Anthony', 'Caleb', 'Zoe', 'Autumn', 'Samantha', 'Aria', 'Cooper',
        'Eva', 'Charlie', 'Madison', 'Landon', 'Penelope', 'Kaylee', 'Lily', 'Ryder', 'Hannah', 'Maya',
        'Christopher', 'Eleanor', 'Levi', 'Aubree', 'Emma', 'Sofia', 'Evan', 'Ella', 'Gabriel', 'Zachary',
        'Taylor', 'Liam', 'Makayla', 'Zoe', 'Oliver', 'Isaiah', 'Brooklyn', 'Lily', 'Victoria', 'Cameron',
        'Madison', 'Eva', 'Gabriel', 'Zoe', 'Brooklyn', 'Sophie', 'Ella', 'Logan', 'Madison', 'Julian',
        'Alexis', 'Landon', 'Grace', 'Lucas', 'Aria', 'Aaliyah', 'Adrian', 'Riley', 'Nora', 'Isabella',
        'Eva', 'Layla', 'Aiden', 'Amelia', 'Chloe', 'Levi', 'Lillian', 'Liam', 'Zoey', 'Hazel', 'Carter',
        'Grace', 'Peyton', 'Julian', 'Eliana', 'Eva', 'Harper', 'Henry', 'Olivia', 'Lily', 'Liam', 'Abigail']
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    school_years = ['BAC1', 'BAC2', 'BAC3', 'MA1', 'MA2']
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    place_of_birth = ['Mons', 'Charleroi', 'Tournai', 'La Louvière', 'Namur', 'Nivelles', 'Wavre', "Braine-l'Alleud", 'Waterloo', 'Louvain-la-Neuve',
        'Soignies', 'Thuin', 'Binche', 'Ath', 'Enghien', 'Jodoigne', 'Gembloux', 'Fleurus', 'Sambreville', 'Châtelet',
        'Marche-en-Famenne', 'Dinant', 'Ciney', 'Philippeville', 'Huy', 'Andenne', 'Ottignies-Louvain-la-Neuve', 'Hannut', 'Waremme', 'Fosses-la-Ville',
        'Tubize', 'Nivelles', 'Genappe', 'Jodoigne', 'Ottignies', 'La Hulpe', 'Court-Saint-Étienne', 'Rebecq', 'Wavre', 'Waterloo',
        'Lasne', 'Rixensart', 'Rosières', 'Ittre', 'Braine-le-Château', 'Chaumont-Gistoux', 'Walhain', 'Mont-Saint-Guibert', 'Beauvechain', 'Hélécine']
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    streets = ['Rue de la Liberté', 'Avenue des Roses', 'Chaussée de Bruxelles', 'Rue du Commerce', 'Avenue du Parc', 'Rue Saint-Pierre', 'Chemin des Cerisiers', 'Boulevard des Étoiles', 'Avenue de la Gare', 'Rue des Champs',
    
    Adrien Payen's avatar
    Adrien Payen a validé
        'Chaussée de Namur', 'Rue de la Paix', 'Avenue des Lilas', 'Rue de la Fontaine', 'Chemin du Moulin', 'Boulevard des Arts', 'Avenue des Mésanges', 'Rue des Orangers', 'Chaussée de Liège', 'Rue de l\'Église',
        'Avenue du Lac', 'Rue des Violettes', 'Chemin des Peupliers', 'Boulevard de la Mer', 'Rue des Platanes', 'Avenue des Acacias', 'Chaussée de Mons', 'Rue de la Rivière', 'Avenue du Soleil', 'Rue des Écoles',
        'Chemin des Pommiers', 'Boulevard des Montagnes', 'Rue des Trois Fontaines', 'Avenue des Cèdres', 'Chaussée de Charleroi', 'Rue du Théâtre', 'Boulevard des Papillons', 'Rue des Primevères', 'Avenue des Charmes', 'Chemin des Saules',
        'Rue du Palais', 'Avenue de la Plage', 'Chaussée de Waterloo', 'Rue des Amandiers', 'Boulevard du Jardin', 'Avenue des Coquelicots', 'Rue des Moulins', 'Chemin des Roses', 'Boulevard de la Forêt', 'Rue des Iris']
    
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    gender = ['M', 'F', 'O']
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    campus_localisation = ["Louvain-la-Neuve", "Mons"]
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    all_course_BAC1 = ("Anglais 1", "Fondements du droit public", "Fondements du droit de l'entreprise", "Economie", "Espagnol 1", "Comptabilité", "Informatique de gestion", "Mathématiques de gestion 1", "Statistiques et probabilités", "Pilosophie", "Psychologie", "Sociologie", "Séminaire de travail universitaire en gestion")
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    all_course_BAC2 = ("Anglais 2", "Droit de l'entreprise", "Macroéconomie", "Microéconomie", "Espagnol 2", "Marketing", "Production", "Informatique et algorithmique", "Finance", "Inférences statistiques", "Mathématiques de gestion 2", "Technologies industrielles")
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    all_course_BAC3 = ("Anglais 3", "Economie industrielle", "Espagnol 3", "Séminaire : organisations et transformation digitale", "Management humain", "Projet entrepreneurial", "Comptabilité et contrôle de gestion", "Gestion de données", "Coding project", "Econométrie", "Recherche opérationnelle", "Optimization", "Séminaire : organisation et mutations sociales", "Questions de sciences religieuses")
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    all_course_MA1 = ("Advanced English 1", "Español avanzado 1", "Data analytics", "Projet quantitatif et gestion de projet", "Data Mining", "Nouvelles technologies et pratiques émergentes", "Web mining", "Machine learning", "Quantitative Decision Making", "Recommender Systems", "Pilotage stratégique de l'entreprise", "Séminaire on Current Managerial Issues")
    
    all_course_MA2 = ("Advanced English 2", "Español avanzado 1", "Responsabilité sociétale de l'entreprise","Integrated Information Systems", "Mémoire", "Séminaire d'accompagnement du mémoire")
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    
    
    # Générer des combinaisons aléatoires de noms et prénoms pour plus de 1000 personnes
    
    Adrien Payen's avatar
    Adrien Payen a validé
    data_generated = []
    
    number_of_students = 100
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    for each in range(number_of_students): # générer des données
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        # nom de la personnes
    
    Adrien Payen's avatar
    Adrien Payen a validé
        last_name = random.choice(last_name_of_students)
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        # prenom de la personnes
    
    Adrien Payen's avatar
    Adrien Payen a validé
        first_name = random.choice(firstname_of_students)
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        # année de cours
    
    Adrien Payen's avatar
    Adrien Payen a validé
        academic_year = random.choice(school_years)
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        # ville de naissance de la personne
    
    Adrien Payen's avatar
    Adrien Payen a validé
        city_of_birth = random.choice(place_of_birth)
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        # attribuer un numero de téléphone à la personne
    
    Adrien Payen's avatar
    Adrien Payen a validé
        phone_number = []
    
    Adrien Payen's avatar
    Adrien Payen a validé
        n = f"{random.randint(10000000, 99999999):08d}"
    
    Adrien Payen's avatar
    Adrien Payen a validé
        if n not in phone_number :
          phone_number.append(n)
          phone =  f"0{n[:2]}/{n[2:4]}.{n[4:6]}.{n[6:]}"
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        # endroit où habite la personne
    
    Adrien Payen's avatar
    Adrien Payen a validé
        student_city = random.choice(place_of_birth)
        student_street = random.choice(streets)
        student_number_of_house = random.randint(1, 200)
        adress_of_student = f"{student_number_of_house} {student_street}, {student_city}"
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        #attribution du sexe d'une personne
    
    Adrien Payen's avatar
    Adrien Payen a validé
        gender_of_student = random.choice(gender)
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
        #email de la personne
    
    Adrien Payen's avatar
    Adrien Payen a validé
        email_of_student = f"{first_name}{'.'}{last_name}{'@student.uclouvain.be'}"
        email_formated = email_of_student.lower()
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        #attribution des campus aux élèves
    
    Adrien Payen's avatar
    Adrien Payen a validé
        campus = random.choice(campus_localisation)
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
        # date de naissance  sachant que l'on est en 2023 donc qqn de 17 ans ne peut pas se trouver en master
    
    Adrien Payen's avatar
    Adrien Payen a validé
        if academic_year == 'BAC1':
            year_of_birth = 2005
        elif academic_year == 'BAC2':
            year_of_birth = 2004
        elif academic_year == 'BAC3':
            year_of_birth = 2003
        elif academic_year == 'MA1':
            year_of_birth = 2002
    
    Adrien Payen's avatar
    Adrien Payen a validé
        else:
    
    Adrien Payen's avatar
    Adrien Payen a validé
            year_of_birth = 2001
    
    Adrien Payen's avatar
    Adrien Payen a validé
        month_of_birth = random.randint(1, 12)
        day_of_birth = random.randint(1, 28)
        complete_date_of_birth = f"{day_of_birth}/{month_of_birth}/{year_of_birth}"
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
        # attribution du matricule
    
    Adrien Payen's avatar
    Adrien Payen a validé
        consonant_of_lastname = ''.join([c for c in last_name if c.lower() not in 'aeiou'])[:3]
        consonant_of_firstname = ''.join([c for c in first_name if c.lower() not in 'aeiou'])[:2]
        last_consonant_of_firstname = ''.join([c for c in first_name if c.lower() not in 'aeiou']).lower()[-1] # ne sait pas si c'est la consonne du prénom ou du nom
        year_of_birth_string = str(year_of_birth)[-2:]
        random_integer = random.randint(0, 10)
        matricule = f"{consonant_of_lastname }{consonant_of_firstname}{last_consonant_of_firstname}{year_of_birth_string}{random_integer}"
    
    Adrien Payen's avatar
    Adrien Payen a validé
        matricule = matricule.lower()
    
    
        #attribution des notes aléatoirement
    
    Adrien Payen's avatar
    Adrien Payen a validé
        grades = {}
        if academic_year == 'MA2':
            for courses in all_course_BAC1 + all_course_BAC2 + all_course_BAC3 + all_course_MA1:
                grades[courses] = random.randint(10, 20)  # l'éléve a dû réussir ces cours pour pouvoir avoir acces en MA2
            for courses in all_course_MA2 :
                grades[courses] = random.randint(0, 20) # l'éléve pourrait avoir eu entre 0 et 20
        elif academic_year == 'MA1':
            for courses in all_course_BAC1 + all_course_BAC2 + all_course_BAC3 :
                grades[courses] = random.randint(10, 20)
            for courses in all_course_MA1 :
                grades[courses] = random.randint(0, 20)
        elif academic_year == 'BAC3':
            for courses in all_course_BAC1 + all_course_BAC2 :
                grades[courses] = random.randint(10, 20)
            for courses in all_course_BAC3 :
                grades[courses] = random.randint(0, 20)
        elif academic_year == 'BAC2':
            for courses in all_course_BAC1 :
                grades[courses] = random.randint(10, 20)
            for courses in all_course_BAC2 :
                grades[courses] = random.randint(0, 20)
    
    Adrien Payen's avatar
    Adrien Payen a validé
        else:
    
    Adrien Payen's avatar
    Adrien Payen a validé
            for courses in all_course_BAC1:
                grades[courses] = random.randint(0, 20)
    
    Adrien Payen's avatar
    Adrien Payen a validé
        data_generated.append({"Name": last_name, "Surname": first_name, "Academic Year" : academic_year, "Place of Birth" : city_of_birth , "Telephone": phone, "Address": adress_of_student, "Genre" : gender_of_student, "Email" : email_formated, "Campus" : campus, "Date of Birth" : complete_date_of_birth, "Matricule" : matricule, **grades})
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    # génération de données qui ne peuvent pas se ressembler
    
    
    
    
    # Créer un DataFrame pandas
    
    Adrien Payen's avatar
    Adrien Payen a validé
    df = pd.DataFrame(data_generated)
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    # Enregistrer le DataFrame dans un fichier Excel
    df.to_excel("Data_Base.xlsx", index=False)