Lab 047 : Work IQ — Analytique d'adoption de Copilot¶
Ce que vous apprendrez¶
- Ce qu'est Work IQ et pourquoi l'analytique d'adoption est importante pour les déploiements IA
- Comment lire et interpréter les données d'utilisation de Copilot depuis Viva Insights et le Centre d'administration M365
- Analyser les taux d'adoption par département avec Python et pandas
- Identifier les freins à l'adoption : écarts de licences, écarts d'activation et faible engagement
- Construire un tableau de bord d'adoption qui transforme les données brutes en synthèse exécutive
Introduction¶
Work IQ est le framework de Microsoft pour mesurer et optimiser l'adoption de l'IA dans une organisation. À mesure que les entreprises passent du déploiement de Microsoft 365 Copilot à la démonstration du ROI, la capacité à analyser les données d'adoption devient une compétence essentielle.
En 2025-2026, la question est passée de « Avons-nous déployé Copilot ? » à « Est-il réellement utilisé ? Par qui ? Pour quoi ? Et quelle valeur crée-t-il ? »
Le scénario¶
Vous êtes le responsable de l'adoption IA chez OutdoorGear Inc. L'entreprise a déployé M365 Copilot auprès de 52 employés dans 7 départements il y a trois mois. La direction veut des réponses :
- Quels départements utilisent réellement Copilot ?
- Où les licences sont-elles inutilisées — et pourquoi ?
- Quelles fonctionnalités les gens utilisent-ils le plus ?
- Combien de temps Copilot a-t-il fait économiser à l'organisation ?
Vous disposez d'un export de données d'utilisation (similaire à ce que fournissent Viva Insights et le Centre d'administration M365). Votre mission : transformer les données brutes en un tableau de bord d'adoption exploitable.
Données réelles vs. simulées
Ce lab utilise un jeu de données simulé (copilot_usage_data.csv) pour que tout le monde puisse suivre sans licence M365 Copilot. La structure des données reflète ce que vous verriez dans les exports Viva Insights. Si vous disposez d'un environnement M365 en production, vous pouvez substituer vos propres données.
Prérequis¶
| Prérequis | Pourquoi |
|---|---|
| Python 3.10+ | Exécuter les scripts d'analyse |
Bibliothèque pandas |
Manipulation de données |
| (Optionnel) Licence M365 Copilot + Viva Insights | Pour des données réelles au lieu de simulées |
Démarrage rapide avec GitHub Codespaces
Toutes les dépendances sont préinstallées dans le devcontainer.
📦 Fichiers d'accompagnement¶
Téléchargez ces fichiers avant de commencer le lab
Enregistrez tous les fichiers dans un dossier lab-047/ dans votre répertoire de travail.
| Fichier | Description | Télécharger |
|---|---|---|
broken_scorecard.py |
Exercice de correction de bugs (3 bugs + auto-tests) | 📥 Télécharger |
copilot_usage_data.csv |
Jeu de données | 📥 Télécharger |
scorecard_builder.py |
Script de démarrage avec TODOs | 📥 Télécharger |
Étape 1 : Comprendre les métriques clés¶
Avant de toucher aux données, vous devez comprendre ce que Work IQ mesure. Ce sont les mêmes métriques suivies par Viva Insights et le Centre d'administration M365 :
| Métrique | Ce qu'elle mesure | Pourquoi c'est important |
|---|---|---|
| Licencié | L'utilisateur a une licence M365 Copilot attribuée | Licence ≠ utilisation ; suit l'allocation de l'investissement |
| Activé | L'administrateur a activé Copilot pour l'utilisateur | L'écart entre licencié et activé = dépenses gaspillées |
| Jours actifs | Jours où l'utilisateur a interagi avec une fonctionnalité Copilot | Mesure la profondeur d'engagement, pas juste un essai ponctuel |
| Réunions assistées | Réunions où Copilot a généré des résumés/actions | Cas d'usage à forte valeur pour les managers |
| E-mails rédigés | E-mails composés ou affinés avec l'aide de Copilot | Mesure la productivité rédactionnelle |
| Documents résumés | Documents résumés ou analysés par Copilot | Mesure l'efficacité du travail de connaissance |
| Chats | Interactions Copilot Chat (questions, brainstorming) | Mesure l'exploration et l'utilité quotidienne |
| Temps économisé (min) | Minutes estimées économisées par Copilot | La métrique ROI ultime |
Formules clés¶
Adoption Rate = (Active Users ÷ Enabled Users) × 100
Enablement Gap = Licensed Users − Enabled Users
→ Users with a paid license that admins haven't turned on
Licensing Gap = Total Users − Licensed Users
→ Users without any Copilot license at all
Confidentialité Viva Insights
En production, Viva Insights applique une taille de groupe minimale de 5 utilisateurs pour tous les rapports. Vous ne pouvez pas détailler les départements de moins de 5 personnes. Nos données simulées ignorent cela à des fins d'apprentissage, mais gardez-le à l'esprit pour les déploiements réels.
Étape 2 : Charger et explorer le jeu de données¶
Le jeu de données contient 52 enregistrements utilisateurs répartis dans 7 départements. Commencez par le charger en Python :
import pandas as pd
df = pd.read_csv("lab-047/copilot_usage_data.csv")
# Convert string booleans to Python booleans
for col in ["licensed", "enabled"]:
df[col] = df[col].astype(str).str.strip().str.lower() == "true"
print(f"Total records: {len(df)}")
print(f"Departments: {df['department'].nunique()}")
print(f"\nColumn types:\n{df.dtypes}")
print(f"\nFirst 5 rows:\n{df.head()}")
Sortie attendue :
Prenez un moment pour explorer :
# Quick summary by department
summary = df.groupby("department").agg(
total=("user_id", "count"),
licensed=("licensed", "sum"),
enabled=("enabled", "sum"),
).reset_index()
print(summary)
🤔 Avant de continuer : Quel département prédisez-vous aura le taux d'adoption le plus élevé ?
Réfléchissez-y — puis passez à l'étape 3 pour découvrir si vous aviez raison !
Étape 3 : Calculer les taux d'adoption par département¶
Calculez maintenant le taux d'adoption pour chaque département. Rappel : taux d'adoption = utilisateurs actifs ÷ utilisateurs activés × 100.
Un utilisateur « actif » est toute personne avec active_days > 0 (elle a utilisé Copilot au moins une fois pendant le mois).
results = []
for dept, group in df.groupby("department"):
total = len(group)
licensed = group["licensed"].sum()
enabled = group["enabled"].sum()
active = len(group[(group["enabled"] == True) & (group["active_days"] > 0)])
rate = (active / enabled * 100) if enabled > 0 else 0
results.append({
"Department": dept,
"Total": total,
"Licensed": licensed,
"Enabled": enabled,
"Active": active,
"Adoption %": round(rate, 1),
})
adoption_df = pd.DataFrame(results).sort_values("Adoption %", ascending=False)
print(adoption_df.to_string(index=False))
Sortie attendue :
| Department | Total | Licensed | Enabled | Active | Adoption % |
|---|---|---|---|---|---|
| Finance | 6 | 6 | 6 | 6 | 100.0 |
| Engineering | 12 | 11 | 10 | 9 | 90.0 |
| Marketing | 8 | 8 | 7 | 6 | 85.7 |
| Operations | 7 | 6 | 5 | 4 | 80.0 |
| Sales | 10 | 8 | 5 | 4 | 80.0 |
| HR | 5 | 3 | 3 | 2 | 66.7 |
| Legal | 4 | 3 | 2 | 1 | 50.0 |
Observation
Finance est en tête à 100 % — chaque utilisateur activé est actif. Legal est à 50 % — seul 1 utilisateur activé sur 2 a déjà ouvert Copilot. Mais notez que Legal a aussi le moins d'utilisateurs activés (2). Les petits échantillons peuvent être trompeurs — c'est pourquoi Viva Insights applique une taille de groupe minimale de 5.
Étape 4 : Identifier les freins à l'adoption¶
Trois types de freins empêchent l'adoption de Copilot :
4a — Écart d'activation (Licencié mais NON activé)¶
gap = df[(df["licensed"] == True) & (df["enabled"] == False)]
print(f"Enablement gap: {len(gap)} users\n")
print(gap[["department", "user_id"]].to_string(index=False))
Sortie attendue :
Enablement gap: 7 users
department user_id
Engineering ENG-011
Marketing MKT-008
Sales SLS-004
Sales SLS-005
Sales SLS-006
Legal LEG-003
Operations OPS-006
Le problème des ventes
Sales a 3 utilisateurs licenciés bloqués dans l'écart d'activation — soit 37,5 % de leurs utilisateurs licenciés ! Il s'agit probablement d'un oubli administratif. Un simple ticket IT pourrait débloquer 3 utilisateurs actifs supplémentaires.
4b — Écart de licences (Pas de licence du tout)¶
unlicensed = df[df["licensed"] == False]
print(f"Unlicensed users: {len(unlicensed)}")
print(unlicensed.groupby("department")["user_id"].count())
4c — Utilisateurs à utilisation nulle (Activé mais jamais utilisé)¶
zero_usage = df[(df["enabled"] == True) & (df["active_days"] == 0)]
print(f"Enabled but never used: {len(zero_usage)} users")
print(zero_usage[["department", "user_id"]].to_string(index=False))
Ces utilisateurs ont Copilot disponible mais ne l'ont jamais utilisé. Ils ont peut-être besoin de formation, de campagnes de sensibilisation ou d'un rappel de leur manager.
Étape 5 : Analyse de l'utilisation des fonctionnalités¶
Quelles fonctionnalités de Copilot apportent le plus de valeur chez OutdoorGear ?
active = df[df["active_days"] > 0]
features = {
"Meetings Assisted": active["meetings_assisted"].sum(),
"Emails Drafted": active["emails_drafted"].sum(),
"Docs Summarized": active["docs_summarized"].sum(),
"Chats": active["chats"].sum(),
}
print("Feature Usage (total interactions among active users):")
for feat, count in sorted(features.items(), key=lambda x: x[1], reverse=True):
pct = count / sum(features.values()) * 100
print(f" {feat:>20s}: {count:>5d} ({pct:.1f}%)")
Sortie attendue :
| Fonctionnalité | Total | Part |
|---|---|---|
| Chats | 400 | 32,8 % |
| Meetings Assisted | 303 | 24,8 % |
| Emails Drafted | 260 | 21,3 % |
| Docs Summarized | 257 | 21,1 % |
Observation
Les Chats dominent à 32,8 % — les utilisateurs utilisent principalement Copilot pour les questions-réponses, le brainstorming et les recherches rapides. Les réunions sont la deuxième fonctionnalité la plus utilisée, portée par Finance et Engineering où les managers s'appuient sur les résumés de réunions.
Étape 6 : Construire le tableau de bord¶
Combinez maintenant toute votre analyse en un seul tableau de bord d'adoption pour la direction :
total_time = int(active["time_saved_min"].sum())
scorecard = f"""# 📊 OutdoorGear Inc. — Copilot Adoption Scorecard
**Reporting Period:** March 2026 (1-month snapshot)
## Overall Metrics
| Metric | Value |
|--------|-------|
| Total Users | {len(df)} |
| Licensed | {df['licensed'].sum()} |
| Enabled | {df['enabled'].sum()} |
| Active | {len(active)} |
| Overall Adoption Rate | {len(active) / df['enabled'].sum() * 100:.1f}% |
| Time Saved | {total_time} min ({total_time / 60:.1f} hours) |
| Enablement Gap | {len(gap)} users |
## Department Ranking
{adoption_df.to_markdown(index=False)}
## Top Actions
1. **Close the Sales enablement gap** — 3 licensed users not yet enabled
2. **Investigate Legal adoption** — only 1 of 2 enabled users is active
3. **Scale Finance's success** — 100% adoption; learn what they're doing right
4. **Run training for zero-usage users** — {len(zero_usage)} enabled users never opened Copilot
"""
print(scorecard)
with open("lab-047/scorecard_report.md", "w") as f:
f.write(scorecard)
print("💾 Saved to lab-047/scorecard_report.md")
🐛 Exercice de correction de bugs¶
Le fichier lab-047/broken_scorecard.py contient 3 bugs qui produisent des métriques d'adoption incorrectes. Pouvez-vous tous les trouver et les corriger ?
Exécutez les auto-tests pour voir lesquels échouent :
Vous devriez voir 3 tests échoués. Chaque test correspond à un bug :
| Test | Ce qu'il vérifie | Indice |
|---|---|---|
| Test 1 | Dénominateur du taux d'adoption | Devrait utiliser les utilisateurs activés, pas le total |
| Test 2 | Logique de filtre de l'écart d'activation | Vérifiez les conditions booléennes |
| Test 3 | Facteur de conversion du temps | Conversion minutes → heures |
Corrigez les 3 bugs, puis relancez. Quand vous voyez 🎉 All 3 tests passed, c'est terminé !
🧠 Quiz de connaissances¶
Q1 (Choix multiple) : Dans Microsoft Viva Insights, quelle est la taille de groupe minimale par défaut pour protéger la vie privée des employés ?
- A) 3 utilisateurs
- B) 5 utilisateurs
- C) 10 utilisateurs
- D) 25 utilisateurs
✅ Révéler la réponse
Correct : B) 5 utilisateurs
Viva Insights applique une taille de groupe minimale de 5 par défaut. Les rapports pour les groupes de moins de 5 personnes sont supprimés pour éviter l'identification des habitudes d'utilisation individuelles. Les administrateurs peuvent augmenter (mais pas diminuer) ce seuil.
Q2 (Choix multiple) : Quelle métrique indique le mieux que les utilisateurs utilisent Copilot de manière régulière dans le temps, plutôt que de simplement l'essayer une fois ?
- A) Total d'e-mails rédigés
- B) Nombre d'utilisateurs licenciés
- C) Moyenne mensuelle de jours actifs
- D) Temps économisé en minutes
✅ Révéler la réponse
Correct : C) Moyenne mensuelle de jours actifs
Un nombre élevé de jours actifs signifie que l'utilisateur revient sur Copilot jour après jour — cela mesure la fidélisation et la formation d'habitudes, pas juste un essai ponctuel. Le total d'e-mails ou le temps économisé peuvent être gonflés par une seule journée d'utilisation intensive.
Q3 (Exécutez le lab) : Quel département a le taux d'adoption Copilot le plus élevé (actifs ÷ activés × 100) ?
Exécutez l'analyse de l'étape 3 sur 📥 copilot_usage_data.csv et vérifiez les résultats.
✅ Révéler la réponse
Finance — 100,0 %
Finance a 6 utilisateurs licenciés, 6 activés et 6 actifs — chaque utilisateur activé utilise activement Copilot. Cela fait de Finance le département modèle pour diffuser les bonnes pratiques d'adoption aux autres équipes.
Q4 (Exécutez le lab) : Combien d'utilisateurs dans l'organisation se trouvent dans l'« écart d'activation » (licensed = true, enabled = false) ?
Exécutez l'analyse de l'étape 4a pour le découvrir.
✅ Révéler la réponse
7 utilisateurs
Les 7 utilisateurs dans l'écart d'activation sont : ENG-011, MKT-008, SLS-004, SLS-005, SLS-006, LEG-003 et OPS-006. Sales représente à lui seul 3 d'entre eux — le moyen le plus rapide d'améliorer l'adoption globale est d'activer ces utilisateurs.
Q5 (Exécutez le lab) : Combien y a-t-il de « power users » (employés avec active_days >= 20) ?
Filtrez le jeu de données pour les utilisateurs avec 20+ jours actifs et comptez-les.
✅ Révéler la réponse
10 power users
- Engineering : ENG-001 (22), ENG-002 (20), ENG-004 (21), ENG-007 (23), ENG-009 (20) → 5
- Marketing : MKT-003 (20) → 1
- Finance : FIN-001 (22), FIN-002 (21), FIN-003 (20), FIN-005 (23) → 4
- Total : 10 power users répartis entre Engineering, Marketing et Finance
Résumé¶
| Sujet | Ce que vous avez appris |
|---|---|
| Work IQ | Framework pour mesurer l'adoption de l'IA et démontrer le ROI |
| Taux d'adoption | actifs ÷ activés × 100 — la métrique de santé principale |
| Écart d'activation | Licencié mais non activé — la correction la plus rapide pour une faible adoption |
| Mix de fonctionnalités | Quelles fonctionnalités Copilot apportent le plus de valeur |
| Temps économisé | Convertir les minutes en impact business pour la direction |
| Tableau de bord | Combiner les métriques en un rapport prêt pour la direction |
Prochaines étapes¶
- Lab 048 (à venir) — Construire des tableaux de bord Power BI avancés avec Viva Insights Advanced Reporting
- Lab 033 — Observabilité des agents avec Application Insights (même approche analytique pour les agents personnalisés)
- Lab 035 — Évaluation des agents avec le SDK Azure AI Eval (mesurer la qualité des agents, pas seulement l'adoption)
- Lab 038 — Optimisation des coûts IA (le volet financier du ROI)