Pull to refresh

Comments 9

Помню, как то еще в университете была тема про то, что иногда (а может и часто) замена одного высокоуровневого кода на другой почти ничего не меняет внутри исполняемой программы... вы просто одно прячете внутрь другого. Это тонкие вещи, но они есть.

Например: в коде вызывается какая то функция, написанная вами, а в другой версии аналогичная функция стала конструкцией самого языка (или его библиотеки) и вот вопрос: а повысится ли эффективность кода от того, что теперь вы исключите вызов своей и станете вызывать уже готовую или по сути при исполнении это ни на что не повлияет?

ну и так далее... вопрос весьма философский зачастую

Все что упрощает код - хорошо.

замена даже трехстрочной функции на вызов одного метода из стандартной библиотеки языка / сторонней библиотеки - это упрощение кода, а значит это хорошо. (Это конечно, при условии что сторонняя библиотека более-менее известна.)

Это упрощает чтение и содержание кода, а так же снижает когнитивную нагрузку на читателя кода.

Замена одного высокоуровнего участка на другой - это чаще всего обертки, которые заменяют собой часто встречающиеся фрагменты / операции, что тоже отлично

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

1) Если заменить точки и пробелы в заголовках полей df - можно в 5+ раз сократить число набираемых символов при обращении к каждому полю df['col'] -> df.col

Также не придется нигде использовать f-строки

2) пустоты лучше всего визуализировать чем-то готовым, типа:

import missingno as msno
msno.matrix(df)

3) вместо .apply(lambda x: 0 if pd.isna(x) else 1) итп - в десятки раз быстрее будет np.where(col.isna(), 1, 0) Но в контексте анализа - названия спринтов могут пригодиться. Есть категоризация данных: df.col.astype('category') Получаем возможность работать с числовыми кодами и строками категорий, уменьшаем данные в RAM в 5-20 раз, ускоряем отбор в 4-8 раз, появляется возможность упорядочить спринты в опр. (вашем) порядке.

4) df.filter() умеет работать и со строками, и со столбцами, а значит все списковые включения вида df[[x for x in df.columns if '_count' in x]] можно заменить на df.filter(like='_count')

Фраза "У аналитика есть минимальный опыт погружения в программирование" как-то резанула. И на неё обидится большинство аналитиков ибо в большинстве случаев всё ровно наоборот))). Предлагаю заменить её на  "У Саши есть минимальный опыт погружения в программирование"

Я один из тех аналитиков,которые не знают Python, от слова "совсем". Зашёл в аналитику со стороны VBA,Power Query,Power BI, MDX, DAX, SQL.

Вышеперечисленного стека хватает на все задачи с лихвой,но я хочу немного уйти в сторону прогнозирования и расширить свои знания и начал немного учить R в прошлом году, но не хватило самодисциплины,хотя кое-чему научился)))),сейчас пытаюсь подступиться к Python,пока читаю книгу Byte of Python.

Твоего перечисленного стэка хватит с лихвой лишь на ETL и BI. То что ты забросил R и хорошо и плохо одновременно: в R есть всё необходимое для анализа данных , и каждый из этих тулзов гораздо производительнее и не менее функционален чем в python (а зачастую - более). Но если смотреть на рынок труда то питон у работодателей востребованней в анализе данных : заслуга чисто за счёт всей оставшейся инфраструктуры (бэкэнд, web, etc) на нём же.

R - очень классный язык, но вот у меня так получилось,что на моей текущей позиции задач для него немного,верней не то,чтобы немного,просто стек который я знаю реализует эти задачи и так. И тут конечно использовал R только в тех случаях,когда моего стека не хватало,а это прогнозирование парой десятков моделей и выбор наилучшей из них, кластеризация,интеграция в Power BI.

Ту причину,что вы озвучили,относится и ко мне. Я думаю, что однажды вернусь к R, Python пока идет легче.)))

Ошибки начинающего аналитика при обработке данных на Python: учить пандас на табличках 3*33 вместо производительного и современного polars/pyarrow и потом на реальных бизнес задачах плакать натягивая свой пандас_код на даск

Pandas не стоит на месте и скоро перейдет на Apache Arrow - хранилище. Так что слезы к тому моменту (доступ к реальным бизнес-задачам) - у начинающих сто раз высохнут.

Sign up to leave a comment.

Articles