0% ont trouvé ce document utile (0 vote)
20 vues11 pages

Algo&Python

Le document présente un algorithme pour analyser les salaires des employés, permettant de charger les données manuellement ou depuis un fichier Excel. Il calcule des statistiques globales, par sexe et par département, et enregistre les résultats dans un fichier Excel. Les fonctions incluent la saisie des données, le calcul des statistiques et l'enregistrement des résultats.

Transféré par

obelhidaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues11 pages

Algo&Python

Le document présente un algorithme pour analyser les salaires des employés, permettant de charger les données manuellement ou depuis un fichier Excel. Il calcule des statistiques globales, par sexe et par département, et enregistre les résultats dans un fichier Excel. Les fonctions incluent la saisie des données, le calcul des statistiques et l'enregistrement des résultats.

Transféré par

obelhidaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Algorithmes : Analyse des salaires

VARIABLES :

noms_salaries, sexes_salaries, departement_salaries, salaires_salaries : TABLEAUX

total_salaries : ENTIER

choix_utilisateur : ENTIER

DEBUT

// Étape 1 : Acquisition des données

ECRIRE "Souhaitez-vous fournir les données manuellement ou via un fichier ?"

ECRIRE "1. Saisir manuellement"

ECRIRE "2. Charger depuis un fichier Excel"

LIRE choix_utilisateur

SI choix_utilisateur == 1 ALORS

ChargerDataManuellement()

SINON SI choix_utilisateur == 2 ALORS

ChargerDataFichier()

SINON

ECRIRE "Choix invalide. Veuillez relancer le programme."

FIN

FIN SI

// Étape 2 : Calculs statistiques

total_salaries <- LONGUEUR(sexes_salaries)

CalculerStatistiquesGlobales()

CalculerStatistiquesParSexe()

CalculerStatistiquesParDepartement()

// Étape 3 : Affichage des résultats

ECRIRE "Traitement terminé. Les résultats ont été affichés."

FIN
FONCTION ChargerDataManuellement()
DEBUT

ECRIRE "Entrez le nombre de salariés :"

LIRE total_salaries

POUR i DE 1 À total_salaries FAIRE

ECRIRE "Entrez le nom du salarié ", i, " :"

LIRE noms_salaries[i]

ECRIRE "Entrez le sexe du salarié ", i, " (Homme/Femme) :"

LIRE sexes_salaries[i]

ECRIRE "Entrez le département du salarié ", i, " :"

LIRE departement_salaries[i]

ECRIRE "Entrez le salaire du salarié ", i, " :"

LIRE salaires_salaries[i]

FIN POUR

FIN

FONCTION ChargerDataFichier()
DEBUT

// Charger les données depuis un fichier Excel

// Supposons que les données sont chargées dans les tableaux correspondants

noms_salaries, sexes_salaries, departement_salaries, salaires_salaries <- LireFichierExcel()

FIN

FONCTION CalculerStatistiquesGlobales()
DEBUT

// Calculer le nombre total d'employés

ECRIRE "Nombre total d'employés : ", total_salaries

// Calculer le salaire moyen

salaire_moyen <- SOMME(salaires_salaries) / total_salaries


ECRIRE "Salaire moyen : ", salaire_moyen

// Calculer le salaire médian

salaires_tries <- TRIER(salaires_salaries)

SI total_salaries MOD 2 == 0 ALORS

salaire_median <- (salaires_tries[total_salaries / 2] + salaires_tries[(total_salaries / 2) + 1]) / 2

SINON

salaire_median <- salaires_tries[(total_salaries + 1) / 2]

FIN SI

ECRIRE "Salaire médian : ", salaire_median

// Calculer le salaire minimum et maximum

salaire_min <- MIN(salaires_salaries)

salaire_max <- MAX(salaires_salaries)

ECRIRE "Salaire minimum : ", salaire_min

ECRIRE "Salaire maximum : ", salaire_max

// Calculer la somme totale des salaires

somme_salaires <- SOMME(salaires_salaries)

ECRIRE "Somme totale des salaires : ", somme_salaires

// Calculer l'écart-type des salaires

ecart_type <- RACINE(SOMME((salaires_salaries - salaire_moyen)^2) / total_salaries)

ECRIRE "Écart-type des salaires : ", ecart_type

FIN

FONCTION CalculerStatistiquesParSexe()
DEBUT

// Initialiser les compteurs et les sommes pour chaque sexe

hommes <- 0

femmes <- 0

somme_hommes <- 0
somme_femmes <- 0

POUR i DE 1 À total_salaries FAIRE

SI sexes_salaries[i] == "Homme" ALORS

hommes <- hommes + 1

somme_hommes <- somme_hommes + salaires_salaries[i]

SINON

femmes <- femmes + 1

somme_femmes <- somme_femmes + salaires_salaries[i]

FIN SI

FIN POUR

// Calculer et afficher les statistiques par sexe

ECRIRE "Nombre d'hommes : ", hommes

ECRIRE "Salaire moyen des hommes : ", somme_hommes / hommes

ECRIRE "Nombre de femmes : ", femmes

ECRIRE "Salaire moyen des femmes : ", somme_femmes / femmes

FIN

FONCTION CalculerStatistiquesParDepartement()
DEBUT

// Initialiser un dictionnaire pour stocker les compteurs et les sommes par département

departements <- DICTIONNAIRE()

POUR i DE 1 À total_salaries FAIRE

departement <- departement_salaries[i]

SI departement DANS departements ALORS

departements[departement]["nombre"] <- departements[departement]["nombre"] + 1

departements[departement]["somme"] <- departements[departement]["somme"] +


salaires_salaries[i]

SINON

departements[departement] <- {"nombre": 1, "somme": salaires_salaries[i]}


FIN SI

FIN POUR

// Calculer et afficher les statistiques par département

POUR chaque departement DANS departements FAIRE

ECRIRE "Département : ", departement

ECRIRE "Nombre d'employés : ", departements[departement]["nombre"]

ECRIRE "Salaire moyen : ", departements[departement]["somme"] /


departements[departement]["nombre"]

FIN POUR

FIN

Fonction enregistrer_resultats_excel():
# Création d'un dictionnaire pour les statistiques globales

stats_globales = {

"Statistique": ["Nombre total d'employés", "Moyenne des salaires", "Médiane des salaires",

"Salaire maximum", "Salaire minimum", "Écart-type des salaires",

"Rapport entre salaire max et min"],

"Valeur": [longueur de noms_salaries, moyenne de salaires_salaries, médiane de


salaires_salaries,

maximum de salaires_salaries, minimum de salaires_salaries, écart-type de


salaires_salaries,

maximum de salaires_salaries divisé par minimum de salaires_salaries]

df_global = Créer un DataFrame à partir de stats_globales

# Création d'un dictionnaire pour les statistiques par genre

genres_uniques = ensemble unique de genres_salaries

stats_genre = {

"Genre": [],

"Nombre d'employés": [],

"Salaire moyen": []

}
Pour chaque genre dans genres_uniques:

salaires_genre = [salaire pour salaire, g dans zip(salaires_salaries, genres_salaries) si g == genre]

Ajouter genre à stats_genre["Genre"]

Ajouter le nombre d'occurrences de genre dans genres_salaries à stats_genre["Nombre


d'employés"]

Ajouter la moyenne de salaires_genre à stats_genre["Salaire moyen"]

df_genre = Créer un DataFrame à partir de stats_genre

# Création d'un dictionnaire pour les statistiques par département

departements_uniques = ensemble unique de departement_salaries

stats_departement = {

"Département": [],

"Nombre d'employés": [],

"Salaire moyen": []

Pour chaque departement dans departements_uniques:

salaires_departement = [salaire pour salaire, d dans zip(salaires_salaries, departement_salaries)


si d == departement]

Ajouter departement à stats_departement["Département"]

Ajouter le nombre d'occurrences de departement dans departement_salaries à


stats_departement["Nombre d'employés"]

Ajouter la moyenne de salaires_departement à stats_departement["Salaire moyen"]

df_departement = Créer un DataFrame à partir de stats_departement

# Enregistrement des DataFrames dans un fichier Excel

chemin_fichier = "resultats_statistiques.xlsx"

Ouvrir un fichier Excel à chemin_fichier en tant que writer:

Écrire df_global dans la feuille "Statistiques Globales" sans index

Écrire df_genre dans la feuille "Statistiques par Genre" sans index

Écrire df_departement dans la feuille "Statistiques par Département" sans index

Afficher "Les résultats ont été enregistrés dans le fichier {chemin_fichier}"


Fin Fonction

CODE PYTHON
import pandas as pd
import numpy as np
import psycopg2

# Variables globales pour stocker les données


noms_salaries = []
genres_salaries = []
departement_salaries = []
salaires_salaries = []

# Fonction pour charger les données manuellement


def charger_data_manuellement():
print("Veuillez entrer les données des employés manuellement.")
while True:
nom = input("Nom : ")
genre = input("Genre (Femme/Homme) : ")
departement = input("Département : ")
salaire = float(input("Salaire : "))

noms_salaries.append(nom)
genres_salaries.append(genre)
departement_salaries.append(departement)
salaires_salaries.append(salaire)

continuer = input("Voulez-vous ajouter un autre employé ? (o/n) : ")


if [Link]() != 'o':
break

# Fonction pour charger les données depuis un fichier Excel


def charger_data_fichier():
chemin_fichier = input("Veuillez entrer le chemin du fichier Excel : ")
try:
df = pd.read_excel(chemin_fichier)
global noms_salaries, genres_salaries, departement_salaries, salaires_salaries
noms_salaries = df['Nom'].tolist()
genres_salaries = df['Genre'].tolist()
departement_salaries = df['Département'].tolist()
salaires_salaries = df['Salaire'].tolist()
print("Données chargées avec succès.")
except Exception as e:
print(f"Erreur lors du chargement du fichier : {e}")

# Fonction pour charger les données depuis une base de données SQL
def charger_data_sql():
# Informations de connexion à la base de données (à remplacer par vos valeurs)
host = "localhost" # Remplacez par l'adresse de votre serveur SQL
dbname = "Donnees" # Remplacez par le nom de votre base de données
user = "postgres" # Remplacez par votre nom d'utilisateur
password = "OMAR10" # Remplacez par votre mot de passe
port = "5432" # Remplacez par le port de votre base de données (par défaut 5432 pour
PostgreSQL)

try:
# Connexion à la base de données
conn = [Link](
host=host,
dbname=dbname,
user=user,
password=password,
port=port
)
cursor = [Link]()

# Exécution de la requête SQL pour récupérer les données


[Link]("SELECT Nom, Genre, Département, Salaire FROM employes")
rows = [Link]()

# Stockage des données dans les listes globales


global noms_salaries, genres_salaries, departement_salaries, salaires_salaries
for row in rows:
noms_salaries.append(row[0])
genres_salaries.append(row[1])
departement_salaries.append(row[2])
salaires_salaries.append(row[3])

print("Données chargées avec succès depuis la base de données.")


except Exception as e:
print(f"Erreur lors de la connexion à la base de données : {e}")
finally:
if conn:
[Link]()
[Link]()

# Fonction pour calculer les statistiques globales


def calculer_statistiques_globales():
print("\nStatistiques globales :")
print(f"Nombre total d'employés : {len(noms_salaries)}")
print(f"Moyenne des salaires : {[Link](salaires_salaries):.2f}")
print(f"Médiane des salaires : {[Link](salaires_salaries):.2f}")
print(f"Salaire maximum : {[Link](salaires_salaries):.2f}")
print(f"Salaire minimum : {[Link](salaires_salaries):.2f}")
print(f"Écart-type des salaires : {[Link](salaires_salaries):.2f}")
print(f"Rapport entre salaire max et min : {[Link](salaires_salaries) /
[Link](salaires_salaries):.2f}")
# Fonction pour calculer les statistiques par genre
def calculer_statistiques_par_genre():
print("\nStatistiques par genre :")
genres_uniques = set(genres_salaries)
for genre in genres_uniques:
salaires_genre = [s for s, g in zip(salaires_salaries, genres_salaries) if g == genre]
print(f"Genre : {genre}")
print(f"Nombre d'employés : {genres_salaries.count(genre)}")
print(f"Salaire moyen : {[Link](salaires_genre):.2f}")

# Fonction pour calculer les statistiques par département


def calculer_statistiques_par_departement():
print("\nStatistiques par département :")
departements_uniques = set(departement_salaries)
for departement in departements_uniques:
salaires_departement = [s for s, d in zip(salaires_salaries, departement_salaries) if d ==
departement]
print(f"Département : {departement}")
print(f"Nombre d'employés : {departement_salaries.count(departement)}")
print(f"Salaire moyen : {[Link](salaires_departement):.2f}")

# Fonction pour enregistrer les résultats dans un fichier Excel


def enregistrer_resultats_excel():
# Création d'un DataFrame pour les statistiques globales
stats_globales = {
"Statistique": ["Nombre total d'employés", "Moyenne des salaires", "Médiane des salaires",
"Salaire maximum", "Salaire minimum", "Écart-type des salaires",
"Rapport entre salaire max et min"],
"Valeur": [len(noms_salaries), [Link](salaires_salaries), [Link](salaires_salaries),
[Link](salaires_salaries), [Link](salaires_salaries), [Link](salaires_salaries),
[Link](salaires_salaries) / [Link](salaires_salaries)]
}
df_global = [Link](stats_globales)

# Création d'un DataFrame pour les statistiques par genre


genres_uniques = set(genres_salaries)
stats_genre = {
"Genre": [],
"Nombre d'employés": [],
"Salaire moyen": []
}
for genre in genres_uniques:
salaires_genre = [s for s, g in zip(salaires_salaries, genres_salaries) if g == genre]
stats_genre["Genre"].append(genre)
stats_genre["Nombre d'employés"].append(genres_salaries.count(genre))
stats_genre["Salaire moyen"].append([Link](salaires_genre))
df_genre = [Link](stats_genre)
# Création d'un DataFrame pour les statistiques par département
departements_uniques = set(departement_salaries)
stats_departement = {
"Département": [],
"Nombre d'employés": [],
"Salaire moyen": []
}
for departement in departements_uniques:
salaires_departement = [s for s, d in zip(salaires_salaries, departement_salaries) if d ==
departement]
stats_departement["Département"].append(departement)
stats_departement["Nombre d'employés"].append(departement_salaries.count(departement))
stats_departement["Salaire moyen"].append([Link](salaires_departement))
df_departement = [Link](stats_departement)

# Enregistrement des DataFrames dans un fichier Excel


chemin_fichier = "resultats_statistiques.xlsx"
with [Link](chemin_fichier) as writer:
df_global.to_excel(writer, sheet_name="Statistiques Globales", index=False)
df_genre.to_excel(writer, sheet_name="Statistiques par Genre", index=False)
df_departement.to_excel(writer, sheet_name="Statistiques par Département", index=False)

print(f"Les résultats ont été enregistrés dans le fichier {chemin_fichier}")

# Fonction principale
def main():
# Étape 1 : Acquisition des données
print("Souhaitez-vous fournir les données manuellement, via un fichier ou depuis une base de
données SQL ?")
print("1. Saisir manuellement")
print("2. Charger depuis un fichier Excel")
print("3. Charger depuis une base de données SQL")
choix_utilisateur = input("Votre choix : ")

if choix_utilisateur == "1":
charger_data_manuellement()
elif choix_utilisateur == "2":
charger_data_fichier()
elif choix_utilisateur == "3":
charger_data_sql()
else:
print("Choix invalide. Veuillez relancer le programme.")
return

# Étape 2 : Calculs statistiques


calculer_statistiques_globales()
calculer_statistiques_par_genre()
calculer_statistiques_par_departement()
# Étape 3 : Enregistrement des résultats dans un fichier Excel
enregistrer_resultats_excel()

print("\nTraitement des données terminé.")

# Exécution du programme
if __name__ == "__main__":
main()

Vous aimerez peut-être aussi