Как стать автором
Обновить
59
0
Илья Шутов @i_shutov

Data Science

Отправить сообщение

Доводилось один раз видеть код аналитики, написанной на php, и разбираться в его логике работы. Хотелось бы развидеть.

  1. Computer Science: https://en.wikipedia.org/wiki/Computer_science. Кстати, многие западные курсы имеют аббревиатуры CS-XXX, оно отсюда проистекает.

  2. Почитайте по ссылкам про структуру pandas, про BlockManager, полистайте внутреннее представление сами. Про R объекты можете почитать в картинках здесь: https://www.brodieg.com/2019/02/18/an-unofficial-reference-for-internal-inspect/

  3. NSE отличная штука. Как только поймете иерархию окружений (по сути аналог стека вызовов) и про отложенное разыменование все встает на свои места. Во тнеплохие статьи:
    - https://milesmcbain.xyz/the-roots-of-quotation/
    - https://www.brodieg.com/2020/08/11/quosures/

  4. Хотите сами во всем разобраться -- спускайтесь в ассемблер. Как Даниэль делает, например, здесь: https://lemire.me/blog/2021/10/09/for-software-performance-can-you-always-trust-inlining/

Да вы просто гость из параллельной вселенной! Но здорово, что заглянули на кофеёк.

Мысль непонятна. Вы знали, что R и Python почти погодки?

Почитайте https://bookdown.org/yihui/rmarkdown/
Это Literate Progamming, как его Кнут задумывал.

под клеем все понимают единообразно.

"No matter how complex and polished the individual operations are, it is often the quality of the glue that most directly determines the power of the system." — Hal Abelson

обертки на С-шными либами и там и там есть.

мериться надо не количеством, а качеством. И не забываем, что питон для не DS задач -- это другой питон, другой стиль разработки и дополнительно другие либы.

Тот же Dash начали списывать с Shiny. Но до последнего ему еще очень далеко.
Можете книгу почитать https://mastering-shiny.org/.
Или демки поглядеть: https://appsilon.com/
Можно контесты взглянуть:
- [Winners of the 1st Shiny Contest](https://blog.rstudio.com/2019/04/05/first-shiny-contest-winners/), 2019-04-05 - [Winners of the 2nd Annual Shiny Contest](https://blog.rstudio.com/2020/07/13/winners-of-the-2nd-shiny-contest/), 2020-07-13 - [Winners of the 3rd annual Shiny Contest](https://blog.rstudio.com/2021/06/24/winners-of-the-3rd-annual-shiny-contest/), 2021-06-24

По R сейчас просто изумительная документация. Дайте вопрос, приведу ответ.
И книги прекрасные выпущены и переведены.
По квантилям -- вот пример. https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/quantile
Все написано, 9 вариантов различных вычислений (ну так уж накопилось в науке), есть ссылки на научные публикации.
А CRAN вообще закрутил гайки и ввел репрессии в части CI/CD по репозиторию пакетов.

Аналитика и промышленное программирование сильно отличаются.
Весь Tidyverse стек построен именно в контексте работы кода в проде.
Немного писал здесь: https://habr.com/ru/post/543552/
Приходите в группу в телеграме -- подскажем.

Тезисы субьективны.
Можно разные графики взять, R очень сильно развивается и сильно популярен в отдельных вертикалях. И на западе он очень широко применяется.
Линтеры и дополнения есть в RStudio, все работает и удобно. И автотесты есть. Есть весь DevOps стек.

Гвидо же почти остановил развитие питона. Периодически пользуюсь питоном с 2006-года.
Ну вот не смешно ли, что `switch case` завезли только в 3.10?
Про аналитику в блокнотах посмотрите последнюю ссылку в тексте https://www.youtube.com/watch?v=7jiPeIFXb6U

Все не так очевидно и прозрачно, как Вы написали.

Не совсем так. На чем обучают, то потом и пытаются применять. Наблюдается засилье курсов на питоне, в т.ч. вузовских программ.
В RStudio IDE в R Notebook (считайте, аналог юпитера) можно писать код, перемежая чанки в r, python, sql. Все давно уже есть.

По R есть отличный авторский учебник (это Филиппа Управителева): https://textbook.rintro.ru/index.html и курс.

  1. В DS формализм и математика являются фундаментом.

  2. Вектора проходят в средней школе.

Странно все это не использовать при решении аналитических задач.

Про ООП первый раз такую трактовку слышу. Наверное, потому что приходилось с этим ООП в промышленных разработках плотно взаимодействовать, С++ разрабы -- суровые люди.

R -- это "100500"-ый язык из списка используемых. Идеала все равно в этом мире нет. Но в контексте актуальных задач что-то приближается ближе, что-то находится дальше.

Давненько даже доводилось компилятор писать.

Все есть в языке, Вы просто матчасть не изучили до конца и Вам никто не рассказал.
https://rstats.wtf/debugging-r-code.html
https://rlang.r-lib.org/reference/trace_back.html

Но у Вас просто задачи другие -- и это в порядке вещей. Язык и экосистема совершенно ни при чем.

Вы путаете ошибки на этапе компиляции, когда компилятор точно знает что именно он сейчас парсит и какая лингвистическая ошибка возникла.
В обычной программе Вы просто получите голубой экран при сбое. И там без дебаг сборки будет вообще hex адрес в RAM.

Здесь же ошибка на этапе исполнения, когда подсунули кривые данные.
И ошибка четко указывает место и причину.

Так что Вы немного попутали фазы компиляции и исполнения.

Сстранно, с дебагом там все в порядке.
И stacktrace можно поглядеть.
Наверное, от Вас что-то скрыли.
Вот прям на Ваш вопрос: https://www.tidyverse.org/blog/2021/12/rlang-1-0-0-errors/
Люди знают потребности, люди постоянно работают над улучшением.

Почитайте все прошлые публикации.
R умеет делать это все куда круче питона.
Вы просто немного не в теме.

Зачем создавать виртуальные миры и заниматься абстрактной комбинаторикой? Смотрите на состояние "здесь и сейчас", работайте с фактами.
На случай беспокойства братья Гримм даже сказку написали: https://www.grimmstories.com/ru/grimm_skazki/umnaja_elza

  1. А Вы посмотрите на Series поближе. Навязанный скрытый индекс к массиву -- ужасный оверхед в счетных задачах. В R все честнее и проще. Есть массив, а есть список.
    Про Numpy есть прекрасная обобщающая статя в Nature: https://www.nature.com/articles/s41586-020-2649-2

  2. Про недостатки DS питона в проде писал немного здесь: https://habr.com/ru/post/550962/

  3. Примеры решения различных задач на R привожу в публикациях, можете поглядеть: https://habr.com/ru/users/i_shutov/posts/

  4. R является языком общего применения и почти погодок питону. Можете посмотреть в публикациях по ссылке выше, как можно решать массу различных не DS задач.

  5. Демонстрацию недостатков питона в части DS легко делать, открыв любую книгу по нему. Например, классику https://jakevdp.github.io/PythonDataScienceHandbook/.

И я не говорю уж о том, что в питоне нельзя просто побенчмарчить на уровне https://bench.r-lib.org/ фрагмент расчетного кода (не функции и не скрпипта) для выбора оптимального варианта решения.

%timeit вообще не игрок и вот почему:

  1. требует юпитер ноутбука, нельзя в консоли запустить

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

  3. среднее — не лучший показатель, нужно распределения смотреть. квартили или медиану и мин/макс.

  4. нет информации по потреблению памяти, а это важно.

  5. Среднее по n минимальным (5 из 1000) — это вообще треш метрика. На этот показатель полагаться вообще нельзя. Статистики рыдают.

Андрей, а Вы неплохой оппонент! Стаж 15+?

Асм это когда в регистр кладёш из регистра достаёшь и туда-сюда прыгаешь. Нет там циклов, это уже логическая структура поверх языка.

Именно, там только условные и безусловные ветвления, я неточно выразился.
http://unixwiz.net/techtips/x86-jumps.html

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

У меня проблема с Series ровно одна -- он безумно заморочный. Я привык к malloc и понятному и честному представлению массивов в памяти. Series -- это объект со своим барахлом. Вы, наверное, с ndarray спутали. Series для расчетов -- медленно, неудобно, заморочно.

Например Pandas это Питон снаружи и С++ внутри.

Да ничего подобного, см https://github.com/pandas-dev/pandas. numpy -- с++. но его и писали астрономы а не недотыкомки аналитики. Почитайте про архитектуру и BlockManager, ужаснетесь. Wes McKinney уже с того момента вырос над собой и принес публичное покаяние https://wesmckinney.com/blog/apache-arrow-pandas-internals/ в виде проекта Apache Arrow.

Как это на R будет выглядеть?

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

У меня складывается ощущение, что вы сталкивались не с лучшим кодом на Питоне.

Уж как пишут -- то и приходится смотреть. Может в других частях галактики и пишут по-другому. В части DS читаемость кода на R в разы выше. Я регулярно привожу примеры. И почти всегда пример на R круче питонского.
Питон же в DS имеет огромное количество архитектурных изъянов.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность