This directory contains a Jupyter Notebook for calculating and interpreting the System Usability Scale (SUS).
Brief Overview
SUS-Analyse.ipynb— Main notebook: loads a Google Forms CSV export (or a synthetic CSV), maps columns to Q1..Q10, normalizes the items, calculates per-participant SUS scores (0–100), outputs interpretations, and generates an interpretive distribution diagram.sus_google_forms_export.csv— Example/sample data, may be generated or read by the notebook.sus_score_distribution_interpreted.png— Interpretation plot generated by the notebook (histogram + interpretation bands).
Essentials
- Normalization: Positive items (Q1, Q3, Q5, Q7, Q9): normalized value = response - 1; Negative items (Q2, Q4, Q6, Q8, Q10): normalized value = 5 - response. Result: 10 values 0–4 → sum 0–40 → ×2.5 → SUS 0–100.
- Interpretation (conventional thresholds, Sauro & Lewis):
- < 51: Unacceptable (F)
- 51–67.99: Marginal (D)
- 68–73.99: OK (C)
- 74–80.29: Good (B)
- ≥ 80.3: Excellent (A)
How to use the notebook (locally)
- Open the notebook in JupyterLab / Jupyter Notebook or Visual Studio Code (with Jupyter extension).
- If using real Google Forms data: export the responses as CSV and save as
sus_google_forms_export.csvin the same folder as the notebook. The notebook automatically attempts to map columns (robust mapping fallback is implemented). - Alternatively: run the cell that calls
generate_synthetic_sus_csv(n=..., mean=..., sd=...)to generate a synthetic test file. - Execute the cells sequentially (imports → generator/CSV → mapping → calculation → plot). The key cells are commented.
Short terminal commands (optional)
- Run notebook automatically and save results (requires
jupyter):
jupyter nbconvert --to notebook --execute SUS-Analyse.ipynb --inplace --ExecutePreprocessor.timeout=600Dependencies
- Python 3.10+ recommended
- Required packages (imported in notebook):
pandas,numpy,seaborn,matplotlib,pathlib,re. - In the provided notebook kernel environment, many packages are already installed. Use a virtual environment if needed and install missing packages with pip/conda.
Output / Artifacts
sus_google_forms_export.csv— Input/sample data (can be overwritten by generator)sus_score_distribution_interpreted.png— Visualization with interpretation bands
Further / Notes
- By default, rows with missing responses in Q1..Q10 are removed (
dropna). Alternatively, "imputation" is possible — briefly: missing item values are replaced with plausibly estimated substitute values (e.g., Pro-Rating: scaling up the answered items to 10 items; or Multiple Imputation to account for uncertainty). - Examples/Recommendation:
- Few missing items (e.g., ≤1 per participant): Pro-Rating (fast, practical).
- Multiple missing items or many affected cases: Multiple/Iterative Imputation (e.g., MICE) or data quality measure.
- The specific method should be documented; the notebook does not implement imputation automatically.
- The notebook includes a robust
map_column_names()function that attempts to map long Google Forms question texts to Q1..Q10. Adjustments are possible if your formulations differ significantly.
Contact
- For questions or change requests: briefly describe what output or behavior you want to change.