Около двух лет назад я проходил собеседование в нескольких мексиканских стартапах, чтобы найти новую работу в качестве специалиста по данным. Очевидно, что во время сотого собеседования большинство вопросов были повторяющимися, и я уже начинал автоматически отвечать на каждый из них (Можете ли вы рассказать мне о своем опыте работы? Что было для вас самой большой проблемой на работе? Почему вы ищете нового работа?). Однако в моем уже сотом интервью был вопрос, который застал меня вне базы, как вы бы сказали на бейсбольном сленге. Вопрос был следующий: Как настроен ваш компьютер ?. Я тогда не понял вопроса. Я ответил, что он работает на ноутбуке с операционной системой Windows, и у меня есть основы для анализа, такие как Data Scientist: excel, spyder, jupyter-lab, anaconda и google chrome.

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

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

Когда я начал свой путь в качестве специалиста по данным, моей целью было разработать модели машинного обучения в экспериментальной среде, и мой рабочий процесс был следующим: 1) Начать проект, запустив записную книжку Jupyter в среде Python, созданной с помощью Anaconda. 2) Начните писать мой код для выполнения соответствующего моделирования и анализа данных. 3) Запустите код, чтобы извлечь соответствующие сведения о данных и моделях обучения. 4) Наконец, предоставьте прогнозы, полученные с помощью модели, заинтересованным сторонам в CSV.

Однако выполнение этого потока с помощью этих инструментов (Anaconda, Jupyter Lab и csv) скрывало некоторые серьезные ограничения, которые делали мое кодирование и разработку продуктов данных кошмаром. Ниже я описываю препятствия, с которыми я столкнулся с этими базовыми инструментами, с которыми я начинал как специалист по анализу данных, и какими инструментами я их заменил, чтобы улучшить разработку моих проектов в области науки о данных.

Блокнот Юпитера для Pycharm

Как начинающему специалисту по анализу данных мне было легко понять и научиться пользоваться Jupiter Notebook. Работая по принципу "ячейка за ячейкой", я мог легко понять, что делает код, и увидеть результаты, полученные с помощью этого кода. Кроме того, это было очень полезно, когда дело доходило до демонстрации моей работы заинтересованным сторонам. Однако по мере того, как я продолжал использовать Jupyter Notebook на зрелых этапах своих проектов, он продолжал расти и развиваться благодаря множеству функций, классов и графики. В итоге получился огромный монолитный код.

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

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

Таблицы в базу данных

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

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

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

my_analysis, my_analysis_copy (1) .ipynb, my_analysis_copy (2) .ipynb,… в Git

Один из советов, к которому я не прислушался, когда начал писать код для своих проектов Data Science, заключался в том, чтобы не учиться использовать Git. По мере развития проектов командная работа становилась неэффективной и неуклюжей. Члены моей команды и я начали обмениваться кодом и фрагментами блокнотов по электронной почте или в Slack. Кроме того, возврат к более старой версии кода был кошмаром, а организация файлов была сложной. А затем, после двух-трех недель использования записной книжки jupyter без надлежащего контроля версий, моя папка содержала несколько копий того же jupyter:

my_analysis, my_analysis_copy (1) .ipynb, my_analysis_copy (2) .ipynb…

По моему личному опыту, использование Git + Gitlab помогло мне улучшить свои навыки программирования и лучше организовать свои проекты. Начав использовать его во время сотрудничества с моими коллегами в области технологий, он заставил меня придерживаться стандартов, которым я не подчинялся в прошлом. Кроме того, преимущества использования системы контроля версий могут быть расширены за пределы разработки программного обеспечения до науки о данных: а) отслеживание изменений, б) откат к любой предыдущей версии кода, в) эффективное сотрудничество между членами команды посредством запросов на слияние, г) Повышение качества кода. E) Проверка кода.

Анаконда для virtualenv

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

Однако, когда я начал переносить свои информационные продукты в производственную среду, я понял, что он не так универсален, как Python Source. На этом этапе мне нужно было иметь подробный контроль над тем, какие пакеты я установил для каждой созданной среды, мне не нужно было иметь несвязанные библиотеки, взаимодействующие друг с другом в моей среде, и мне нужно было создать выделенные среды для определенных целей, а не только наука о данных. Поэтому я начал использовать Virtualenv, который, как и Anaconda, также использует концепцию создания сред для изоляции различных библиотек и версий. Кроме того, этот инструмент позволил мне установить через терминал только то, что мне нужно, и ничего больше.

Щелкните в оконных формах для Bash

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

От Windows до MacOS

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

Но я должен признать, что работа с пакетами Python в Windows - это полная катастрофа, исходя из моего опыта, поскольку мне приходилось иметь дело с проблемами совместимости и скорости. Когда мне приходилось решать эту проблему, я всегда искал решение, чтобы заставить систему, хотя это было утомительно, потому что мне приходилось тратить много времени как на поиск решения, так и на его реализацию.

Однако в прошлом году, когда я начал свою новую работу в стартапе, используя Linux-подобный терминал на macOS, все стало намного проще. Основным преимуществом использования macOS перед Windows для анализа данных является его терминал Unix. Кроме того, поскольку удобство использования без друзей всегда было приоритетом для Apple, Mac прост в использовании и работе.

Как повысить продуктивность работы в области науки о данных: PyCharm + DataBase + GIT + Virtualenv + MacOS + Bach