Темп — ключевой элемент повышения продуктивности Data Scientist.

Почему вы должны стать быстрее в программировании как Data Scientist?

Анализ данных технически является задачей поиска. Чем быстрее вы работаете, тем больше данных вы можете исследовать, поэтому шансы найти что-то ценное возрастают. Мы также можем сказать то же самое о разработке модели машинного обучения. Технически мы просматриваем почти бесконечное пространство модели, чтобы найти наилучшую комбинацию шагов предварительной обработки, предикторов, гиперпараметров и т. д.
У обеих этих задач есть одна общая черта — программирование!

Как тогда увеличить скорость кодирования?

Мы можем разбить задачу кодирования на 4 части;

  1. Ввод
  2. Редактирование текста
  3. Исследования
  4. Разработка логики кода. Оставим это напоследок, так как мне нечего предложить, чтобы ускориться в этом пункте, за исключением сотни часов изучения алгоритмов и структур данных.

Ввод

Ну, это не обязательно связано с кодом, но если вы печатаете пару часов каждый день, вам лучше начать учиться слепой печати, если вы еще этого не сделали. Особенно, если ваша скорость набора текста ниже 50 слов в минуту — это действительно низкий показатель для человека, который тратит много времени на набор текста каждый день — я бы рекомендовал начать тренироваться по 30 минут каждый день — оказывается, постоянство является ключевым здесь, как и во всем, что требует мышечной памяти. Вначале это становится немного болезненно, но, вероятно, вам потребуется около 10–15 дней, чтобы вы достигли своей текущей скорости.

Я использовал www.typingclub.com пару лет назад и был вполне доволен его интерфейсом и функциональностью. Это не полностью бесплатно, хотя есть множество бесплатных веб-сайтов, которые вы можете найти.

Редактирование текста

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

Инструменты завершения кода

Начните использовать Kite или Jedi или другие инструменты для завершения кода (по какой-то причине Kite в данный момент не позволяет загружать новые файлы). Если вы этого не делали, вам, вероятно, захочется перейти с автомобиля с механической коробкой передач на автомобиль с автоматической коробкой передач. По моему опыту, Kite работает довольно хорошо. Он также имеет опцию «следить за курсором», которая автоматически отображает документацию для функции, над которой вы работаете.

Вим и ИдеяВим

IdeaVim — это подключаемый модуль для IDE, и я нашел большое преимущество, интегрировав IdeaVim в свой рабочий процесс. По моему опыту, я думаю, что мой кодинг стал как минимум на 10% быстрее, хотя я бы считал себя пользователем vim среднего / среднего уровня.

Проблема с vim — крутая кривая обучения. Требуется некоторое время, чтобы привыкнуть, но определенно мне хочется говорить с клавиатурой, а не печатать. Следовательно, это, безусловно, делает процесс разработки намного более увлекательным!

Я прикрепляю свою шпаргалку по vim ниже. Это не исчерпывающий список, хотя он содержит наиболее распространенные команды. Для тех, кто вообще не знаком с Vim, я бы рекомендовал подойти к нему как к языку и сначала понять такие понятия, как Операторы — Движения — Текстовые объекты и то, как вы их комбинируете для взаимодействия с вашим редактором.

Моя шпаргалка по Vim

Режимы
Esc — Запустить командный режим
i — Запустить режим вставки
v — Запустить визуальный режим

Операторы
y — Копировать (Сохранить)
x — Вырезать
d — Удалить
D — Удалить, исключая символ новой строки
c — Изменить ( Удалить и запустить режим вставки)
p — Вставить
~ — Поменять местами нижний и верхний регистр
> — Отступ
gu — Преобразовать в нижний регистр
gU — Преобразовать в верхний регистр< br /> Пользовательские операторы — Окружение
ys — Добавить окружение
cs — Изменить окружение
ds — Удалить окружение
S — Добавить окружение в визуальном режиме< br /> Пользовательские операторы — Комментарий
gc — Комментарий
gcc — Комментарий строки
gcgc — Раскомментировать
Пользовательские операторы — ReplaceWithRegister
gr — Перейти заменить
Пользовательские операторы — Обмен
cx — При первом использовании определить первое {движение} для обмена. При втором использовании определите второе {движение} и выполните обмен.
cxx — Выбирает текущую строку в качестве одного из элементов обмена
X — cx для визуального режима
cxc — Очистить любой движение ожидает обмена

Движения

e — Перейти к концу текущего слова, ВКЛЮЧАЯ последний символ.
w — Перейти к началу следующего слова, ВКЛЮЧАЯ его первый символ.
W — Перейти к началу следующего слова, слова разделены белым только пробел, знаки препинания считаются частью слова (WORD).
b — Перейти к началу текущего слова
^ — Перейти к первому непустому символу текущей строки
0 — Перейти к началу текущей строки
$ — Перейти к концу текущей строки, ВКЛЮЧАЯ последний символ.
f — Перейти к символу
F — Перейти к символу в конце
t — перейти на один перед символом T — перейти на один перед символом сзади
H — перейти на верхнюю строку
M — перейти на среднюю строку
L — перейти на нижнюю строку
% — перейти к совпадению следующей круглой скобки/скобки
zt —Прокрутить страницу так, чтобы курсор остался вверху страницы
zz — Прокрутить страницу так, чтобы курсор остался в середине страницы
zb — Прокрутить страницу так, чтобы курсор остался внизу страницы
<ctrl-o> — перейти к предыдущему местоположению курсора
<ctrl-i> — перейти к следующему местоположению курсора после нажатия ctrl + o
<ctrl-B> — Перейти на всю страницу вверх
<ctrl-F> — Перейти на всю страницу вниз
<ctrl-U> — Перейти на полстраницы вверх
<ctrl-D> — Перейти на полстраницы вниз

Текстовые объекты

aw — слово
iw — внутреннее слово
aW — СЛОВО
iW — внутреннее слово
ap — Абзац
ip — Внутренний абзац
ab — Скобка
iv — Внутренняя скобка
at — Тег
it — Внутренний тег
Пользовательские текстовые объекты — Argtextobj
aa — Аргумент функции
ia — Внутренний аргумент функции
Пользовательские текстовые объекты —Отступ
ai — Отступ (включая строку выше)
ii — Внутренний отступ
aI — отступ (включая строку выше и ниже)

Вот простой пример того, как говорить на языке vim из презентации Лирен Чанг

PS: Пожалуйста, сопоставьте клавишу Caps Lock с ESC. Вы не пожалеете. — Рекомендовал бы Microsoft PowerToys для пользователей Windows, чтобы отобразить его на уровне ОС.

Исследования

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

Основные операции/функции Python, которые необходимо освоить

  • Понимание списка
  • Понимание словаря
  • Фильтрация фреймов данных
  • Группировка, агрегация, настраиваемые агрегации и любые типы сводных вычислений.
  • Объекты Date, Time, DateTime и часового пояса и как ими манипулировать
  • Преобразование типов данных столбцов фрейма данных
  • Преобразование между различными типами данных, например, из 2 отдельных списков в список кортежей и т. д. Пример: [1,2,3], ["a", "b", "c"] → [(1, "a"), (2, «б»), (3, «в»)]
  • Плавление и поворот фрейма данных
  • Операции типа функционального программирования — функции map, apply, applymap
  • Написание цикла перекрестной проверки
  • Пара быстрых советов.
     – Сохраняйте отдельные списки категориальных, числовых имен столбцов и/или концептуально похожих имен столбцов, чтобы вам не приходилось каждый раз выбирать столбцы и пытаться фильтровать похожие.
    - Назовите свои столбцы без пробела и получите к ним доступ с помощью «.» нотацию всякий раз, когда это возможно, так как она намного удобнее по сравнению с нотацией df[”column”] .

Записывайте более сложные операции
Создайте очень простой пример задач, которые вы искали при переполнении стека и т. д. и заняли у вас более 10 минут. Храните их в одном месте — Notion, OneNote и т. д. Почти наверняка вам понадобятся эти фрагменты кода в будущем, а запись их с ванильным примером облегчит запоминание в следующий раз, а если вы не можете вспомнить, это будет намного проще идти в свои заметки и выяснять, а не выходить в Интернет. Например; ниже приведен пример кода из моих заметок для запуска функции как многопоточной операции.

Быстрый доступ к документации и сигнатурам функций
В IDE обычно есть ярлык для вызова документации или сигнатур функций — в PyCharm есть <ctrl-q> и <ctrl-p> , в jupyter Notebooks — <ctrl-shift> — я бы рекомендовал ознакомиться с ними. ярлыки и сначала попробуйте их, если вы не можете вспомнить имя аргумента и т. д., вместо того, чтобы напрямую искать в Google.

Разработка логики кода

Как я упоминал выше, на самом деле нечего предложить для этого, кроме изучения алгоритмов и структур данных, а также чтения и понимания кода, написанного другими людьми в GitHub, Kaggle и т. д. Это может помочь вам найти лучшие способы кодирования. дизайн.

Заключение

На мой взгляд, улучшение этих 4 элементов (печать — редактирование кода — исследование — дизайн кода) определенно сделает вас более способным и продуктивным специалистом по данным. Я начал вкладывать свое время в эти элементы около 2 лет назад и думаю, что это стоит потраченного времени и усилий. Если у вас есть что-то еще, чтобы добавить этот список выше, хотелось бы услышать и попробовать.