• Google Data Analytics Capstone Project - BellaBeat /

Google Data Analytics Capstone Project - BellaBeat

Introduction #.

This is the case study that served as my capstone project for Google’s Data Analytics Course . I aimed to use as many of the skills I learned in that course while completing this project, including spreadsheets, SQL, and RStudio. I chose this case study in particular for it’s focuse on exercise and physical fitness, topics that I have a deep interest in. Beyond the Data Analytics Certificate, I hope that this project will help me learn how to better use my own Fitbit data.

You are a junior data analyst working on the marketing analyst team at Bellabeat, a high-tech manufacturer of health-focused products for women. Bellabeat is a successful small company, but they have the potential to become a larger player in the global smart device market. Urška Sršen, cofounder and Chief Creative Officer of Bellabeat, believes that analyzing smart device fitness data could help unlock new growth opportunities for the company. You have been asked to focus on one of Bellabeat’s products and analyze smart device data to gain insight into how consumers are using their smart devices. The insights you discover will then help guide marketing strategy for the company. You will present your analysis to the Bellabeat executive team along with your high-level recommendations for Bellabeat’s marketing strategy Urška Sršen and Sando Mur founded Bellabeat, a high-tech company that manufactures health-focused smart products. Sršen used her background as an artist to develop beautifully designed technology that informs and inspires women around the world. Collecting data on activity, sleep, stress, and reproductive health has allowed Bellabeat to empower women with knowledge about their own health and habits. Since it was founded in 2013, Bellabeat has grown rapidly and quickly positioned itself as a tech-driven wellness company for women. By 2016, Bellabeat had opened offices around the world and launched multiple products. Bellabeat products became available through a growing number of online retailers in addition to their own e-commerce channel on their website. The company has invested in traditional advertising media, such as radio, out-of-home billboards, print, and television, but focuses on digital marketing extensively. Bellabeat invests year-round in Google Search, maintaining active Facebook and Instagram pages, and consistently engages consumers on Twitter. Additionally, Bellabeat runs video ads on Youtube and display ads on the Google Display Network to support campaigns around key marketing dates. Sršen knows that an analysis of Bellabeat’s available consumer data would reveal more opportunities for growth. She has asked the marketing analytics team to focus on a Bellabeat product and analyze smart device usage data in order to gain insight into how people are already using their smart devices. Then, using this information, she would like high-level recommendations for how these trends can inform Bellabeat marketing strategy. Sršen asks you to analyze smart device usage data in order to gain insight into how consumers use non-Bellabeat smart devices. She then wants you to select one Bellabeat product to apply these insights to in your presentation. These questions will guide your analysis: What are some trends in smart device usage? How could these trends apply to Bellabeat customers? How could these trends help influence Bellabeat marketing strategy? You will produce a report with the following deliverables: A clear summary of the business task: A description of all data sources used. Documentation of any cleaning or manipulation of data A summary of your analysis Supporting visualizations and key findings Your top high-level content recommendations based on your analysis

Business Task #

We have been tasked to discover trends in device usage, then apply those findings towards helping customers and Bellabeat’s marketing strategy.

The data were collected from thirty-four users who gave informed consent to have their data analyzed. The data have been anonymized. The project wants to evaluate the data on the following criteria:

  • Reliable - This data is not very reliable. In addition to the problems listed below, there’s a lack of useful information about the individuals, nor is it clear why these individuals were chosen.
  • Original - This data originates from a third party.
  • Comprehensive - Only 34 individuals are involved and the data is full of gaps. Some datasets are missing entire days of data.
  • Current - This data was gathered in 2016. Granted, health data doesn’t have an exact expiration date and can still be useful years afterward, but one has to wonder why more recent data couldn’t be found, especially since this is supposed to inform the business decisions of a company about to enter a new market.
  • Cited - It’s not clear how the Kaggle user who uploaded the data got them in the first place.

Overall, the quality of the data is quite poor. I searched for similar datasets that might make up for these deficiencies, but none were forthcoming even after extensive searching.

Here are a list of the individual datasets along with the columns from each one:

  • dailyActivity_merged - Id, Activity Date, Total Steps, Total Distance, Tracker Distance, Logged Activities Distance, Very Active Distance, Moderately Active Distance, Lightly Active Distance, Sedentary Active Distance, Very Active Minutes, Fairly Active Minutes, Lightly Active Minutes, Sedentary Minutes, Calories
  • dailyCalories_merged - Id, ActivityDay, Calories
  • dailyIntensities_merged - Id, Activity Day, Sedentary Minutes, Lightly Active Minutes, Fairly Active Minutes, Very Active Minutes, Sedentary Active Distance, Light Active Distance, Moderately Active Distance, Very Active Distance
  • dailySteps_merged - Id, Activity Day, Step Total
  • heartrate_seconds_merged - Id, Time, Value
  • hourlyCalories_merged - Id, Activity Hour, Calories
  • hourlyIntensities_merged - Id, Activity Hour, Total Intensity, Average Intensity
  • hourlySteps_merged - Id, Activity Hour, Step Total
  • minuteCaloriesNarrow_merged - Id, Activity Minute, Calories
  • minuteCaloriesWide_merged - Id, Activity Hour, Calories per Minute (60)
  • minuteIntensitiesNarrow_merged - Id, Activity Minute, Intensity
  • minuteIntensitiesWide_merged - Id, Activity Hour, Intensity per Minute (60)
  • minuteMETSNarrow_merged - Id, Activity Minute, METs
  • minuteSleep_merged - Id, Date, Value, Log Id
  • minuteStepsNarrow_merged - Id, Activity Minute, Steps
  • minuteStepsWide_merged - Id, Activity Hour, Steps per Minute (60)
  • sleepDay_merged - Id, Sleep Day, Total Sleep Records, Total Minutes Asleep, Total Time In Bed
  • weightLogInfo_merged - Id, Date, Weight Kg, Weight Pounds, Fat, BMI, Is Manual Report, Log Id

Most of the data is based on the increments of time in which it was gathered (hourly, daily, etc), so I’ll evaluate and process the data on these terms as well.

Processing #

Daily data #.

The daily data was cleaned and partially processed with Google Sheets. This data comes from the following sets:

  • dailyActivity_merged
  • dailyCalories_merged
  • dailyIntensities_merged
  • dailySteps_merged
  • sleepDay_merged

The dailyActivity_merged file is already exhaustive, containing much of the data in the other daily data. As such, the following datasets were removed from the analysis for being redundant: dailyCalories_merged, dailyIntensities_merged, and dailySteps_merged. From this point, it was a simple matter of using Google Sheets to root out duplicate rows and null values, none of which were found.

The only daily data that wasn’t already incorporated in the dailyActivity_merged file was the sleepDay_merged dataset. As an avid fitness enthusiast myself, I know that quality sleep can be just as important as exercise and diet. It seemed obvious to do whatever I could to combine these two datasets in hopes of gaining new insights.

I removed three duplicate rows in the sleepDay_merged dataset. With the COUNTUNIQUE function, I also noticed that there were only 24 unique users in the dataset, as opposed to the 34 in the dailyActivity_merged dataset. I also noticed that users didn’t track their sleep every night. Furthermore, I changed the title of the “value” column to “sleepValue” to clarify its origin.

All told, cleaning the data through Sheets was incredibly simple and I’ll continue using it for some of my analysis.

Finally, I also added the final draft of both spreadsheets to the SQL database to compare it against the rest of the data. Before doing this, I made sure to change the date format so that it would match SQL’s DATE datatype. Using the following SQL query, I was able to merge both datasets together:

The resulting data was then exported as dailyMerged.csv .

Hourly Data #

The hourly data consists of the following:

  • hourlyCalories_merged
  • hourlyIntensities_merged
  • hourlySteps_merged

This data is too unwieldy to work with in spreadsheets, so these will be processed using tools like R Studio, and SQL. However, Google Sheets was sufficiently capable of carrying out some of the necessary cleaning. Before exporting them from Google Sheets, I checked the data for duplicate rows and reformatted the dates so BigQuery would accept them as DATETIME data type.

I renamed the datasets when I uploaded them to BigQuery to remove the extraneous “_merged” modifier. For example, the minuteSleep_merged dataset became “minuteSleep” and hourlySteps_merged became “hourlySteps”.

Using SQL, I joined the hourly data together with the following query:

The resulting data was then exported as hourlyMerged.csv .

Second and Minute Data #

The second and minute data consist of the following:

  • minuteCaloriesNarrow_merged
  • minuteCaloriesWide_merged
  • minuteIntensitiesNarrow_merged
  • minuteIntensitiesWide_merged
  • minuteMETSNarrow_merged
  • minuteSleep_merged
  • minuteStepsNarrow_merged
  • minuteStepsWide_merged
  • heartrate_seconds_merged

These datasets are too unwieldy even for SQL or R. As nice as it is in theory to have everything in fine grained detail, such data need to justify the trouble and strife required to clean, process, and analyze them, which doesn’t appear to be the case with the second and minute data. If there’s no way to aggregate and average this data into more manageable units of time, I’ll have to set it aside for the moment or at least until I have access to more computing power.

Weight Log #

The scant amount of data in weightLogInfo_merged makes this difficult to comfortably incorporate into the study. Only eight of the already paltry thirty-four participants logged their weight, and of those, only two of them did so more than five times. This is especially disappointing considering studies of large populations is one of the few areas where the controversial BMI metric undeniably shines.

Analyze and Visualize #

Daily data analysis #.

After making a quick few charts in Google Sheets, the sleep tracking data doesn’t appear to correlate strongly with any of the other data, whether that’s calories, steps, or active or sedentary minutes at any intensity. This is disappointing, though unsurprising considering the unreliability and lack of sleep data gathered. Perhaps more insight can be gleaned by using R.

Other charts measuring more banal observations indicate that at least the commonly logged data is internally consistent. For example, the number steps taken each day correlates strongly with calories burned, as does the total distance traveled.

As I’d hoped, I was able to get more insight from bringing the data into RStudio. Although there isn’t a strong correlation between activity and sleep (-0.1815268), it does appear there is a moderate negative correlation between sleep and non-active minutes (-0.5869577). This suggests that sleep has a stronger effect on whether or not an individual will be active the next day:

With all this daily data, it seemed prudent to aggregate the data by day of the week and see what trends I could find. With the following script, I was able to collate data based on day of the week (this codeblock is very long, so I put most of it behind an expandable section):

Click below to see the code for the other days of the week. Expand > # Wednesday > > day_Wednesday <- dailyMerged1 %>% + filter ( dailyMerged1 $ DayOfWeek == "Wednesday" ) %>% + select ( - c ( Id , ActivityDate )) > summary ( day_Wednesday ) Calories TotalSleepRecords TotalMinutesAsleep TotalTimeInBed TotalSteps TotalDistance TrackerDistance Min. : 1377 Min. : 1.000 Min. : 152.0 Min. : 260 Min. : 356 Min. : 0.250 Min. : 0.250 1 st Qu. : 1789 1 st Qu. : 1.000 1 st Qu. : 392.0 1 st Qu. : 425 1 st Qu. : 5318 1 st Qu. : 3.748 1 st Qu. : 3.748 Median : 2207 Median : 1.000 Median : 444.5 Median : 469 Median : 8686 Median : 6.175 Median : 6.175 Mean : 2378 Mean : 1.152 Mean : 434.7 Mean : 470 Mean : 8023 Mean : 5.720 Mean : 5.720 3 rd Qu. : 2942 3 rd Qu. : 1.000 3 rd Qu. : 477.0 3 rd Qu. : 525 3 rd Qu. : 10516 3 rd Qu. : 7.418 3 rd Qu. : 7.418 Max. : 4079 Max. : 3.000 Max. : 658.0 Max. : 679 Max. : 15108 Max. : 12.190 Max. : 12.190 LoggedActivitiesDistance ActiveDistance non_ActiveDistance ActiveMinutes non_ActiveMinutes DayOfWeek Min. : 0.00000 Min. : 0.000 Min. : 0.250 Min. : 0.00 Min. : 320.0 Length : 66 1 st Qu. : 0.00000 1 st Qu. : 0.000 1 st Qu. : 2.417 1 st Qu. : 0.00 1 st Qu. : 878.5 Class : character Median : 0.00000 Median : 1.805 Median : 3.590 Median : 33.50 Median : 924.5 Mode : character Mean : 0.09091 Mean : 2.062 Mean : 3.652 Mean : 38.08 Mean : 922.4 3 rd Qu. : 0.00000 3 rd Qu. : 2.910 3 rd Qu. : 5.062 3 rd Qu. : 58.50 3 rd Qu. : 977.8 Max. : 2.00000 Max. : 9.810 Max. : 7.110 Max. : 130.00 Max. : 1138.0 > > day_Wed_list <- + list ( + list ( "Total_Steps_Ave" = ~ mean ( day_Wednesday $ TotalSteps , na.rm = TRUE )), + list ( "Active_Minutes_Ave" = ~ mean ( day_Wednesday $ ActiveMinutes , na.rm = TRUE )), + list ( "Sedentary_Minutes_Ave" = ~ mean ( day_Wednesday $ non_ActiveMinutes , na.rm = TRUE )), + list ( "Calories_Ave" = ~ mean ( day_Wednesday $ Calories , na.rm = TRUE )), + list ( "Total_Hours_Asleep_Ave" = ~ mean ( day_Wednesday $ TotalMinutesAsleep / 60 , na.rm = TRUE )) + ) > day_Wed_summary <- summary_table ( day_Wednesday , day_Wed_list ) > print.default ( day_Mon_summary ) day_Monday ( N = 46 ) Total_Steps_Ave 9273.217391 Active_Minutes_Ave 49.804348 Sedentary_Minutes_Ave 940.782609 Calories_Ave 2431.978261 Total_Hours_Asleep_Ave 6.991667 attr (, "rgroups" ) [1] 1 1 1 1 1 attr (, "n" ) [1] 46 attr (, "class" ) [1] "qwraps2_summary_table" "matrix" "array" > > # Thursday > > day_Thursday <- dailyMerged1 %>% + filter ( dailyMerged1 $ DayOfWeek == "Thursday" ) %>% + select ( - c ( Id , ActivityDate )) > summary ( day_Thursday ) Calories TotalSleepRecords TotalMinutesAsleep TotalTimeInBed TotalSteps TotalDistance Min. : 257 Min. : 1.000 Min. : 59.0 Min. : 65.0 Min. : 17 Min. : 0.010 1 st Qu. : 1788 1 st Qu. : 1.000 1 st Qu. : 377.2 1 st Qu. : 416.0 1 st Qu. : 4363 1 st Qu. : 2.925 Median : 2168 Median : 1.000 Median : 423.5 Median : 457.0 Median : 8752 Median : 6.355 Mean : 2307 Mean : 1.031 Mean : 401.3 Mean : 434.9 Mean : 8184 Mean : 5.773 3 rd Qu. : 2868 3 rd Qu. : 1.000 3 rd Qu. : 467.2 3 rd Qu. : 492.8 3 rd Qu. : 10971 3 rd Qu. : 7.735 Max. : 4900 Max. : 2.000 Max. : 545.0 Max. : 568.0 Max. : 19542 Max. : 15.010 TrackerDistance LoggedActivitiesDistance ActiveDistance non_ActiveDistance ActiveMinutes non_ActiveMinutes Min. : 0.010 Min. : 0.0000 Min. : 0.000 Min. : 0.010 Min. : 0.00 Min. : 2.0 1 st Qu. : 2.925 1 st Qu. : 0.0000 1 st Qu. : 0.000 1 st Qu. : 2.652 1 st Qu. : 0.00 1 st Qu. : 873.0 Median : 6.355 Median : 0.0000 Median : 1.360 Median : 3.610 Median : 23.00 Median : 951.5 Mean : 5.745 Mean : 0.1562 Mean : 1.912 Mean : 3.699 Mean : 38.72 Mean : 901.3 3 rd Qu. : 7.735 3 rd Qu. : 0.0000 3 rd Qu. : 3.072 3 rd Qu. : 4.827 3 rd Qu. : 66.25 3 rd Qu. : 993.2 Max. : 15.010 Max. : 4.0000 Max. : 7.720 Max. : 7.700 Max. : 184.00 Max. : 1299.0 DayOfWeek Length : 64 Class : character Mode : character > > day_Thur_list <- + list ( + list ( "Total_Steps_Ave" = ~ mean ( day_Thursday $ TotalSteps , na.rm = TRUE )), + list ( "Active_Minutes_Ave" = ~ mean ( day_Thursday $ ActiveMinutes , na.rm = TRUE )), + list ( "Sedentary_Minutes_Ave" = ~ mean ( day_Thursday $ non_ActiveMinutes , na.rm = TRUE )), + list ( "Calories_Ave" = ~ mean ( day_Thursday $ Calories , na.rm = TRUE )), + list ( "Total_Hours_Asleep_Ave" = ~ mean ( day_Thursday $ TotalMinutesAsleep / 60 , na.rm = TRUE )) + ) > day_Thur_summary <- summary_table ( day_Thursday , day_Thur_list ) > print.default ( day_Thur_summary ) day_Thursday ( N = 64 ) Total_Steps_Ave 8183.515625 Active_Minutes_Ave 38.718750 Sedentary_Minutes_Ave 901.312500 Calories_Ave 2306.671875 Total_Hours_Asleep_Ave 6.688281 attr (, "rgroups" ) [1] 1 1 1 1 1 attr (, "n" ) [1] 64 attr (, "class" ) [1] "qwraps2_summary_table" "matrix" "array" > > # Friday > > day_Friday <- dailyMerged1 %>% + filter ( dailyMerged1 $ DayOfWeek == "Friday" ) %>% + select ( - c ( Id , ActivityDate )) > summary ( day_Friday ) Calories TotalSleepRecords TotalMinutesAsleep TotalTimeInBed TotalSteps TotalDistance Min. : 403 Min. : 1.00 Min. : 82.0 Min. : 85.0 Min. : 42 Min. : 0.030 1 st Qu. : 1850 1 st Qu. : 1.00 1 st Qu. : 355.0 1 st Qu. : 386.0 1 st Qu. : 5563 1 st Qu. : 3.680 Median : 2196 Median : 1.00 Median : 405.0 Median : 448.0 Median : 8198 Median : 5.630 Mean : 2330 Mean : 1.07 Mean : 405.4 Mean : 445.1 Mean : 7901 Mean : 5.512 3 rd Qu. : 2846 3 rd Qu. : 1.00 3 rd Qu. : 465.0 3 rd Qu. : 510.0 3 rd Qu. : 10465 3 rd Qu. : 7.110 Max. : 4044 Max. : 2.00 Max. : 658.0 Max. : 961.0 Max. : 16556 Max. : 11.470 TrackerDistance LoggedActivitiesDistance ActiveDistance non_ActiveDistance ActiveMinutes non_ActiveMinutes Min. : 0.030 Min. : 0.00000 Min. : 0.000 Min. : 0.03 Min. : 0.00 Min. : 6.0 1 st Qu. : 3.680 1 st Qu. : 0.00000 1 st Qu. : 0.000 1 st Qu. : 2.67 1 st Qu. : 0.00 1 st Qu. : 899.0 Median : 5.630 Median : 0.00000 Median : 0.880 Median : 3.77 Median : 21.00 Median : 987.0 Mean : 5.512 Mean : 0.07018 Mean : 1.722 Mean : 3.78 Mean : 35.74 Mean : 965.8 3 rd Qu. : 7.110 3 rd Qu. : 0.00000 3 rd Qu. : 3.150 3 rd Qu. : 4.91 3 rd Qu. : 61.00 3 rd Qu. : 1032.0 Max. : 11.470 Max. : 2.00000 Max. : 6.140 Max. : 7.24 Max. : 169.00 Max. : 1332.0 DayOfWeek Length : 57 Class : character Mode : character > > day_Fri_list <- + list ( + list ( "Total_Steps_Ave" = ~ mean ( day_Friday $ TotalSteps , na.rm = TRUE )), + list ( "Active_Minutes_Ave" = ~ mean ( day_Friday $ ActiveMinutes , na.rm = TRUE )), + list ( "Sedentary_Minutes_Ave" = ~ mean ( day_Friday $ non_ActiveMinutes , na.rm = TRUE )), + list ( "Calories_Ave" = ~ mean ( day_Friday $ Calories , na.rm = TRUE )), + list ( "Total_Hours_Asleep_Ave" = ~ mean ( day_Friday $ TotalMinutesAsleep / 60 , na.rm = TRUE )) + ) > day_Fri_summary <- summary_table ( day_Friday , day_Fri_list ) > print.default ( day_Fri_summary ) day_Friday ( N = 57 ) Total_Steps_Ave 7901.403509 Active_Minutes_Ave 35.736842 Sedentary_Minutes_Ave 965.771930 Calories_Ave 2329.649123 Total_Hours_Asleep_Ave 6.757018 attr (, "rgroups" ) [1] 1 1 1 1 1 attr (, "n" ) [1] 57 attr (, "class" ) [1] "qwraps2_summary_table" "matrix" "array" > > # Saturday > > day_Saturday <- dailyMerged1 %>% + filter ( dailyMerged1 $ DayOfWeek == "Saturday" ) %>% + select ( - c ( Id , ActivityDate )) > summary ( day_Saturday ) Calories TotalSleepRecords TotalMinutesAsleep TotalTimeInBed TotalSteps TotalDistance Min. : 1373 Min. : 1.000 Min. : 61.0 Min. : 69.0 Min. : 1202 Min. : 0.780 1 st Qu. : 1863 1 st Qu. : 1.000 1 st Qu. : 340.0 1 st Qu. : 382.0 1 st Qu. : 5079 1 st Qu. : 3.420 Median : 2363 Median : 1.000 Median : 426.0 Median : 470.0 Median : 10144 Median : 7.710 Mean : 2507 Mean : 1.193 Mean : 419.1 Mean : 459.8 Mean : 9871 Mean : 7.016 3 rd Qu. : 3073 3 rd Qu. : 1.000 3 rd Qu. : 507.0 3 rd Qu. : 539.0 3 rd Qu. : 13238 3 rd Qu. : 9.240 Max. : 4501 Max. : 2.000 Max. : 775.0 Max. : 961.0 Max. : 22770 Max. : 17.540 TrackerDistance LoggedActivitiesDistance ActiveDistance non_ActiveDistance ActiveMinutes non_ActiveMinutes Min. : 0.780 Min. : 0 Min. : 0.000 Min. : 0.590 Min. : 0.00 Min. : 402.0 1 st Qu. : 3.420 1 st Qu. : 0 1 st Qu. : 0.000 1 st Qu. : 2.730 1 st Qu. : 0.00 1 st Qu. : 850.0 Median : 7.710 Median : 0 Median : 2.010 Median : 3.770 Median : 44.00 Median : 911.0 Mean : 7.016 Mean : 0 Mean : 2.747 Mean : 4.266 Mean : 50.28 Mean : 927.2 3 rd Qu. : 9.240 3 rd Qu. : 0 3 rd Qu. : 4.160 3 rd Qu. : 5.330 3 rd Qu. : 80.00 3 rd Qu. : 998.0 Max. : 17.540 Max. : 0 Max. : 13.320 Max. : 9.480 Max. : 252.00 Max. : 1371.0 DayOfWeek Length : 57 Class : character Mode : character > > day_Sat_list <- + list ( + list ( "Total_Steps_Ave" = ~ mean ( day_Saturday $ TotalSteps , na.rm = TRUE )), + list ( "Active_Minutes_Ave" = ~ mean ( day_Saturday $ ActiveMinutes , na.rm = TRUE )), + list ( "Sedentary_Minutes_Ave" = ~ mean ( day_Saturday $ non_ActiveMinutes , na.rm = TRUE )), + list ( "Calories_Ave" = ~ mean ( day_Saturday $ Calories , na.rm = TRUE )), + list ( "Total_Hours_Asleep_Ave" = ~ mean ( day_Saturday $ TotalMinutesAsleep / 60 , na.rm = TRUE )) + ) > day_Sat_summary <- summary_table ( day_Saturday , day_Sat_list ) > print.default ( day_Sat_summary ) day_Saturday ( N = 57 ) Total_Steps_Ave 9871.122807 Active_Minutes_Ave 50.280702 Sedentary_Minutes_Ave 927.210526 Calories_Ave 2506.894737 Total_Hours_Asleep_Ave 6.984503 attr (, "rgroups" ) [1] 1 1 1 1 1 attr (, "n" ) [1] 57 attr (, "class" ) [1] "qwraps2_summary_table" "matrix" "array" > > # Sunday > > day_Sunday <- dailyMerged1 %>% + filter ( dailyMerged1 $ DayOfWeek == "Sunday" ) %>% + select ( - c ( Id , ActivityDate )) > summary ( day_Sunday ) Calories TotalSleepRecords TotalMinutesAsleep TotalTimeInBed TotalSteps TotalDistance Min. : 1214 Min. : 1.000 Min. : 58.0 Min. : 61.0 Min. : 655 Min. : 0.430 1 st Qu. : 1698 1 st Qu. : 1.000 1 st Qu. : 380.0 1 st Qu. : 436.0 1 st Qu. : 3688 1 st Qu. : 2.600 Median : 2027 Median : 1.000 Median : 481.0 Median : 527.0 Median : 6543 Median : 4.330 Mean : 2277 Mean : 1.182 Mean : 452.7 Mean : 503.5 Mean : 7298 Mean : 5.185 3 rd Qu. : 2676 3 rd Qu. : 1.000 3 rd Qu. : 550.5 3 rd Qu. : 602.5 3 rd Qu. : 10334 3 rd Qu. : 7.020 Max. : 4552 Max. : 3.000 Max. : 700.0 Max. : 961.0 Max. : 17298 Max. : 14.380 TrackerDistance LoggedActivitiesDistance ActiveDistance non_ActiveDistance ActiveMinutes non_ActiveMinutes Min. : 0.430 Min. : 0 Min. : 0.000 Min. : 0.430 Min. : 0.00 Min. : 566.0 1 st Qu. : 2.600 1 st Qu. : 0 1 st Qu. : 0.000 1 st Qu. : 2.260 1 st Qu. : 0.00 1 st Qu. : 758.5 Median : 4.330 Median : 0 Median : 0.000 Median : 3.230 Median : 0.00 Median : 868.0 Mean : 5.185 Mean : 0 Mean : 1.893 Mean : 3.289 Mean : 38.91 Mean : 887.7 3 rd Qu. : 7.020 3 rd Qu. : 0 3 rd Qu. : 3.520 3 rd Qu. : 4.035 3 rd Qu. : 58.50 3 rd Qu. : 945.5 Max. : 14.380 Max. : 0 Max. : 11.150 Max. : 6.730 Max. : 275.00 Max. : 1379.0 DayOfWeek Length : 55 Class : character Mode : character > > day_Sun_list <- + list ( + list ( "Total_Steps_Ave" = ~ mean ( day_Sunday $ TotalSteps , na.rm = TRUE )), + list ( "Active_Minutes_Ave" = ~ mean ( day_Sunday $ ActiveMinutes , na.rm = TRUE )), + list ( "Sedentary_Minutes_Ave" = ~ mean ( day_Sunday $ non_ActiveMinutes , na.rm = TRUE )), + list ( "Calories_Ave" = ~ mean ( day_Sunday $ Calories , na.rm = TRUE )), + list ( "Total_Hours_Asleep_Ave" = ~ mean ( day_Sunday $ TotalMinutesAsleep / 60 , na.rm = TRUE )) + ) > day_Sun_summary <- summary_table ( day_Sunday , day_Sun_list ) > print.default ( day_Sun_summary ) day_Sunday ( N = 55 ) Total_Steps_Ave 7297.854545 Active_Minutes_Ave 38.909091 Sedentary_Minutes_Ave 887.672727 Calories_Ave 2276.600000 Total_Hours_Asleep_Ave 7.545758 attr (, "rgroups" ) [1] 1 1 1 1 1 attr (, "n" ) [1] 55 attr (, "class" ) [1] "qwraps2_summary_table" "matrix" "array"

Using ggplot , I made several charts describing my findings:

Interesting how both Tuesday and Monday are in the top three in each chart, even Average Sedentary Minutes. It seems that people are more likely to go easy on Fridays and stay up later. Overall, the differences between the days of the week aren’t as large as one might expect, but these differences are still notable enough to consider.

Hourly Data Analysis #

I imported hourlyMerged.csv into RStudio, where I could compare the relationship between calories, steps, and intensity. I first divided the activity hour column into activityDate and time , then converted them to the appropriate data types, then added times corresponding to the day of the week and the time of day:

There appeared to be no strong correlation between intensity and either steps or calories burned:

In this case, I thought it might be worth analyzing what time of day participants were most active: night, morning, afternoon, and evening.

I then put all the summaries together to get a better idea of what time of day people were most active:

Finally, let’s once again put those data into charts:

No surprise that nighttime ranks last for physical activity. People are slightly yet significantly more likely to be more active during the afternoon than the evening or morning.

1. What are some trends in smart device usage? The clearest trend is that FitBit simply isn’t collecting enough data.

2. How could these trends apply to Bellabeat customers? If the customers can’t log this data easily, then they’re missing out on a lot of very useful insights.

3. How could these trends help influence Bellabeat marketing strategy? These gaps in FitBit’s data are a great opportunity for BellaBeat to step in and provide something their competitors have thus far been unable to provide.

Recommendations #

  • For example, if Friday is a day when customers are consistently less active and more sedentary, the app should encourage them to engage in some light physical activity.
  • Body weight is important data for anyone trying to improve their health. Whatever is preventing customers from regularly logging their weight needs to be uncovered and corrected.
  • Weight needs to be measured at regular intervals and under the same conditions for the data to be helpful. An individual’s weight can fluctuate dramatically throughout the day, so a person can appear to be up to ten pounds (4.5kg) heavier or lighter depending on when they logged their weight. This is one of the rare cases when too many readings can spoil the utility of the dataset. Perhaps the customer can be encouraged to set a weekly timer to remind them to weigh themselves under similar conditions. If they want to weigh themselves outside of these time frames, they should receive a dialog box confirming that they understand the issues with doing so.
  • Perhaps there can be hardware integration with smart scales, much in the same way as BellaBeat’s Spring water bottle automatically tracks hydration.
  • Sleep is just as important to a healthy life as exercise and a balanced diet. BellaBeat should strongly encourage their customers go to bed at an appropriate time for each of their schedules while wearing one of the company’s products. BellaBeat can really stand out in their field if they can use abundant and accurate sleep data to help their customers.
  • It’s also possible that the particular device used to track sleep wasn’t conducive to tracking sleep. For example, maybe some customers find wearing a wristwatch to bed to be too uncomfortable to be worth it. In such a case, this might require a hardware solution.
  • Even when the data has been gathered amply and correctly, they seem to be disconnected from each other. Sure, steps taken correlate strongly with calories burned, but that’s a banal observation. It’s very hard to see how someone can look at this FitBit data at a glance and use it to change their habits and routines. BellaBeat should not only be gathering better data than FitBit, but it should also leverage that data better to provide interesting and actionable insights to their customers.
  • The customer should feel like their data is being gathered and deployed to improve their lives. This can incentivize them to more regularly log their data and wear the tracking devices while sleeping. Without this sense of purpose, the customer will stop engaging with the device seriously.

Acknowledgments #

I’d like to thank Ed Garcia for his guidance on how to divide the data into days of the week and times of the day.

  • Google Data Analytics Capstone Project - Bellabeat
  • by Nicholas Peters
  • Last updated about 2 years ago
  • Hide Comments (–) Share Hide Toolbars

Twitter Facebook Google+

Or copy & paste this link into an email or IM:

Case Study 2: Bellabeat

Marlene seleiro - google data analytics capstone - portfolio-ready case study, bellabeat - how can a wellness technology company play it smart.

Key Stakeholders: Urška Sršen: Bellabeat’s cofounder and Chief Creative Officer Sando Mur: Mathematician, Bellabeat’s cofounder and key member of the Bellabeat executive team Bellabeat marketing analytics team: A team of data analysts guiding Bellabeat’s marketing strategy.

Using the Case Study Roadmap as a guide, this analysis will follow the steps of the data analysis process: Ask, Prepare, Process, Analyze, Share, and Act.

Step 1: Ask

Analyze the smart device usage data in order to gain insight into how consumers use non-Bellabeat smart devices and select one Bellabeat product to apply these insights to my presentation.

Guiding questions

  • What is the problem you are trying to solve? Sršen knows that an analysis of Bellabeat’s available consumer data would reveal more opportunities for growth. She has asked the marketing analytics team to focus on a Bellabeat product and analyze smart device usage data in order to gain insight into how people are already using their smart devices.
  • How can your insights drive business decisions? Using this information, would produce high-level recommendations on how these trends can inform Bellabeat marketing strategy. Business Task: Analyze FitBit fitness tracker data to gain insights into how consumers are using the FitBit app and discover trends for Bellabeat marketing strategy.

Business questions:

1. what are some trends in smart device usage, 2. how could these trends apply to bellabeat customers, 3. how could these trends help influence bellabeat marketing strategy, produce a report with the following deliverables:.

  • A clear summary of the business task
  • A description of all data sources used
  • Documentation of any cleaning or manipulation of data
  • A summary of your analysis
  • Supporting visualizations and key findings 6, Your top high-level content recommendations based on your analysis

Step 2: Prepare

The co-founder and Chief Creative Officer encourages me to use “public data” that explores smart device users’ daily habits and points me to a specific Kaggle data set. Now I prepared the data for analysis using the “Case Study Roadmap” as a guide:

Guiding questions:

  • Where is your data stored? Data is publicly available on Kaggle: FitBit Fitness Tracker Data .
  • How is the data organized? Data is stored in 18 csv files.
  • Are there issues with bias or credibility in this data? Does your data ROCCC? This Kaggle data set contains personal fitness tracker from 30 fitbit users. They were generated by respondents to a distributed survey via Amazon Mechanical Turk between 12.04.2016-12.05.2016.
  • How are you addressing licensing, privacy, security, and accessibility? 30 eligible Fitbit users consented to the submission of personal tracker data, including minute-level output for physical activity, heart rate, and sleep monitoring. A good data source is ROCCC which stands for Reliable, Original, Comprehensive, Current, and Cited:

Reliable — LOW — Not reliable as it only has 30 respondents Original — LOW — Third party provider ( Amazon Mechanical Turk ) Comprehensive — MED — Parameters match most of Bellabeat product´s parameters Current — LOW — Data is 5 years old and may not be relevant Cited — LOW — Data collected from third party, hence unknown “Overall, this dataset is considered “bad quality data” and it is not recommended to produce business recommendations based on this data”

  • How did you verify the data’s integrity? As data is collected in a survey, we are unable to ascertain its integrity or accuracy.
  • How does it help you answer your question? This data explores smart device users’ daily habits. It includes information about daily activity, steps, sleep habits and heart rate, that can be used to explore users’ habits and find some trends.
  • Are there any problems with the data? Data was collected 5 years ago in 2016. Users’ daily activity, fitness and sleeping habits, diet and food consumption may have changed since then. Data may not be timely or relevant. Sample size of 30 FitBit users is not representative of the entire fitness population.

Step 3: Process

Process the data by cleaning and ensuring that it is correct, relevant, complete and free of error and outlier.

Upload CSV files to R

I upload the CSV files to my project from the relevant data source: https://www.kaggle.com/arashnic/fitbit There are many different CSV files in this dataset, but I decided to concentrate in two CSVs: “dailyActivity_merged.csv” and “sleepDay_merged.csv”

Installing and loading common packages and libraries

Understanding some summary statistics.

How many unique participants are there in each dataframe? It looks like there may be more participants in the daily activity dataset than the sleep dataset.

  • What tools are you choosing and why? I am using R for data cleaning, transformation and visualization. R provides an accessible language to organize, modify, clean data frames and create insightful data visualizations.
  • Have you ensured your data’s integrity? Data was collected in a survey, so I am unable to ascertain its integrity or accuracy.
  • What steps have you taken to ensure that your data is clean? I removed duplicates, NA´s, cleaned, formated and converted date formats.
  • How can you verify that your data is clean and ready to analyze? I checked all cleaning operations above and assured accuracy.
  • Have you documented your cleaning process so you can review and share those results? yes, I used R Markdown and Code Chunks.

Step 4: Analyze

Now that the data is stored appropriately and has been prepared for analysis we can start putting it to work.

How many observations are there in each dataframe?

What are some quick summary statistics we’d want to know about each data frame?

Plotting a few explorations on user activities:.

What’s the relationship between steps taken in a day and sedentary minutes? How could this help inform the customer segments that we can market to?

  • we are observing a negative relationship between total steps taken and sedentary minutes.
  • We can also note that sedentary time is not necessarily related to calories burned.
  • We also see that calories generally trend positively with total steps taking.

What’s the relationship between minutes asleep and time in bed? You might expect it to be almost completely linear - are there any unexpected trends?

  • Observing the next graph We find some outliers. Some of these data points spent a lot of time in bed, but didn’t actually sleep, and then a small batch that slept a whole bunch and spent more time in bed.

What could these trends tell you about how to help market this product?

We could definitely market consumers to use their watch to better monitor their time in bed against their sleep time. ## Or areas where you might want to explore further?

I wonder which days of week users often spend more time logging? How does this relates to the sedentary minutes??

Merging the two datasets together, so that data can be more useful and acessible

We will execute a full outer join to keep all rows from both data frames, specify all=true.**, i will create new column “dayoftheweek” by generating date in the form of a number like 0=monday, 1=tuesday,… and also create new column “totalminutes” being the sum of veryactiveminutes, fairlyactiveminutes, lightlyactiveminutes and sedentaryminutes., seems only 50% worked…let´s try a different method and change these numbers to actual weekdays, interpreting statistical findings:.

  • On average, users logged 7,652 steps or 5.4km which is not adequate. As recommended by OMS, an adult female has to aim at least 10,000 steps or 8km per day to benefit from general health, weight loss and fitness improvement. Source: Médis article
  • Sedentary users are the majority logging on average 990.4 minutes or 20 hours making up 81% of total average minutes.
  • Noting that average calories burned is 2,308 calories equivalent to 0.3 Kg. Could not interpret into detail as calories burned depend on several factors such as the age, weight, daily tasks, exercise, hormones and daily calorie intake. Source: A tua Saúde article
  • By quickly analyzing these 3 scenarios, we observe “TotalDistance” is more closely related to “Calories”, but let´s explore a little further.
  • How should you organize your data to perform analysis on it? I merged “daily_activity” and “daily_sleep”, performed a full join and replaced NA´s with “0” and confirmed all 33 users om the “combined_data” dataset, so data can be more useful and accessible.
  • Has your data been properly formatted? Yes, dates were converted to European format to be more accurate, consistent, and easy to read.
  • What surprises did you discover in the data? we are observing a negative relationship between total steps taken and sedentary minutes
  • What trends or relationships did you find in the data? We can also note that sedentary time is not necessarily related to calories burned. We also see that calories generally trend positively with total steps taking.
  • How will these insights help answer your business questions? These insights should be able to show us which groups of consumers poorly make use of Bellabeat smart-devices.

Step 5: Share

Plot nr. of times users logged in app across the week, in this bar chart, we are looking at the frequency of fitbit app usage in terms of days of the week..

  • We discovered that users prefer or remember (giving them the doubt of benefit that they forgotten) to track their activity on the app during midweek from Tuesday to Friday.
  • Noting that the frequency dropped on Friday and continue on weekends and Monday.

Plot Calories burned for every step taken:

Calories burned for every step taken.

From the scatter plot, we discovered that:

  • We have a positive correlation, meaning that Calories are burned for every step taken
  • We observed that intensity of calories burned increase when users are at the range of > 0 to 15,000 steps with calories burn rate cooling down from 15,000 steps onwards.

Noted a few outliers: * Zero steps with zero to minimal calories burned. * 1 observation of > 35,000 steps with < 3,000 calories burned. * Deduced that outliers could be due to natural variation of data, change in user’s usage or errors in data collection (ie. miscalculations, data contamination or human error).

Plot Calories burned for every Hour logged:

Calories burned for every hour logged.

The scatter plot is showing:

  • **A weak positive correlation whereby the increase of hours logged does not translate to more calories being burned. That is largely due to the average sedentary hours (purple line) plotted at the 16 to 17 hours range.

Again, we can see a few outliers : * The same zero value outliers. * An unusual red dot at the 24 hours with zero calorie burned which may be due to the same reasons as above.

Plot % of Activity in Minutes:

Percentage of activity in minutes.

As seen from the pie chart:

  • Sedentary minutes takes the biggest slice at 81.10%.
  • This indicates that users are using the FitBit app to log daily activities such as daily commute, inactive movements (moving from one spot to another) or running errands.
  • The App is rarely used to track fitness (ie. running) according to the minor percentage of Fairly Active Activity (1.11%) and Very Active Activity (1.73%).
  • This is highly discouraging as FitBit app was developed to encourage fitness.

Step 6: Act

In the final step, we will be delivering our insights and providing recommendations based on our analysis. Here, we revisit our business questions and share with you our high-level business recommendations.

Majority of users (81.10%) are using the FitBit app to track sedentary activities and not using it for tracking their health habits. Users prefer to track their activities during weekdays as compared to weekends - perhaps because they spend more time outside on weekdays and stay in on weekends. Data also tell us that most users log in their calories, steps taken, etc, and fewer log their sleep data.

Both companies develop products focused on providing women with their health, habit and fitness data and encouraging them to understand their current habits and make healthy decisions. These common trends surrounding health and fitness can very well be applied to Bellabeat customers. Bellabeat could easily market these type of costumers by telling them smart-devices could help them start their journey by measuring how much they’re moving and how these moments of activity would benefit them to live longer!

It is well documented that moderate-to-vigorous physical activity is protective against chronic disease. Conversely, emerging evidence indicates the deleterious effects of prolonged sitting, so in a need to change both behaviors, self-monitoring of behavior is one of the most robust behavior-change techniques available. Bellabeat marketing team can encourage users by educating and equipping them with knowledge about fitness benefits, suggest different types of exercise (ie. simple 10 minutes exercise on weekday and a more intense exercise on weekends) and calories intake and burnt rate information on the Bellabeat app.On weekends, Bellabeat app can also prompt notification to encourage users to exercise. By marketing these devices to consumers, Bellabeat provides a unique opportunity for individuals to change their behavior, become more physically active and increase their life expectancy.

IMAGES

  1. Bellabeat Presentation Google Analytics Capstone Project

    google data analytics capstone project bellabeat

  2. Power BI is Powerful! Google Data Analytics Case Study: Bellabeat

    google data analytics capstone project bellabeat

  3. Google Analytics Capstone Project: Bellabeat Device Improvement

    google data analytics capstone project bellabeat

  4. Google Data Analytics Capstone Project

    google data analytics capstone project bellabeat

  5. Google Data Analytics Capstone Project: How Can Bellabeat, A Wellness

    google data analytics capstone project bellabeat

  6. Google Data Analytics Capstone Project Case Study 2: Bellabeat

    google data analytics capstone project bellabeat

VIDEO

  1. Eileen Valles Data Analytics Capstone Presentation

  2. Samuel Casillas Data Analytics Capstone Presentation

  3. Can I Become a Data Analyst With 5 Years of BPO Experience ?

  4. Data Visualization Capstone

  5. Capstone Project Data Analytics -RevoU

  6. Advanced Business Analytics Capstone Project

COMMENTS

  1. Google Data Analytics Capstone Project: How Can Bellabeat, A ...

    The Bellabeat case study is part of the Google Professional Data Analytics Certificate. In this case study, I play the part of a junior data analyst in the marketing department of Bellabeat.

  2. Google Data Analytics Capstone: Bellabeat

    2)Applying these trends to Bellabeat customers. 3)Using these trends to influence and shape Bellabeat's marketing strategy. This case study is completed as the capstone project, part of the Google Data Analytics Professional Certificate

  3. Google Data Analytics Capstone Project: Bellabeat

    Bellabeat marketing analytics team: A team of data analysts responsible for collecting, analyzing, and reporting data that helps guide Bellabeat's marketing strategy. You joined this team six months ago and have been busy learning about Bellabeat''s mission and business goals — as well as how you, as a junior data analyst, can help ...

  4. Google Data Analytics Capstone Project: Bellabeat

    Introduction. This is a Capstone Project for the Google Data Analytics Professional Certification.. Bellabeat is a high-tech company that manufactures health-focused smart products that help women easily track their overall health and wellness, and get connected to their body and mind throughout different stages in life.

  5. TheGreatPau/Bellabeat-Capstone-Project

    The main objective of this project is to focus on a Bellabeat product and analyze smart device usage data in order to gain insight into how people are already using their smart devices. Then, using this information, the insights gained will be used to produce high-level recommendations for how these trends can inform Bellabeat marketing strategy.

  6. Google Analytics Capstone Project: Bellabeat Case Study!

    Here at Bellabeat, women's health is our passion. Bellabeat is a high-tech company that manufactures health-focused smart products worldwide. Urška Sršen and Sando Mur founded Bellabeat in 2013, with the intent to develop beautifully designed technology that informs and inspires women around the world.

  7. Google Data Analytics Capstone: Bellabeat Case Study

    INTRODUCTION. This capstone is part of the eighth and final course from the Google Data Analytics Professional Certificate, where you have the opportunity to complete an optional case study. In this project, we will apply the five steps of the data analysis process taught in the program: Ask, Prepare, Process, Analyze, Share, and Act.

  8. My BellaBeat Project: Google Data Analytics Capstone Project

    This Capstone Project is a real life scenario case study from the Course 8 of Google Data Analytics Certificate. In this task, I am a junior data analyst with Bellabeat. Bellabeat brand is into ...

  9. Google Data Analytics Professional Capstone Project

    Step 1: Ask. In my hypothetical role as the Junior data analyst for Bellabeat's marketing team, the CCO asks me to analyze smart device usage data in order to gain insight into how consumers use ...

  10. Google Data Analytics Capstone Project

    She has asked the marketing analytics team to focus on a Bellabeat product and analyze smart device usage data in order to gain insight into how people are already using their smart devices. Then, using this information, she would like high-level recommendations for how these trends can inform Bellabeat marketing strategy.

  11. Google Data Analytics Certificate. Capstone project: Bellabeat

    This capstone project is part of the last course of Google Data Analytics Professional Certificate. In this case study, we answer key business questions for Bellabeat, a high-tech manufacturer of health-focused products for women.

  12. katiehuangx/Google-Data-Analytics-Capstone

    This analysis is an optional Capstone project from the Google Data Analytics Professional Certificate on Coursera. Background: Bellabeat is a high-tech manufacturer of beautifully-designed health-focused smart products for women since 2013.

  13. RPubs

    Google Data Analytics Capstone Project - Bellabeat; by Nicholas Peters; Last updated almost 2 years ago; Hide Comments (-) Share Hide Toolbars

  14. emily1618/Google-Data-Analytics-Bellabeat-Case-Study

    💡 BUSINESS TASK: Analyze Fitbit data to gain insight and help guide marketing strategy for Bellabeat to grow as a global player. Primary stakeholders: Urška Sršen and Sando Mur, executive team members.

  15. Bellabeat Case Study. This case study was part of the Google…

    Bellabeat Marketing Analytics Team; Section 2: Prepare. In this section, useful and relevant data for solving the business task was identified. ... Google Data Analytics Capstone Project: Cyclistic Trip Case Study. A case study for Google Data Analytics Certificate. This case study is part of the Google Data Analytics Professional Certificate ...

  16. Case Study 2: Bellabeat

    Collecting data on activity, sleep, stress, and reproductive health has allowed Bellabeat to empower women with knowledge about their own health and habits. Since it was founded in 2013, Bellabeat has grown rapidly and quickly positioned itself as a tech-driven wellness company for women. By 2016, Bellabeat had opened offices around the world ...

  17. Google Data Analytics Capstone

    If the issue persists, it's likely a problem on our side. Unexpected token < in JSON at position 4. SyntaxError: Unexpected token < in JSON at position 4. Refresh. Explore and run machine learning code with Kaggle Notebooks | Using data from FitBit Fitness Tracker Data.

  18. bellabeat case study: Google Data Analytics

    If the issue persists, it's likely a problem on our side. Unexpected token < in JSON at position 4. keyboard_arrow_up. content_copy. SyntaxError: Unexpected token < in JSON at position 4. Refresh. Explore and run machine learning code with Kaggle Notebooks | Using data from FitBit Fitness Tracker Data.

  19. GitHub

    I am a junior analyst working for Bellabeat, a high-tech manufacturer of health-focused products for women.Urška Sršen, cofounder and Chief Creative Officer of Bellabeat, believes that analyzing smart device fitness data could help unlock new growth opportunities for the company.I have been asked to focus on one of Bellabeat's products and analyze smart device data to gain insight into how ...

  20. Google Data Analytics Capstone Project

    Explore and run machine learning code with Kaggle Notebooks | Using data from No attached data sources

  21. Google Capstone Project: A Case Study of Bellabeat using Excel ...

    This is my completed case study from an optional course in the Google Data Analytics Course named: Capstone Project. The analysis follows the 6 steps of Data Analysis taught in the Google course ...

  22. virajbhutada/Coursera-Google-Data-Analytics-Capstone

    This analysis serves as the Capstone project for the Google Data Analytics Professional Certificate on Coursera. It explores the FitBit fitness tracker usage data to extract insights relevant to Bellabeat, a wellness technology company specializing in health-focused smart products for women.

  23. Google Data Analytics Capstone Project

    If the issue persists, it's likely a problem on our side. Unexpected token < in JSON at position 4. keyboard_arrow_up. content_copy. SyntaxError: Unexpected token < in JSON at position 4. Refresh. Explore and run machine learning code with Kaggle Notebooks | Using data from [Private Datasource]

  24. Bellabeat-Case-Study--Google-Data-Analytics-Capstone-Project

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.