Выпускная работа по курсу Google Data Analytics Certificate

Решил разобраться в новой профессии. Прошел курс Data Analytics от Google на Coursera. В этом посте рассказываю об этапах выполнения выпускной работы (Case Study)

В завершении курса Data Analyst на получение сертификата от Google предлагается выполнить выпускную работу. На изучение всех материалов курса у меня ушло 4 месяца (разработчиками курс рассчитан на 6 месяцев). По завершению курса я получил сертификат Google Data Analytics.

Объект анализа

Согласно легенде, я работаю в компании Bellabeat в должности Junior Data Analyst. Руководство компании поручило мне выбрать один из продуктов компании и провести анализ публичного датасета с информацией об использовании смарт-устройств.

Креативный директор Bellabeat — Уршка Сршен — надеется, что мои рекомендации отделу маркетинга откроют для компании новые пути роста.

Базовые вопросы сформулированы следующим образом:

  1. Какие тренды присутствуют в использовании смарт-устройств?
  2. Как эти тренды применимы к пользователям Bellabeat?
  3. Как эти тренды могут повлиять на маркетинговую стратегию Bellabeat?

Бизнес-задача

Сформулируем бизнес-задачу на основе вопросов для анализа:

Определить потенциальные возможности для роста и предоставить рекомендации для оптимизации маркетинговой стратегии, ориентируясь на тренды использования смарт-устройств.

Продукты

Раз мне предложена роль сотрудника Bellabeat, очевидно, что я должен хорошо разбираться в продуктах моей компании. Знание продукта выгодно скажется на результатах моего дальнейшего анализа и качестве рекомендаций.

Bellabeat позиционирует себя как производителя умных аксессуаров для женщин, разработанных женщинами. На ноябрь 2021 года компания представлена на рынке следующим набором продуктов:

Ivy, фитнестрекер в виде броши с акцентом на отслеживание и прогнозирование фаз менструального цикла и возможностью отслеживать сердечный ритм.

Считает пройденные шаги, пульс, потраченные калории, отслеживает физическую активность, сон, менструальный цикл, медитативные практики. Встроенный аккумулятор, беспроводная зарядка.

Leaf, фитнестрекер, можно носить как браслет, кулон или брошь.

Аналогичен Ivy, но не умеет считать пульс. Работает от батарейки CR2032 («таблетки», которые стоят в материнских платах и ключах от машины).

Time, cмарт-часы. Умеют всё, что и Leaf, и еще показывают время.

Работают от той же батарейки, что и Leaf.

Spring. Умная бутылка для контроля обезвоживания.

Считает, сколько было выпито воды. Напоминает о необходимости регулярно пить через оповещения на смартфоне.

Wellness Coach. Приложение для смартфона со статистикой активности на основе данных, полученных со смарт-устройств.

Платная подписка (10 долларов в месяц) с персональными советами по питанию, физической активности, сну, здоровью и красоте. Идет в подарок при покупке других продуктов компании сроком от трех до шести месяцев.

Еще есть коврик для йоги и менструальная чаша, но они не обладают какими-либо «умными» функциями, поэтому на них подробно останавливаться не будем.

Публичный датасет

Задание предлагает использовать для анализа публичный датасет с данными трекеров фирмы FitBit. Датасет содержит выборку от 33-х пользователей, собранную в 2016 году, и включает в себя информацию о физической активности и сне.

Отмечу очевидные ограничения набора данных:

  • он устаревший;
  • данные всего за месяц (с апреля по май 2016 года);
  • не известна гендерная и возрастная принадлежность пользователей
  • и пользователей всего 33.

Было бы здорово получить свежую выборку от большего количества пользователей, конкретно женщин от 25 до 45 лет, и за больший срок — хотя бы за полгода-год. Но сценарий не предполагает поиск и использование каких-либо дополнительных данных, поэтому работаем с тем, что имеем.

Работаем с данными

Основную работу по анализу я проводил в RStudio, но для первого знакомства просто открыл их в Preview на ноуте.

Действительно полезные и объемные файлы импортировал в Google Sheet для более внимательного изучения. Стало очевидно, что надо привести к одному формату даты измерений и вычистить пустые ячейки.

Очистка и форматирование данных

Начнем с настройки окружения RStudio — загрузим и установим библиотеки:

library(tidyverse) # манипуляции с данными и анализ
library(janitor) # очистка данных
library(lubridate) # для работы с датами и временем

Загрузим данные в окружение:

weight <- read.csv("dataset/weightLogInfo_merged.csv")
sleep <- read_csv("dataset/sleepDay_merged.csv")
calories_steps <- read.csv("dataset/dailyActivity_merged.csv")
intensity_hr <- read.csv("dataset/hourlyIntensities_merged.csv")

# и посмотрим, как прошло
> head(intensity_hr)
          Id          ActivityHour TotalIntensity AverageIntensity
1 1503960366 4/12/2016 12:00:00 AM             20         0.333333
2 1503960366  4/12/2016 1:00:00 AM              8         0.133333
3 1503960366  4/12/2016 2:00:00 AM              7         0.116667
4 1503960366  4/12/2016 3:00:00 AM              0         0.000000
5 1503960366  4/12/2016 4:00:00 AM              0         0.000000
6 1503960366  4/12/2016 5:00:00 AM              0         0.000000

Приведем даты к единому формату и преобразуем имена столбцов из CamelCase в lower_case_with_underscores:

weight_clean <- weight %>% 
  clean_names() %>% 
  mutate(date = as_datetime(mdy_hms(date))) %>%
  mutate(date = floor_date(date, unit = "days"))

sleep_clean <- sleep %>% 
  clean_names() %>% 
  mutate(sleep_day = as_datetime(mdy_hms(sleep_day))) %>% 
  rename(date = sleep_day)

calories_steps_clean <- calories_steps %>% 
  clean_names() %>% 
  mutate(activity_date = as_datetime(mdy(activity_date))) %>% 
  rename(date = activity_date)

intensity_hr_clean <- intensity_hr %>% 
  clean_names() %>% 
  mutate(activity_hour = as_datetime(mdy_hms(activity_hour))) %>% 
  mutate(date = floor_date(activity_hour, unit = "days"))

# и проверим, что на выходе
> head(intensity_hr_clean)
          id       activity_hour total_intensity average_intensity     date     time
1 1503960366 2016-04-12 00:00:00              20          0.333333 04/12/16 00:00:00
2 1503960366 2016-04-12 01:00:00               8          0.133333 04/12/16 01:00:00
3 1503960366 2016-04-12 02:00:00               7          0.116667 04/12/16 02:00:00
4 1503960366 2016-04-12 03:00:00               0          0.000000 04/12/16 03:00:00
5 1503960366 2016-04-12 04:00:00               0          0.000000 04/12/16 04:00:00
6 1503960366 2016-04-12 05:00:00               0          0.000000 04/12/16 05:00:00

Посчитаем уникальные ID в каждом датафрейме:

> n_distinct(weight_clean$id)
[1] 8
> n_distinct(sleep_clean$id)
[1] 24
> n_distinct(calories_steps_clean$id)
[1] 33
> n_distinct(intensity_hr_clean$id)
[1] 33

Выходит, что только 8 человек хотя бы раз сообщили информацию о весе, а о сне — 24.

Посмотрим временной отрезок, который охватывает этот датасет:

> n_distinct(weight_clean$date)
[1] 31
> n_distinct(sleep_clean$date)
[1] 31
> n_distinct(calories_steps_clean$date)
[1] 31
> n_distinct(intensity_hr_clean$date)
[1] 31

Все измерения укладываются в 31-дневный период с 12 апреля по 12 мая 2016 года.

Проверим наличие дубликатов:

> weight_clean %>% 
+   duplicated() %>% 
+   sum()
[1] 0
> 
> sleep_clean %>% 
+   duplicated() %>% 
+   sum()
[1] 3
> 
> calories_steps_clean %>% 
+   duplicated() %>% 
+   sum()
[1] 0
> 
> intensity_hr_clean %>% 
+   duplicated() %>% 
+   sum()
[1] 0

В информации о сне есть три повтора. Почистим и проверим еще раз:

> sleep_clean <- sleep_clean %>% distinct()
> sleep_clean %>% 
+   duplicated() %>% 
+   sum()
[1] 0

Нормально. Дубликатов больше нет.

Проверим наличие NA-значений. Обнаруживаем 65 пустых ячеек в столбце fat датафрейма с информацией о весе. Будем иметь в виду это обстоятельство.

> is.na(weight_clean) %>% 
+   summary()
     id             date         weight_kg       weight_pounds  
 Mode :logical   Mode :logical   Mode :logical   Mode :logical  
 FALSE:67        FALSE:67        FALSE:67        FALSE:67       
                                                                
    fat             bmi          is_manual_report   log_id       
 Mode :logical   Mode :logical   Mode :logical    Mode :logical  
 FALSE:2         FALSE:67        FALSE:67         FALSE:67       
 TRUE :65                                                        

Анализ данных о весе пользователей

Начнем с данных о весе пользователей. Достаточно любопытно, что только 8 человек из 33-х предоставили такую информацию. При этом на регулярной основе записывали свой вес только двое.

> weight_clean %>% 
+   count(id)
          id  n
1 1503960366  2
2 1927972279  1
3 2873212765  2
4 4319703577  2
5 4558609924  5
6 5577150313  1
7 6962181067 30
8 8877689391 24

Посмотрим, насколько регулярно пользователи предоставляли данные о весе. Построим визуализацию:

weight_clean %>% 
  ggplot(aes(x = date, y = weight_kg)) +
  geom_point()+
  facet_wrap(~id)
Результат выполнения команды выше. Каждая точка обозначает одну запись веса отдельным пользователем

Видно, что кто-то отмечает вес почти каждый день, другие взвешиваются раз в одну-две недели.

Еще проверим, сколько записей создано пользователями вручную, а сколько — автоматически.

> weight_clean %>% 
+   group_by(is_manual_report) %>% 
+   summarise(n = n())
# A tibble: 2 × 2
  is_manual_report     n
  <chr>            <int>
1 False               26
2 True                41

В разумные сроки я не нашел, как изящно посчитать в RStudio, какой из пользователей подавал данные в автоматизированном режиме, а какой — в ручную. Поэтому сделал сводную таблицу в Google Sheets:

ID пользователяАвтоВручную
15039603662
19279722791
28732127652
43197035772
45586099245
55771503131
696218106730
887768939124

Видно, что большая часть испытуемых автоматически фиксировала данные о своем весе (пятеро из восьми). Вероятно, они пользовались одной из моделей умных весов от FitBit.

Среди «ручников» нашелся только один дотошный пользователь. Но даже он не смог выйти на ежедневный график измерения. На графике выше в последней секции видно, что у пользователя был 10-дневный период регулярных измерений, но потом он сбился и стал пропускать дни.

Получается, что большинство пользователей ленится регулярно отмечать свой вес в приложении. При этом, вес тела и индекс массы — это объективные показатели и важные мотиваторы, которые могут побудить пользователей продлевать платную подписку Bellabeat Coach и заниматься по программам, которые эта подписка предлагает.

Можно рекомендовать отделу маркетинга рассмотреть возможность разработки и вывода на рынок умных весов под маркой Bellabeat. Такие весы будут автоматически отправлять данные о взвешивании в профиль пользователя в приложении.

В качестве бюджетной альтернативы можно добавить в приложение систему оповещений, которая будет напоминать пользователю о важности регулярного взвешивания и фиксации результатов для достижения поставленных перед собой целей.

Ежедневная активность и сон

Посмотрим сводку по тому, сколько шагов в течение дня проходят испытуемые:

> activity_clean %>%  
+   select(
+     total_steps,
+     total_distance,
+     sedentary_minutes,
+     calories) %>%
+   summary()

  total_steps    total_distance   sedentary_minutes    calories   
 Min.   :    0   Min.   : 0.000   Min.   :   0.0    Min.   :   0  
 1st Qu.: 3790   1st Qu.: 2.620   1st Qu.: 729.8    1st Qu.:1828  
 Median : 7406   Median : 5.245   Median :1057.5    Median :2134  
 Mean   : 7638   Mean   : 5.490   Mean   : 991.2    Mean   :2304  
 3rd Qu.:10727   3rd Qu.: 7.713   3rd Qu.:1229.5    3rd Qu.:2793  
 Max.   :36019   Max.   :28.030   Max.   :1440.0    Max.   :4900

Взглянем на ситуацию с физической активностью в целом:

> activity_clean %>%
+   select(
+     very_active_minutes,
+     fairly_active_minutes,
+     lightly_active_minutes) %>%
+   summary()

 very_active_minutes fairly_active_minutes lightly_active_minutes
 Min.   :  0.00      Min.   :  0.00        Min.   :  0.0         
 1st Qu.:  0.00      1st Qu.:  0.00        1st Qu.:127.0         
 Median :  4.00      Median :  6.00        Median :199.0         
 Mean   : 21.16      Mean   : 13.56        Mean   :192.8         
 3rd Qu.: 32.00      3rd Qu.: 19.00        3rd Qu.:264.0         
 Max.   :210.00      Max.   :143.00        Max.   :518.0         

Также интересно, как обстоит ситуация со сном:

> sleep_clean %>%
+   select(
+     total_sleep_records,
+     total_minutes_asleep,
+     total_time_in_bed) %>%
+   summary()

 total_sleep_records total_minutes_asleep total_time_in_bed
 Min.   :1.00        Min.   : 58.0        Min.   : 61.0    
 1st Qu.:1.00        1st Qu.:361.0        1st Qu.:403.8    
 Median :1.00        Median :432.5        Median :463.0    
 Mean   :1.12        Mean   :419.2        Mean   :458.5    
 3rd Qu.:1.00        3rd Qu.:490.0        3rd Qu.:526.0    
 Max.   :3.00        Max.   :796.0        Max.   :961.0

Выходит, что:

  • в среднем испытуемые проводят без движения более 16 часов в день (991 минуту). Определенно с этим надо работать в сторону уменьшения;
  • преимущественно испытуемые уделяют недостаточно времени какой-либо физической активности, кроме ходьбы;
  • в среднем испытуемые спят около 7 часов один раз в сутки;
  • испытуемые проходят в среднем 7 600 шагов в день. Значение чуть ниже рекомендаций медицинских организаций, которые советуют проходить от 8 000 до 12 000 шагов в день, что в свою очередь снижает риск развития сердечно-сосудистных заболеваний.
Распределение активности по часам в течение суток

Интересно посмотреть, как активность распределяется по часам в течение суток. Для этого я сначала разделю данные о дате и времени по отдельным колонкам в рамках датафрейма intencity_hr для удобства группировки перед построением графика:

intensity_hr_clean$activity_hour=as.POSIXct(intensity_hr_clean$activity_hour, format="%m/%d/%Y %I:%M:%S %p", tz=Sys.timezone())
intensity_hr_clean$time <- format(intensity_hr_clean$activity_hour, format = "%H:%M:%S")
intensity_hr_clean$date <- format(intensity_hr_clean$activity_hour, format = "%m/%d/%y")

int_grouped <- intensity_hr_clean %>%
  group_by(time) %>%
  summarise(mean_total_int = mean(total_intensity))

ggplot(data=int_grouped, aes(x=time, y=mean_total_int)) + geom_histogram(stat = "identity", fill='darkblue') +
  theme(axis.text.x = element_text(angle = 90)) +
  labs(title="Средняя активность по часам")
Распределение активности испытуемых по часам в течение суток

Из графика видно, что:

  • испытуемые преимущественно активны в период с 5 утра до 10 вечера;
  • пик активности приходится на вечерние часы с 17:00 до 19:00. Можно предположить, что пользователи после работы посещают спортзалы и фитнес-центры. Подобные находки можно использовать для формирования напоминаний в приложении BellaBeat, которые будут поддерживать необходимый уровень мотивации и поощрения.
Корреляция между активностью и сном

Меня заинтересовало, существует ли зависимость между активностью пользователей и продолжительностью их сна.

Для начала объединю данные о сне и активности в единый датафрейм и построю график:

act_and_sleep <- merge(sleep_clean, activity_clean, by=c('id', 'date'))

ggplot(data=act_and_sleep, aes(x=total_minutes_asleep, y=sedentary_minutes)) + 
  geom_point(color='blue') + geom_smooth() +
  labs(title="Время сна и минуты неактивности")
Отклонения от рекомендованной длительности сна коррелируют с объемом физической активности в течение дня

На лицо корреляция между временем сна и малоподвижным образом жизни: отклонения от нормы в продолжительности сна соотносятся с отклонениями в двигательной активности. В виду данной находки, можно предложить:

  • добавить в приложение BellaBeat функцию коррекции сна, которая будет напоминать пользователям больше двигаться в течение дня, если они хотят лучше высыпаться и нормализовать длительность сна;
  • иметь в виду, что в рамках ограничений данного датасета корреляция не обязательно означает прямую зависимость. Следует запланировать последующие более глубокие исследование по данной тематике.

Находки и рекомендации

Благодаря сбору данных об активности, сне, уровне стресса и репродуктивном здоровье Bellabeat помогает женщинам лучше понять, что влияет на их здоровье, и сформировать привычки, для ведения здорового образа жизни.

Проведя анализ датасета от FitBit, я обнаружил следующие аспекты, которые могут вдохновить отдел маркетинга компании Bellabeat.

Целевая аудитория

На основе анализа информации об активности по часам в течение суток, можно предположить, что одним из сегментов целевой аудитории Bellabeat могут быть женщины, которые работают полный рабочий день и ведут преимущественно сидячий образ жизни, например, работают за компьютером.

Данный сегмент целевой аудитории выполняет простые упражнения для поддержания здоровья, если судить по информации об их активности. Тем не менее, им не помешает повысить свою ежедневную активность для достижения поставленных целей относительно состояния здоровья и общего самочувствия. Вероятно, им пригодится дополнительная информация по развитию полезных для здоровья привычек и мотивации для их поддержания.

Хочу заметить, что точной информации о половой принадлежности пользователей, предоставивших данные для публичного датасета FitBit, нет. Я лишь предполагаю, что оба пола представлены более-менее равномерно.

Приложение Bellabeat Coach

Приложение Bellabeat — это не просто очередной довесок для фитнес-трекера. Скорее, это друг, советник и даже персональный тренер (если речь идет о версии с платной подпиской), который:

  • показывает, как укрепить здоровье;
  • мотивирует формировать полезные для здоровья привычки;
  • помогает найти баланс между работой, семьей и здоровым образом жизни.

Могу предложить следующие идеи для будущих версий приложения:

  1. Среднее количество шагов пользователей — 7638, что несколько меньше рекомендованного минимума в 8 000 шагов в день. Разные исследования говорят, что есть определенная польза здоровью, если вы проходите в день от 8 000 до 12 000 шагов. Приложение Bellabeat может стимулировать пользователя совершать рекомендованное количество шагов в день и предлагать ему программы выработки такой полезной привычки в рамках платной подписки;
  2. В случае, если пользователь нацелен на нормализацию сна, приложение Bellabeat может оповещать пользователя о необходимости отхода ко сну и в течение дня предлагать набрать рекомендуемое количество физической активности, чтобы улучшить общее качество сна;
  3. Основное временное окно активности пользователей приходится на интервал 17:00 — 19:00. Вероятнее всего, пользователи посещают в это время спортзал или выходят на пробежку. Приложение Bellabeat может детектировать аналогичные привычки конкретного пользователя и напоминать ему о пользе регулярного посещения спортзала на основе накопленной статистики.

Контроль веса и новый продукт

Большинство пользователей ленится отмечать свой вес в приложении вручную на регулярной основе. При этом, изменение или стабильность веса — это объективный мотиватор для занятий спортом и ведения здорового образа жизни. Именно в этом и помогают людям все продукты компании Bellabeat.

# только двое из 33-х пользователей заносили данные о весе 
# регулярно, а 25 вообще не предоставили таких данных
slices <- c(25, 6, 2)
lbls <- c("не отслеживают", "изредка", "регулярно")
pct <- round(slices/sum(slices)*100)
lbls <- paste(lbls, pct)
lbls <- paste(lbls, "%", sep = "")
pie(slices, labels = lbls, col = rainbow(length(lbls)), main = "Как часто пользователи отслеживают свой вес?")
Только восемь из 33-х пользователей указывают данные о весе, трое из них делают это вручную.

Стоит облегчить пользователям процесс фиксации данных о весе тела. Например, можно рассмотреть вариант выпуска на рынок модели умных весов под маркой Bellabeat.

Такое устройство может автоматически передавать данные о взвешивании в приложение Bellabeat Coach. Приложение же может регулярно напоминать пользователям о важности контроля веса в одно и то же время суток.

Дальнейшие работы по анализу

В виду очевидных ограничений датасета предлагаю в ближайшее время начать формирование собственных баз данных со статистикой о пользователях продуктов компании. Ключевые параметры для сбора:

  • возраст
  • пол

Раз внимание компании сфокусировано на преимущественно женской аудитории, будет полезно иметь для анализа данные именно о поведении женщин относительно использования смарт-устройств для поддержания здоровья и физической формы.

Особое внимание стоит уделить сбору данных для подтверждения или опровержения гипотезы о взаимосвязи низкой физической активности и качества сна.

Заключение

Практически на всех этапах курса встречались задания на рефлексию, поэтому и здесь я поразмышляю о том, как я справился с заданием, и над чем мне еще стоит поработать.

Курс предлагал два трека для выполнения выпускной работы:

  • анализ данных об аренде велосипедов в Нью-Йорке
  • и анализ данных о смарт-устройствах для здорового образа жизни.

Смарт-устройства мне ближе, чем велосипеды, поэтому я выбрал трек Bellabeat. Тот факт, что компания нацелена на женскую аудиторию, меня не смутил. Наоборот, мне стало интересно, в чем особенность носимой электроники, разработанной специально для женщин.

Выбор инструментов

Учитывая мой опыт в программировании, я решил использовать для большинства задач по анализу RStudio. Мне нравится, что в R Notebook хранится вся история работы с данными. В случае смены вектора анализа очень просто внести изменения где-то в середине или начале кода, а не переделывать все с начала.

Google Sheets я использовал только для первичного знакомства с данными и создания сводной таблицы на одном из этапов, потому что я не смог найти аналогичного решения в R за полчаса изучения Stackoverflow и решил не тратить зря время.

Сначала у меня были сомнения, что строить графики программным кодом может быть удобнее, чем с помощью визуальных инструментов в Google Sheets или Tableau, но оказалось, что в этом есть определенный шарм. Просто распределяй информацию равномерно и форматируй параметры ggplot так, чтобы потом было легко понять, какая часть за что отвечает.

Еще я заметил, что Stackoveflow часто показывал мне посты по теме моих вопросов, но с тегом python. Оказалось, что в рамках анализа данных R и Python часто пересекаются, и даже многие функции носят одинаковые имена.

Определенно, хочу изучить возможности Python. В дальнейшем я заинтересован узнать больше об анализе данных и двигаться в сторону Data Science, а там явно без знания специфических библиотек Python не обойтись.

Чужой опыт

В подготовке моей собственной работы мне очень помогли работы других пользователей, которые я нашел на на Kaggle. Там я обнаружил методы, с помощью которых проверил свои гипотезы и подкрепил их объективными результатами анализа.

При этом меня удивила большая масса работ, которые демонстрировали превосходные (с высоты моих скромных знаний и умений) технические навыки авторов, но при этом совершенно пустые по сути.

Многие авторы показывают на Kaggle знание различных библиотек и методик обработки данных, но их выводы не вели к решению бизнес-задачи — найти методы роста компании и вдохновить отдел маркетинга для разработки новых стратегий.

Часто можно встретить объемные статистические выкладки и выводы вроде:

  • люди много сидят, это плохо;
  • люди спят разное количество часов, а надо восемь.

Именно поэтому выполнение задания у меня заняло почти две недели. Я не хотел ограничиваться статистикой и общими словами, а хотел найти так называемый insight. Чтобы действительно предложить отделу маркетинга и руководству стоящую идею.

Мне кажется, что анализ данных о взвешивании пользователей и идея вывода на рынок умных весов — это именно то, за что не будет стыдно перед реальным заказчиком.

Пространство для роста

Работа над реальным проекта заметно отличается от следования за действиями инструктора во время просмотра видеолекции. Ничего удивительного здесь нет. Сначала становится не по себе. Сомневаешься, что вообще что-то получится. Но потом покопаешься на Stackoverflow и в работах других пользователей на Kaggle, и начинаются появляться идеи и варианты решения своей задачи.

Мне в целом понравилось работать с платформой RStudio, и я хочу продолжать изучать ее функции и возможности. Конечно, в RStudio есть и минусы. Особенно мешает работать переодически засыпающий проект и то, что надо ждать, пока он снова запустится. Но зато у тебя все в одном месте: код, данные, вывод функций и визуализации. И проектом легко поделиться по ссылке.

Определенно, буду изучать возможности Python для целей анализа данных. И точно не хочу работать преимущественно в MS Excel или Google Sheets. Понимаю, что это серьезное наследие, но будущее анализа за R, Python и аналогами.

Мне это стало кристально ясно, когда я попытался загрузить данные в Google Sheet. Выполнить импорт отдельных файлов удалось с третьего раза, а сама таблица лагала даже при открытии на просмотр, не говоря уже о каких-то манипуляциях с данными. В R же эти действия занимают миллисекунды, хотя это тоже облачная платформа.

Работа по анализу данных меня увлекла. Каждый раз узнаешь что-то новое. Здорово, когда после нескольких манипуляций с данными начинаешь видеть то, что изначально было незаметно.

Огромное спасибо команде Google, которая разработала этот курс. Очень признателен всем инструкторам, особенно Тиму, который утвердил меня в намерении стать аналитиком данных, обозначив один из наиболее важных аспектов работы аналитика: умение доносить свои находки до других людей простыми словами. Мне кажется, у меня это получилось в рамках данной работы.

Ссылки

Для удобства соберу ссылки на все упомянутые выше ресурсы в одном месте: