Как стать автором
Обновить

Python в Excel жив?

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров9.4K

Уже больше месяца экспериментирую, исследую, как разные схемы (паттерны) осознанного дыхания влияют на вариабельность сердечного ритма (Heart Rate Variability, HRV на чуждом языке). В скромной, но не совсем уж крошечной Excel-таблице со столбцами “Паттерн”, “HRV”, “Пульс” набралось 258 записей и мне понадобилось выбрать победителя -- дыхательный паттерн, дающий на выходе максимальное значение HRV. Не вручную же сортировать эти записи!

Да, я знаю: есть Pivot Table & Power Query. Но Pivot Table мне не по душе необходимостью после каждого изменения таблицы-источника делать REFRESH, во-первых, избыточной сложностью создания, во-вторых. И просто так не нравятся Pivot Table, что главное. Что же касается Power Query, то сочетание слов вызывает у меня трепет и учащенное сердцебиение: не понимаю, что это за зверь такой и насколько он страшный или полезный. 

Поэтому для подсчета результатов -- и выбора победителя -- применил относительно недавно появившуюся в Excel функцию GROUPBY в связке с XLOOKUP. И, раз уж пришлось группировать данные, решил сравнить нативные функции Excel с GROUPBY от Pandas (мы ведь помним, что сейчас Python можно запустить внутри Excel).  

Python в Excel? Почему бы и нет.
Python в Excel? Почему бы и нет.

Написал простой код: 

df = xl("Table5[#All]", headers=True) 

df = df.dropna(subset=['HRV']) 

#select patterns which are recorded >= 6 times 
patterns = df.breathing_pattern.to_list() 
patterns = list(set([i for i in patterns if patterns.count(i) >= 6])) 
df = df[df.breathing_pattern.isin(patterns)] 

patterns_efficacy = df.groupby("breathing_pattern").mean( 
['HRV','HR'] 
).astype(int).reset_index() 

patterns_efficacy = patterns_efficacy.sort_values(by=['HRV'], ascending=False) 

patterns_efficacy 

Поместил код через =PY( в ячейку А1 Excel

И он прекрасно справился с задачей и выдал таблицу с результатами: 

 

breathing_pattern 

HRV 

HR 

physiological sighs moderate 

59 

65 

physiological sighs light 

57 

62 

4.4-6.6 

56 

59 

following pulse 

55 

61 

4.2-0-6.4-0 

53 

62 

6-6 

53 

61 

calming breathing: inhale through nose, slow exhale through mouth 

53 

61 

5-5 

52 

63 

count: 4 inhale nose, 6 exhale mouth 

52 

63 

Комбинация функций GROUPBY и XLOOKUP тоже отработала без изъянов:

Для группировки по HRV в ячейку E1 
  =GROUPBY(Table5[[#All],[breathing_pattern]],Table5[[#All],[HRV]], AVERAGE,3,0,-2) 

Для группировки по пульсу в ячейку E13 
  =GROUPBY(Table5[[#All],[breathing_pattern]],Table5[[#All],[HR]], AVERAGE,3,0,-2) 

И для объединения в одну общую таблицу в ячейку G2 
  =XLOOKUP(E2:E10,E14:E22,F14:F22,"not found") 

breathing_pattern 

HRV 

HR 

physiological sighs moderate 

59 

65 

physiological sighs light 

57 

63 

4.4-6.6 

56 

60 

following pulse 

55 

61 

4.2-0-6.4-0 

54 

63 

6-6 

54 

61 

calming breathing: inhale through nose, slow exhale through mouth 

53 

62 

5-5 

53 

63 

count: 4 inhale nose, 6 exhale mouth 

52 

63 

* Для внимательных: разница в данных между двумя таблицами -- плод Python-овского округления до целых чисел.  

* В “нативном” подходе нет отсечки паттернов с количеством замеров менее шести.

Выводы и наблюдения по теме: 

  1. В Python итоговая таблица сама автоматически изменяет размеры при добавлении новых паттернов. GROUPBY by Excel ведет себя так же, а вот связка GROUPBY&XLOOKUP уже потребует редактирования формул: нужно изменять адреса диапазонов ячеек, к которым обращается XLOOKUP. 

  1. Вопреки большему размеру Python-код мне кажется проще и для написания, и для чтения-понимания. Хотя писать код в ячейке Excel -- весьма извращенное удовольствие. 

  1. Исполнение кода Python требует интернет-соединения. 

 

Выводы и наблюдения не совсем по теме:  

  1. Для меня лично схема дыхания “physiological sighs light” (легкие физиогические вздохи) -- оптимальный выбор.  

  1. Более шести месяцев я придумывал, зачем мне может понадобиться живущий в Excel Python и наконец нашел. 

Буду благодарен за советы и критику. Постараюсь ответить на вопросы.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы используете Python в Excel?
45.45% Нет, не знал (а) о нем25
25.45% Нет, глупая игрушка14
27.27% Не использую Excel15
1.82% Да, использую1
Проголосовали 55 пользователей. Воздержались 11 пользователей.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 3: ↑2 и ↓1+1
Комментарии23

Публикации

Истории

Работа

Python разработчик
104 вакансии
Data Scientist
69 вакансий

Ближайшие события

28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань