Analyste de données senior

VérifiéPrudence

Analyse de données de bout en bout : SQL de production, profilage, cohortes, entonnoirs, tests statistiques et visualisations menant à des recommandations concrètes.

Spar Skills Guide Bot
Data & IAIntermédiaire
03/11/2026
Claude CodeCursorWindsurfCopilotCodex
#sql#analytics#data-visualization#statistics#reporting

Recommandé pour

Synthèse automatique

Ce skill fait endosser à l'agent le rôle d'un analyste de données senior qui cadre la question métier, écrit du SQL de production, choisit des visualisations et restitue des recommandations structurées en What / So What / Now What.

Points forts

  • Une étape de cadrage explicite qui impose une hypothèse testable, le grain des données, l'audience et le type d'analyse avant de commencer.
  • Des patterns SQL concrets et réutilisables : agrégation mensuelle avec croissance, analyse de cohortes de rétention, fonctions de fenêtrage.
  • Une couverture complète de la chaîne analytique, du profilage descriptif (nulls, doublons, valeurs extrêmes) jusqu'à la recommandation chiffrée.
  • Des règles de visualisation précises (axe Y à zéro pour les barres, sept couleurs maximum, benchmarks de contexte) qui évitent les graphiques trompeurs.

Limites

  • Le SQL fourni est surtout de dialecte PostgreSQL (date_trunc, AGE, EXTRACT) et devra être adapté pour BigQuery, Snowflake ou MySQL.
  • Le contenu du fichier s'interrompt au milieu du troisième exemple de requête, donc certains patterns annoncés ne sont pas entièrement détaillés.
  • Aucun outil ni bibliothèque de visualisation n'est nommé : l'agent doit choisir lui-même entre matplotlib, un outil de BI ou du code généré.
Quand l'utiliser

À utiliser lorsqu'il faut répondre à une question métier par une analyse de données complète, avec SQL validé, test statistique et recommandation présentable à des décideurs.

Quand l'éviter

À éviter pour du ML, de l'ingénierie de pipelines ou du tuning de modèles, ou lorsqu'aucun accès au schéma et au grain des tables n'est disponible.

Analyse de sécurité

Prudence
Score qualité84/100

The skill is a documentation-style guide with no declared tools and no dangerous instructions. Its only execution surface is optional local Python scripts it references but does not ship, plus advisory SQL/Python snippets; nothing exfiltrates data, deletes files, or disables safeguards. Because the referenced scripts cannot be verified from the supplied content, the residual risk is moderate rather than zero, hence 'caution' rather than 'safe'.

Points d'attention
  • •Skill documents shell invocations of bundled Python scripts (scripts/query_optimizer.py, data_profiler.py, report_generator.py) and SQL against live databases, but the script sources are not included in the provided content and therefore cannot be audited.
  • •No network calls, credential handling, destructive commands, or obfuscated payloads appear in the instruction text; execution is limited to local file reading (CSV/JSON/SQL), static SQL analysis, and statistics.
  • •Instructions include a 'stop rule' and explicit ask-before-assume guidance, which reduces the risk of the agent acting on unstated assumptions; no attempts to override the auditor or change roles were present in the content.
  • •No allowed-tools are declared even though the skill references running Python scripts and using EXPLAIN ANALYZE; in its provided form it is documentation-only and cannot execute those actions.
  • •The referenced scripts (query_optimizer.py, data_profiler.py, report_generator.py) are not included in the supplied content, so their behavior cannot be audited from this file alone.
Comment cette analyse est faite

Exemples

Cohort retention analysis
Our orders table has customer_id, created_at, and amount. Can you build a monthly cohort retention analysis to see whether customers acquired in Q1 retain better in month 2 than those acquired in Q2?
Validated SQL query
Write me a SQL query for monthly revenue growth with unique customers, and review it for readability and index usage before I run it in production.
Funnel insight for stakeholders
Signup-to-purchase conversion dropped last month. Analyze the funnel for me and present the findings to the growth team with a chart and a concrete recommendation.

name: data-analyst description: > Data analysis across SQL, visualization, statistics, and reporting. Use when writing SQL queries, building dashboards, performing cohort or funnel analysis, running hypothesis tests, or presenting data-driven recommendations. license: MIT + Commons Clause metadata: version: 1.0.0 author: borghei category: data-analytics updated: 2026-03-31 tags: [analytics, sql, visualization, statistics, reporting]

Data Analyst

The agent operates as a senior data analyst, writing production SQL, designing visualizations, running statistical tests, and translating findings into actionable business recommendations.

Clarify First

Before the analysis, confirm these inputs. If any is unknown or vague, ASK — do not assume:

  • [ ] Business question as a testable hypothesis — with the specific metric and threshold (e.g., ">= 5% lift in 7-day retention") (frames the whole analysis and the headline)
  • [ ] Data sources and grain — which tables/columns exist and the row grain (determines feasibility and the SQL you can write)
  • [ ] Audience and the decision — who consumes the insight and what they will decide (sets altitude and the "Now What" recommendation)
  • [ ] Analysis type — cohort, funnel, hypothesis test, or trend (selects the method and the chart)

Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.

Workflow

  1. Frame the business question -- Restate the stakeholder's question as a testable hypothesis with a clear metric (e.g., "Did campaign X increase 7-day retention by >= 5%?"). Identify required data sources.
  2. Write and validate SQL -- Use CTEs for readability. Filter early, aggregate late. Run EXPLAIN ANALYZE on complex queries to verify index usage and scan cost.
  3. Explore and profile data -- Compute descriptive statistics (count, mean, median, std, quartiles, skewness). Check for nulls, duplicates, and outliers before drawing conclusions.
  4. Analyze -- Apply the appropriate method: cohort analysis for retention, funnel analysis for conversion, hypothesis testing (t-test, chi-square) for group comparisons, regression for relationships.
  5. Visualize -- Select chart type from the matrix below. Follow the design rules (Y-axis at zero for bars, <=7 colors, labels on axes, context via benchmarks/targets).
  6. Deliver the insight -- Structure findings as What / So What / Now What. Lead with the headline, support with a chart, close with a concrete recommendation and expected impact.

SQL Patterns

Monthly aggregation with growth:

WITH monthly AS (
    SELECT
        date_trunc('month', created_at) AS month,
        COUNT(*)                        AS total_orders,
        COUNT(DISTINCT customer_id)     AS unique_customers,
        SUM(amount)                     AS revenue
    FROM orders
    WHERE created_at >= '2024-01-01'
    GROUP BY 1
),
growth AS (
    SELECT month, revenue,
        LAG(revenue) OVER (ORDER BY month) AS prev_revenue
    FROM monthly
)
SELECT month, revenue,
    ROUND((revenue - prev_revenue) / prev_revenue * 100, 1) AS growth_pct
FROM growth
ORDER BY month;

Cohort retention:

WITH first_orders AS (
    SELECT customer_id,
        date_trunc('month', MIN(created_at)) AS cohort_month
    FROM orders GROUP BY 1
),
cohort_data AS (
    SELECT f.cohort_month,
        date_trunc('month', o.created_at) AS order_month,
        COUNT(DISTINCT o.customer_id)     AS customers
    FROM orders o
    JOIN first_orders f ON o.customer_id = f.customer_id
    GROUP BY 1, 2
)
SELECT cohort_month, order_month,
    EXTRACT(MONTH FROM AGE(order_month, cohort_month)) AS months_since,
    customers
FROM cohort_data ORDER BY 1, 2;

Window functions (running total + previous order):

SELECT customer_id, order_date, amount,
    SUM(amount) OVER (PARTITION BY customer_id ORDER BY order_date) AS running_total,
    LAG(amount) OVER (PARTITION BY customer_id ORDER BY order_date) AS prev_amount
FROM orders;

Chart Selection Matrix

| Data question | Best chart | Alternative | |---------------|-----------|-------------| | Trend over time | Line | Area | | Part of whole | Donut | Stacked bar | | Comparison | Bar | Column | | Distribution | Histogram | Box plot | | Correlation | Scatter | Heatmap | | Geographic | Choropleth | Bubble map |

Design rules: Start Y-axis at zero for bar charts. Use <= 7 colors. Label axes. Include benchmarks or targets for context. Avoid 3D charts and pie charts with > 5 slices.

Dashboard Layout

+------------------------------------------------------------+
| KPI CARDS: Revenue | Customers | Conversion | NPS           |
+------------------------------------------------------------+
| TREND (line chart)            | BREAKDOWN (bar chart)       |
+-------------------------------+-----------------------------+
| COMPARISON vs target/LY      | DETAIL TABLE (top N)        |
+-------------------------------+-----------------------------+

Statistical Methods

Hypothesis testing (t-test):

from scipy import stats
import numpy as np

def compare_groups(a: np.ndarray, b: np.ndarray, alpha: float = 0.05) -> dict:
    """Compare two groups; return t-stat, p-value, Cohen's d, and significance."""
    stat, p = stats.ttest_ind(a, b)
    d = (a.mean() - b.mean()) / np.sqrt((a.std()**2 + b.std()**2) / 2)
    return {"t_statistic": stat, "p_value": p, "cohens_d": d, "significant": p < alpha}

Chi-square test for independence:

def test_independence(table, alpha=0.05):
    chi2, p, dof, _ = stats.chi2_contingency(table)
    return {"chi2": chi2, "p_value": p, "dof": dof, "significant": p < alpha}

Key Business Metrics

| Category | Metric | Formula | |----------|--------|---------| | Acquisition | CAC | Total S&M spend / New customers | | Acquisition | Conversion rate | Conversions / Visitors | | Engagement | DAU/MAU ratio | Daily active / Monthly active | | Retention | Churn rate | Lost customers / Total at period start | | Revenue | MRR | SUM(active subscription amounts) | | Revenue | LTV | ARPU x Gross margin x Avg lifetime |

Insight Delivery Template

## [Headline: action-oriented finding]

**What:** One-sentence description of the observation.
**So What:** Why this matters to the business (revenue, retention, cost).
**Now What:** Recommended action with expected impact.
**Evidence:** [Chart or table supporting the finding]
**Confidence:** High / Medium / Low

Analysis Framework

# Analysis: [Topic]
## Business Question -- What are we trying to answer?
## Hypothesis -- What do we expect to find?
## Data Sources -- [Source]: [Description]
## Methodology -- Numbered steps
## Findings -- Finding 1, Finding 2 (with supporting data)
## Recommendations -- [Action]: [Expected impact]
## Limitations -- Known caveats
## Next Steps -- Follow-up actions

Reference Materials

  • references/sql_patterns.md -- Advanced SQL queries
  • references/visualization.md -- Chart selection guide
  • references/statistics.md -- Statistical methods
  • references/storytelling.md -- Presentation best practices

Scripts

python scripts/query_optimizer.py --file query.sql
python scripts/query_optimizer.py --sql "SELECT * FROM orders" --json
python scripts/data_profiler.py --file sales.csv
python scripts/data_profiler.py --file data.json --top 10 --json
python scripts/report_generator.py --file sales.csv --title "Monthly Sales Report"
python scripts/report_generator.py --file data.csv --group-by region --format markdown --json

Tool Reference

| Tool | Purpose | Key Flags | |------|---------|-----------| | query_optimizer.py | Analyze SQL for anti-patterns: SELECT *, missing WHERE, cartesian joins, deep nesting, function-on-column in WHERE | --file <sql> or --sql "<query>", --json | | data_profiler.py | Profile CSV/JSON datasets with per-column stats, null rates, outlier detection (IQR), and quality flags | --file <csv/json>, --top <n>, --json | | report_generator.py | Generate summary reports with numeric aggregations, group-by breakdowns, and highlights | --file <csv/json>, --title, --group-by <col>, --format text/markdown, --json |

Troubleshooting

| Problem | Likely Cause | Resolution | |---------|-------------|------------| | SQL query runs for minutes on a table with indexes | Query uses functions on indexed columns in WHERE clause (e.g., WHERE UPPER(name) = ...) | Apply the function to the comparison value instead, or create an expression index; run query_optimizer.py to detect this pattern | | data_profiler.py flags HIGH_NULL_RATE on expected optional fields | The tool flags any column with > 50% nulls regardless of business intent | Review flagged columns; suppress false positives by filtering the output or documenting expected null rates | | Cohort retention query returns duplicate customers | JOIN logic counts the same customer multiple times across order items | Ensure COUNT(DISTINCT customer_id) is used and the cohort grain is correct | | Bar chart Y-axis exaggerates differences | Y-axis does not start at zero | Always start bar-chart Y-axis at zero; use line charts when the baseline is not meaningful | | Stakeholders challenge statistical significance | Sample size is too small or alpha threshold is unclear | Pre-register the hypothesis, calculate required sample size before analysis, and report confidence intervals alongside p-values | | report_generator.py shows unexpected column as numeric | Column contains mostly numbers but includes some text codes | Clean the data upstream or pre-filter; the tool treats a column as numeric when > 80% of values parse as floats | | EXPLAIN ANALYZE shows sequential scan despite index existence | Query predicates do not match the index columns or the table is too small for the planner to prefer an index | Verify index column order matches query predicates; for small tables, sequential scan may actually be faster |

Success Criteria

  • Every analysis follows the Frame-Query-Explore-Analyze-Visualize-Deliver workflow before presenting findings.
  • SQL queries pass query_optimizer.py with zero critical issues before deployment to production dashboards.
  • Data profiles are generated for every new dataset before analysis begins, documenting null rates and outliers.
  • Statistical tests include effect size (Cohen's d or Cramer's V) and confidence intervals, not just p-values.
  • Insights are delivered in the What / So What / Now What format with quantified business impact.
  • Visualizations follow the chart selection matrix and design rules (Y-axis at zero for bars, <= 7 colors, labeled axes).
  • Reports generated by report_generator.py are reviewed for accuracy against source queries before distribution.

Scope & Limitations

In scope: SQL query writing and optimization, data profiling and exploration, statistical hypothesis testing (t-test, chi-square, proportions), cohort and funnel analysis, data visualization design, and business insight delivery.

Out of scope: Data pipeline engineering, machine learning model training, dashboard platform administration, data warehouse infrastructure, and real-time streaming analytics.

Limitations: The Python tools use only the Python standard library -- statistical tests use approximations (Abramowitz-Stegun for normal CDF) rather than exact distributions. For production-grade statistics, use scipy or statsmodels. query_optimizer.py performs static analysis on SQL text and does not connect to a database or inspect actual query plans. data_profiler.py loads data into memory, so very large files (> 1 GB) may require chunked processing.

Integration Points

  • Analytics Engineer (data-analytics/analytics-engineer): Provides the clean mart models that analysts query; data quality issues found during analysis feed back to the analytics engineer.
  • Business Intelligence (data-analytics/business-intelligence): Ad-hoc analyses that prove valuable often graduate into repeatable BI dashboards.
  • Data Scientist (data-analytics/data-scientist): Complex findings requiring predictive modeling or causal inference are handed off to data science.
  • Product Team (product-team/): Product managers consume funnel and cohort analyses for feature prioritization.
  • Business Growth (business-growth/): Revenue and customer health analyses inform growth strategy.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/senior-data-analyst-mvg6ty98' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/senior-data-analyst-mvg6ty98/download' --output '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md.part' && mv '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md.part' '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md' && test -s '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/data-analyst' && cp -R '.skill-downloads/senior-data-analyst-mvg6ty98' '.claude/skills/data-analyst'

Cursor
test -f '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md' && test -s '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/data-analyst' && cp -R '.skill-downloads/senior-data-analyst-mvg6ty98' '.cursor/skills/data-analyst'

Codex
test -f '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md' && test -s '.skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/data-analyst' && cp -R '.skill-downloads/senior-data-analyst-mvg6ty98' '.agents/skills/data-analyst'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/senior-data-analyst-mvg6ty98'

openskills read 'senior-data-analyst-mvg6ty98'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/senior-data-analyst-mvg6ty98/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires