The objective of this case study was to analyze publicly available fitness-device usage and wellness data, identify behavioral patterns, and translate those findings into marketing and product-engagement recommendations for Bellabeat.
The project followed the Ask, Prepare, Process, Analyze, Share, Act framework taught in the Google Data Analytics Professional Certificate.
What trends appear in smart-device usage?
How might these trends apply to Bellabeat customers?
How could those trends inform Bellabeat's marketing strategy?
Google Sheets: data inspection, cleaning, validation, formatting, conditional checks, and introductory visualization
Google BigQuery / SQL: joining datasets, aggregation, descriptive statistics, correlation analysis, and behavioral comparisons
Google Slides: final presentation and communication of findings, recommendations, limitations, and next steps
Source: Kaggle / Mobius
License: CC0 Public Domain
Collection Period: March–May 2016
Primary files used:
dailyActivity_merged
sleepDay_merged
weightLogInfo_merged
These files contained information related to daily steps, activity, sedentary time, calories, sleep, and weight tracking.
The original source describes a sample of approximately 30 Fitbit users. However, after combining the March–April and April–May activity files, 35 unique user IDs were present in the data used for this project. I preserved the records and documented the discrepancy rather than removing users to force the dataset to match the source description.
Real wearable-device observations
Multiple behavioral measures
Daily records that allow analysis across time
Publicly available and anonymized
Small sample
Collected in 2016 and therefore not representative of the current wearable market
No demographic information
Uneven use of sleep and weight-tracking features
Unresolved difference between the documented participant count and unique IDs present in the combined data
Potential selection bias from the original recruitment process
Source: Kaggle
Year: 2023
Analyzed Records: 374
Variables included:
Gender
Age
Occupation
Sleep duration
Sleep quality
Physical activity
Stress level
BMI category
Daily steps
Heart rate
Sleep-disorder status
This dataset was added because the Fitbit dataset did not provide demographic information relevant to Bellabeat's women-focused customer base.
Importantly, this dataset is synthetic/compiled rather than a directly collected longitudinal health study. It was therefore used as a supplementary practice dataset for exploratory analysis. Its results should not be interpreted as independently validating patterns within the Fitbit data or as representative of Bellabeat customers.
The current Documentation/Process page identifies these same two sources but alternates between the source-described and analyzed sample sizes; the wording above resolves that discrepancy.
Data cleaning was completed primarily in Google Sheets before the cleaned files were uploaded to BigQuery.
Original copies were preserved separately from working copies so that cleaning decisions could be documented without altering the source data.
The March–April and April–May activity files were combined into one March–May dataset containing 1,397 activity records plus the column header.
Quality checks included:
Duplicate detection: 0 duplicates
Missing user IDs: 0
Unique user IDs: 35
Minimum and maximum checks for steps, distance, sedentary minutes, and calories
Review of values suggesting likely device non-wear
Potential non-wear observations included:
0 daily steps
0 total or tracker distance
0 calories
1,440 sedentary minutes, representing an entire 24-hour day
These records were flagged rather than automatically deleted because the available data did not provide enough information to determine with certainty whether every value represented true non-wear.
This preserved the original observations while making their limitations visible during analysis.
The available sleep dataset covered April–May 2016.
Cleaning included:
Removing 3 duplicate records
Identifying 24 unique users
Converting the original date-time field into a separate date field for SQL matching
Confirming that minutes asleep did not exceed total time in bed
All sleep-duration records passed the logical consistency check.
The smaller number of users in the sleep dataset also became an analytical finding: sleep tracking was not represented as consistently as basic daily activity tracking.
The March–April and April–May weight files were combined and checked for:
Duplicate records
Unique users
Missing or sparse fields
Manual versus automatically recorded entries
Two duplicate records were identified and removed.
Only 13 unique users recorded weight information. Body-fat information was especially sparse, so it was not emphasized in the final analysis.
Because the weight-tracking sample was small and unevenly distributed, results involving weight logging were treated as exploratory.
The supplementary dataset contained 374 records after import.
Cleaning and quality checks included:
Duplicate detection: 0 duplicates
Checking expected categorical values
Reviewing gender values for unexpected categories
Standardizing BMI labels
Twenty-one records used “Normal Weight” while others used “Normal.” These were standardized into a single Normal category in a new cleaned field while preserving the original variable.
After cleaning, the datasets were uploaded into BigQuery. Column types and schemas were checked before analysis, including dates, numeric variables, user IDs, and the standardized BMI field.
Four primary cleaned tables were used:
dailyActivity_cleaned
sleepDay_cleaned
weightLogInfo_cleaned
sleep_health_lifestyle_cleaned
The complete SQL syntax, results, interpretations, and next steps are documented separately in the Query Log.
Daily activity and sleep records were joined using both:
User ID
Calendar date
This produced 422 matched observations.
The smaller matched sample demonstrated that sleep data were considerably less complete than activity data.
BigQuery's CORR() function was used to compare activity measures with sleep duration.
Results:
Steps vs. sleep duration: r = -0.19
Sedentary minutes vs. sleep duration: r = -0.53
Average sleep among matched observations: approximately 7.0 hours
Standard deviations were also calculated to evaluate the substantial variability in both daily sleep and step counts.
Dates were converted into weekday labels and grouped to calculate average:
Steps
Sedentary minutes
Calories
Results showed:
Saturday: approximately 7,752 average steps
Sunday: approximately 6,607 average steps
Sunday represented the lowest average activity level.
Sleep records were similarly grouped by weekday.
Sunday had the highest average sleep duration at approximately 7.55 hours, while Thursday had the lowest at approximately 6.69 hours.
An additional lagged analysis compared one day's activity with sleep recorded the following day. The relationship was very weak at approximately r = -0.06, so the data did not support a strong claim that greater activity on one day produced longer sleep that night.
The supplementary dataset was grouped by gender to compare sleep, activity, stress, daily steps, and heart rate.
Descriptive results showed nearly identical average physical activity levels between women and men but differences in average stress and sleep quality.
Because the dataset is synthetic, these comparisons were used to practice segmentation and generate questions for future analysis rather than make population-level claims.
Additional SQL queries grouped the supplementary data by BMI category, gender, and occupation.
These analyses suggested that stress and sleep differences remained visible across several subgroups even when activity levels varied.
Small groups were excluded from some occupational comparisons using minimum sample-size thresholds to avoid emphasizing highly unstable averages.
These analyses were supporting explorations and were not elevated to the main conclusions because of the synthetic source and uneven subgroup sizes.
The strongest correlations in the supplementary dataset were:
Stress vs. sleep quality: r = -0.90
Stress vs. sleep duration: r = -0.81
Stress vs. daily steps: r = 0.19
These findings helped generate the recommendation to test Bellabeat messaging around stress, sleep, mindfulness, and recovery.
Weight-tracking status was compared with daily activity.
Users who logged weight averaged:
Approximately 8,150 steps/day
Approximately 917 sedentary minutes/day
Users who did not log weight averaged:
Approximately 6,774 steps/day
Approximately 1,037 sedentary minutes/day
Because users self-selected into weight tracking, these results should not be interpreted as evidence that tracking weight improves activity. Instead, they suggest that users who engage with one secondary feature may also be more engaged with their broader health behaviors or wearable platform.
The SQL Query Log contains the joins, CORR(), AVG(), STDDEV(), COUNT(), grouping logic, and subgroup analyses supporting these results.
The final stage of the project focused on communicating the analysis to a nontechnical business audience.
Visualizations were developed to communicate four primary findings:
Average steps and sleep duration by day of week
Daily steps and sedentary time compared with sleep duration
Stress level compared with sleep quality
Sleep quality and stress compared by gender
The final Google Slides presentation was organized around:
Business task
Data sources
Key findings
Marketing recommendations
Limitations
Next steps
The presentation deliberately emphasized business interpretation over SQL syntax, while the Query Log and Cleaning Log preserved the technical documentation separately.
The final 17-slide presentation follows exactly that structure and concludes with recommendations, limitations, and immediate through long-term next steps.
This case study has several meaningful limitations:
Small Fitbit sample
Fitbit data collected in 2016
No demographic variables in the Fitbit dataset
Inconsistent adoption of secondary tracking features
Limited weight data
Unclear sleep-date convention
Correlational rather than causal analysis
Unresolved discrepancy between source-described participants and unique IDs observed
Synthetic supplementary dataset
No first-party Bellabeat customer data
For these reasons, the recommendations should be viewed as testable business hypotheses, not conclusions that Bellabeat should implement without further validation.
The strongest next step would be to repeat this analysis using first-party Bellabeat data.
Future work could include:
Larger and more current customer samples
Demographic segmentation
Longitudinal customer behavior
Feature-adoption and retention analysis
A/B testing of onboarding and notification strategies
Subscription-conversion analysis
Menstrual-cycle and recovery patterns relevant to Bellabeat's product positioning
Analysis of whether multi-feature engagement is associated with sustained improvements in wellness behaviors
Cleaning Summary (more details related to data cleaning located within 'Bellabeat Case Study: Cleaning Log' linked below)
Ensured that all datasets were checked for duplicates, unique values in ID column, and checked for outliers
Ensured logical consistency of data points (ex: ensuring that minutes asleep < minutes in bed)
Ensured consistency of formatting (ex: change Date Time formats to Date format)
Query Summary:
Detailed query log linked in 'Query Log' document below.
Guided Process and Documentation Notes:
Included detailed notes regarding datasets, cleaning, process, and findings in '(Notes) Case Study 2: How Can a wellness company play it smart' linked below