Пример Еще одного инструмента: подсчет строк при помощи *nIX-утилиты wc

Если вы знакомы со стандартными командами ОС *nix (то есть Unix и Linux), то можете пропустить эту часть. Всем остальным эта информация может оказаться полезной.

Предположим, вы получили данные в формате CSV-файла объемом 10 МВ и вам нужно знать общее количество записей. Как их подсчитать? Открыть файл в Excel, пролистать до конца или воспользоваться комбинацией клавиш CTRL+↓ и посмотреть номер последней строки? Да, можно и так. А что, если файл будет объемом 100 МВ? Конечно, Excel справится и с ним, но на выполнение этой задачи может уйти до десяти минут. Ладно, а как насчет файла объемом 1 GB? Здесь такой подход уже не сработает.

Ок, немного изменим условия задачи: теперь вы имеете дело с тремя CSV-файлами объемом 10 МВ. Открыть каждый из них по отдельности в Excel? Допустим. А если у вас 300 таких файлов? Да, здесь явно нужен другой подход.

А что, если я скажу, что на решение этой задачи потребуется всего несколько секунд? Пакет стандартных команд ОС *nix представляет собой набор небольших специализированных утилит, обеспечивающих выполнение одной конкретной функции. wc представляет собой Unix-утилиту, выводящую количество слов (word count), а также строк и символов.

В: Но у меня нет доступа к *nix! У меня ОС Windows.

О: Ничего страшного, просто установите бесплатно cygwin[63]. Это позволит вам пользоваться командами Unix в ОС Windows.

В: Но у меня нет доступа к *nix! У меня OS X.

О: Mac OS X принадлежит семейству операционных систем Unix. Так что ваша цепочка действий следующая: идете в приложения Applications, открываете утилиты Utilities и кликаете на Terminal. Та-дам! Можете пользоваться командами Unix.

Формат команды элементарный: wc — l filename

wc — утилита для вывода количества слов, — l (символ) обозначает, что требуется вывести количество строк, а не слов, filename — название файла. Например:

$ wc — l weblog_20150302.log

1704190 weblog_20150302.log

($ — это подсказка или напоминание; у вас она может быть другой).

Этот пример показывает, что в файле weblog 1,7 млн строк. Для подсчета строк в каждом файле директории укажите название папки вместо имени файла:

wc — l mydatafiles/

123 file1.csv

456 file2.csv

579 total

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

Надеюсь, вы уловили главное: простые утилиты, научиться пользоваться которыми можно за несколько минут, способны значительно усилить набор аналитических навыков и повысить продуктивность работы.

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

Будьте уверены, слабые места есть у всех. Последуйте моей рекомендации.

Если вам нужен дополнительный стимул, задумайтесь о следующем. В опросе на тему размера оплаты труда специалистов по работе с данными O’Reilly’s 2013 Data Science Salary Survey приняли участие посетители двух крупных конференций Strata в 2012 и 2013 годах, при этом выяснилось следующее: размер оплаты труда положительно коррелировал с количеством инструментов, которыми пользовались респонденты.

В среднем респонденты использовали в работе 10 инструментов и их медианный доход составлял 100 тыс. долл. У тех, кто использовал 15 и более инструментов, показатель медианного дохода был 130 тыс. долл.

Еще более очевидно это отражено в опросе 2014 года[64] (рис. 4.4).



Рис. 4.4. Корреляция между применением разного числа инструментов и оплатой труда специалистов по работе с данными

Источник: опрос 2014 O’Reilly Data Science Salary Survey, рис. 1.13


В 2013 году авторы опроса сделали заключение:

Есть веские основания утверждать, что владение такими инструментами, как R, Python, инструментарием Hadoop, D3, а также масштабируемыми инструментами машинного обучения, свидетельствует о более высокой квалификации аналитика, позволяя ему претендовать на более высокооплачиваемую позицию, чем когда аналитик владеет такими инструментами, как SQL, Excel и платформы RDB [реляционных баз данных]. Мы также пришли к выводу, что чем большим числом инструментов способен пользоваться аналитик, тем лучше: если вы задумываетесь о том, чтобы научиться применять инструмент из набора Hadoop, лучше изучите сразу несколько.

Наконец, опрос 2014 года показал разницу в оплате труда почти в 15 тыс. долл. между аналитиками, умеющими работать с программным кодом, и не умеющими. Так что если это ваше слабое место, окажите себе услугу, научитесь программировать!