What Is the Body Part Coverage of the Exercises Dataset?
The Exercises Dataset provides comprehensive body part coverage across 10 distinct anatomical zones, with 1,324 exercises distributed from Upper Arms (292 exercises) down to Neck (2 exercises).
The Exercises Dataset by hasaneyldrm/exercises-dataset is a structured, multilingual collection designed for fitness applications and machine learning research. Understanding its body part coverage is essential for developers building workout recommendation engines, researchers analyzing exercise distributions, or data scientists training pose-estimation models.
Body Part Distribution in the Dataset
Each exercise record contains a mandatory body_part field that identifies the primary muscle region targeted. The distribution spans all major anatomical zones:
| Body Part | Muscle Focus | Exercise Count |
|---|---|---|
| Upper Arms | Biceps, triceps, forearms | 292 |
| Upper Legs | Quadriceps, hamstrings, glutes | 227 |
| Back | Lats, spinal erectors, rhomboids | 203 |
| Waist | Core, obliques, hip flexors | 169 |
| Chest | Pectoralis major/minor, serratus | 163 |
| Shoulders | Deltoids, trapezius | 143 |
| Lower Legs | Calves, ankle stabilizers | 59 |
| Lower Arms | Forearms, wrist extensors | 37 |
| Cardio | Aerobic movements | 29 |
| Neck | Cervical muscles | 2 |
These counts are documented in the repository's README.md under the statistics section, providing transparency for downstream users.
Schema Enforcement and Data Integrity
The body_part field is strictly controlled through JSON Schema validation. In data/exercises.schema.json, lines 72-83 define an enumeration that restricts body_part to exactly these 10 values:
{
"body_part": {
"type": "string",
"enum": [
"Upper Arms",
"Upper Legs",
"Back",
"Waist",
"Chest",
"Shoulders",
"Lower Legs",
"Lower Arms",
"Cardio",
"Neck"
]
}
}
This schema enforcement guarantees that no invalid or inconsistent body part values enter the dataset, making it reliable for programmatic consumption.
Analyzing Body Part Coverage Programmatically
Python: Standard Library Approach
import json
from collections import Counter
with open("data/exercises.json", encoding="utf-8") as f:
exercises = json.load(f)
# Count occurrences of each body part
counts = Counter(ex["body_part"] for ex in exercises)
print("Body-part coverage:")
for part, cnt in counts.most_common():
print(f"{part:12}: {cnt}")
Python: Pandas DataFrame Approach
import json
import pandas as pd
ex = json.load(open("data/exercises.json", encoding="utf-8"))
df = pd.DataFrame(ex)
print(df["body_part"].value_counts())
JavaScript: Node.js Tally
const exercises = require("./data/exercises.json");
// Tally body-part frequencies
const counts = exercises.reduce((acc, ex) => {
acc[ex.body_part] = (acc[ex.body_part] || 0) + 1;
return acc;
}, {});
console.log("Body-part coverage:", counts);
Key Source Files for Body Part Data
| File | Purpose |
|---|---|
data/exercises.json |
Full dataset of 1,324 exercises with body_part per record |
data/exercises.schema.json |
JSON Schema defining allowed body_part enumeration values |
README.md |
Human-readable statistics and body part distribution table |
index.html |
Interactive browser with body part filtering capability |
The index.html file provides a client-side interface where users can filter exercises dynamically by body part, demonstrating practical application of this coverage model.
Equipment vs. Body Part Relationship
Approximately 25% of exercises are body-weight only (no equipment required), while the remaining 75% distribute across dumbbells, barbells, cables, machines, and other equipment types. This cross-categorization enables multi-dimensional filtering—for example, retrieving all "Back" exercises that use only "Dumbbells" or finding body-weight "Cardio" movements.
Summary
- The Exercises Dataset covers 10 body parts through schema-enforced enumeration
- 1,324 total exercises range from Upper Arms (292) to Neck (2)
- Validation in
exercises.schema.jsonguarantees data consistency - Multiple programmatic interfaces (Python, JavaScript) enable custom analysis
- Interactive filtering available via
index.htmlfor immediate exploration
Frequently Asked Questions
How many body parts does the Exercises Dataset cover?
The dataset covers 10 distinct body parts: Upper Arms, Upper Legs, Back, Waist, Chest, Shoulders, Lower Legs, Lower Arms, Cardio, and Neck. This enumeration is hard-coded in the JSON Schema at data/exercises.schema.json lines 72-83.
Which body part has the most exercises in the dataset?
Upper Arms leads with 292 exercises, representing approximately 22% of the total collection. This is followed by Upper Legs (227) and Back (203), reflecting common fitness priorities around arm strength, leg power, and posterior chain development.
Can I filter exercises by body part in the provided interface?
Yes. The repository includes index.html, an interactive client-side browser that supports real-time filtering by body part, equipment type, and other attributes. This file loads data/exercises.json directly and requires no server-side processing.
Is the body part field validated in the dataset?
Absolutely. The body_part field is constrained by a strict enum in exercises.schema.json. Any record attempting to use a value outside the 10 defined body parts will fail schema validation, ensuring downstream applications receive predictable, consistent data.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →