Материал предназначен не для тех, кто собирается стать программистом, а для тех, кто рассматривает программирование в качестве прикладного навыка, необходимого в социальных и гуманитарных исследованиях.
Сравним два наиболее популярных языка программирования, используемых в цифровых гуманитарных науках. Речь пойдет про Python и R.
Почему R и Python? ↑
Особенности R и Python для Digital Humanities:
- R и Python имеют простой синтаксис;
- существует множество готовых решений для визуализации;
- большинство коллег гуманитариев используют R или Python;
- доступно множество статей, книг, лекций и курсов по R и Python;
- развитое Python-комьюнити и активно развивающееся русскоязычное R-сообщество;
- существует множество библиотек и готовых решений для парсинга сайтов и социальных сетей;
- R создан учеными для ученых, если вы захотите использовать R для других задач, то можете столкнуться со сложностями;
- часть скриптов на R написаны учеными, а не программистами, поэтому возможны сложности с читабельностью кода.
R или Python? ↑
Редакция обратилась за комментариями к экспертам-аналитикам, начинающим цифровым гуманитариям и представителям бизнеса. Часть респондентов работает с обоими языками, часть только с одним.
Мнение аналитика
Я по образованию социолог, с первого курса мы изучали R для анализа данных и исследований в области computational social science. Это было большим удивлением, так как меньше всего ожидаешь встретить программирование на факультете социологии.
В итоге же R оказался полезным навыком. У него простой синтаксис, а начать изучать R можно даже самому. Он был создан под статистический анализ данных, с чем отлично справляется. Пакетов под R сделали тоже достаточно, что предоставляет возможности для социально-сетевого и текстового анализа в социальных и гуманитарных науках. А интеграция с Google Analytics, Яндекс.Метрикой и базами данных будут полезны маркетологам.
Мнение участника Python-комьюнити ↑
![R и Python для гуманитариев и непрограммистов 2 — JMS University mihail korneev — JMS University](https://jms.university/wp-content/uploads/2021/05/mihail-korneev.jpg)
Михаил Корнеев, сооснователь сообщества Moscow Python.
Мне кажется сравнивать Python и R напрямую не очень корректно. R — язык узкоспециализированный, Python — язык общего назначения. Это значит, что разобравшись с R вы будете иметь возможность работать с данными. Задачи, выходящие за рамки анализа данных и представления результатов, потребуют изучения и использования других языков. Изучение Python за счет богатых возможностей немного сложнее, но зато вы сможете решать любые возникшие задачи, не ограничивая себя.
Мнение аналитика и автора курса по R ↑
![R и Python для гуманитариев и непрограммистов 3 — JMS University aleksej seleznjov — JMS University](https://jms.university/wp-content/uploads/2021/05/aleksej-seleznjov.jpg)
Алексей Селезнёв, руководитель отдела аналитики в компании Netpeak, автор множества пакетов на R, автор онлайн-курса «Язык R для интернет – маркетинга» и методички по R.
Практически любую задачу в области сбора, трансформации, очистки и визуализации данных одинаково эффективно могут решить как R, так и Python.
Python я бы рекомендовал тем, кто помимо анализа, планирует заниматься веб-программированием. R более удобен для манипуляции с данными, имеет большие возможности по визуализации данных (пакет ggplot2).
Принято считать, что синтаксис Python проще, чем R, а порог вхождения в него ниже. Мне сложно об этом судить, но могу сказать, что на базовом R сейчас уже почти никто не пишет. Весь код реализуется на основе популярных пакетов, которые делают его синтаксис максимально компактным. Так, популярный пакет dplyr имеет SQL like синтаксис, и поддерживает конвейерный стиль написания кода, что позволяет избежать сохранения результата промежуточных шагов в отельные переменные.
Если подытожить всё вышесказанное, то мои рекомендации следующие:
- если речь идёт о задачах работы с данными, то выбирайте R;
- если о веб-программировании, то Python.
Ранее Алексей рассказывал об инструментах интернет-аналитиков и месте R в интернет-маркетинге.
Мнение продуктового аналитика ↑
![R и Python для гуманитариев и непрограммистов 4 — JMS University aleksej makarov — JMS University](https://jms.university/wp-content/uploads/2021/05/aleksej-makarov.jpg)
Алексей Макаров, продуктовый аналитик CoMagic, автор telegram-канала Datalytics.
Я бы рекомендовал начать изучение Python, не сильно погружаясь в основы языка и синтаксис, а с решения простых практических задач. Это позволит быстро получить положительное подтверждение тому, что вам действительно надо использовать Python. Так вы поймете, что можете существенно облегчить свою жизнь. Это станет сильной мотивацией для продолжения изучения.
Говоря про получение данных, важно упомянуть, что метод решения задачи зависит от источника данных. Например, если необходимо получить данные из социальных сетей, то в первую очередь стоит познакомиться с тем как работать с API этой социальной сети:
- поищите примеры кода в документации или любительских статьях;
- запустите этот код у себя;
- адаптируйте его под свои нужды.
Для некоторых сервисов вы можете найти готовые библиотеки. В этом случае вам уже не нужно самому пытаться использовать API, за вас это сделает библиотека. Библиотеки помогут вам, если вы занимаетесь анализом маркетинговых данных. Так, для Google Analytics есть отличная библиотека, позволяющая в несколько строчек кода вытащить статистику посещаемости сайта. Если вы хотите использовать данные, полученные с сайтов, то тогда вам нужно заняться веб-парсингом. Для этого есть отличный инструмент BeautifulSoup, который позволяет извлекать структурированную информацию из HTML-страничек.
В плане обработки данных всё немного проще. В среде аналитиков данных стандартом является библиотека Pandas. Он включает в себя огромный функционал для различных манипуляций с данными:
- статистическая обработка,
- очистка,
- трансформация,
- агрегация.
Pandas может стать достойной заменой Excel, если вы много работаете с обработкой массивов данных.
Python обладает большими возможностями и для визуализации данных. Можно начать с освоения библиотеки Bokeh или Chartify.
Особую популярность Python получил в сфере машинного обучения. В этой отрасли на нем написано большое число библиотек. Есть простой в освоении sklearn, для профессионалов есть высокопроизводительный TensorFlow.
Мнение директора мастерской по R ↑
![R и Python для гуманитариев и непрограммистов 5 — JMS University aleksandr fenin — JMS University](https://jms.university/wp-content/uploads/2021/05/aleksandr-fenin.jpg)
Александр Фенин, социальный психолог, директор мастерской «Анализ данных в социальных науках», Product Management в Яндекс.Учебник.
Александр Фенин, будучи директором мастерской «Анализа данных в социальных науках», дал развернутое интервью про «Язык R в гуманитарных и социальных исследованиях». Рекомендуем позже ознакомиться с полным текстом интервью, а пока приводим цитату из беседы с Александром:
Зачастую для научных работ психологи пользуются программой Excel, в лучшем случае такими статистическими продуктами, как SPSS или Statistica. Существуют целые гайды по тому, как тыкать в кнопочки внутри, чтобы сделать весь необходимый анализ, и даже не задумываясь, что именно происходит. R лучше в ряде существенных пунктов: во-первых, он позволяет сохранять и шерить скрипты подготовки и анализа (второе есть и в указанных продуктах, но этим мало кто пользуется); во-вторых, он позволяет на порядок более гибко и прозрачно готовить, анализировать и визуализировать данные; в-третьих, у него огромное и всегда готовое прийти на помощь комьюнити, регулярно снабжающее потенциальных исследователей новыми удобными библиотеками и идеями по обработке данных.
R почему-то очень распространился именно в социально-научной среде за рубежом и отчасти в России. Хотя это справедливо не для всех наук: лингвисты, например, в подавляющем большинстве своём предпочитают Python. Как минимум из-за более разработанного аппарата NLP.
Мнение IT-разработчика ↑
![R и Python для гуманитариев и непрограммистов 6 — JMS University andrej groza — JMS University](https://jms.university/wp-content/uploads/2021/05/andrej-groza.jpg)
Андрей Гроза, Backend разработчик digital-агентства Rutorika.
Для анализа данных я настойчиво рекомендую R.
На мой взгляд, у R гораздо ниже входной порог. Когда вы начнёте изучать R, станете думать о задаче, а не о коде, который её решает. В Python приходится писать больше кода и чаще думать о нём, а не о задаче.
R лаконичнее: в несколько строк кода вы можете подготовить данные, провести статистические тесты и визуализировать результат. Думаю, и визуализация данных в R выигрывает у Python.
На R удобнее оформлять отчёты. Когда я начинал работать с данными, сначала выбрал Python, но через несколько месяцев простота и красота отчётов на R подтолкнула меня к его изучению.
Не говорю, что Python хуже R. Просто R создавался для анализа данных, а Python — язык общего назначения, в котором анализ — только одна из областей его использования. В своей работе мы используем и R, и Python, но для разных задач. R — для разведочного анализа, проверки гипотез, построения отчётов и так далее. Python — для задач машинного обучения.
Мнение маркетолога ↑
![R и Python для гуманитариев и непрограммистов 7 — JMS University sergej shmakov — JMS University](https://jms.university/wp-content/uploads/2021/05/sergej-shmakov-1024x966.jpg)
Сергей Шмаков, SMM-специалист, автор бесплатного курса по Python для SMM.
Сергей ранее рассказывал про то, нужны ли интернет-маркетологу навыки аналитики и программирования:
Яро агитировать за Python не буду. Здесь важно, чтобы в окружении были те люди, которые помогут, а если их нет, то отталкиваться от будущих задач. Если это только статистика, то R, если захочется веб-приложение сделать, то Python/JS. Лучший способ проверить — попробовать.
Начинайте изучать уже сегодня Python/R или какой-то другой язык. Чем дольше тянете, тем сложнее вам будет в мире, где инструментов разных так много, разработчики стоят дорого, либо их нет совсем, а задачи решать нужно.
Мнение студентки магистратуры ↑
![R и Python для гуманитариев и непрограммистов 8 — JMS University ksenija semykina — JMS University](https://jms.university/wp-content/uploads/2021/05/ksenija-semykina.jpg)
Ксения Семыкина, студентка магистратуры ВШЭ, Москва и Свободного Университета, Берлин.
Я имела дело с обоими языками программирования, но с R существенно больше, поскольку на моей магистерской программе в ВШЭ (Comparative Social Research) задания практически по всем курсам, предполагающим работу с данными, выполняются именно в R.
Работала в основном с данными социологических опросов, в особенности датасетов для межстрановых исследований ценностей, таких, как World Values Survey. Если знать, какие пакеты нужны для выполнения той или иной задачи, R открывает большие возможности для анализа такого типа данных, от простых описательных статистик до многоуровневого регрессионного анализа и байесовских подходов.
Сравнивать R с Python я могу только поверхностно, учитывая не столь долгосрочный опыт с последним. Поделюсь тенденцией, которую подметила. Для обоих языков программирования есть онлайн курсы «Анализ данных в …», но «Программирование в…» я встречала только по отношению к Python. Вероятно, в этом часть правды, и R — это скорее не про красоту кода, а про то, как решить конкретную исследовательскую задачу. Python кажется более унифицированным в плане синтаксиса разных пакетов.
Что касается порога входа для непрограммистов, отмечу, что работа c использованием языков программирования скорее непривычна, чем сложна. Если есть понимание, какое преимущество даёт анализ в R или Python по сравнению с более юзер-френдли вариантами, то их изучение не должно стать большим препятствием.
Значительно облегчит жизнь наличие коллег, готовых прийти на помощь в случае проблем. Всегда есть Stack Overflow и просто Google, но новичку бывает нелегко сориентироваться в ответах на похожие запросы, а ответ на собственный запрос на форуме может поступить позже горящего дедлайна. В таких ситуациях наличие человека, готового оперативно объяснить непонятное именно тебе, приходится весьма кстати.
Мнение студентки-политолога ↑
![R и Python для гуманитариев и непрограммистов 9 — JMS University alisa kozljakova — JMS University](https://jms.university/wp-content/uploads/2021/05/alisa-kozljakova.jpg)
Алиса Козлякова, студентка 2 курса ОП Политология ФСН НИУ ВШЭ.
У нас на образовательной программе существует 2 трека — политический анализ и политическое управление. Я, соответственно, принадлежу ко второму. Мы изучаем довольно интенсивно теорию вероятности и статистику. Уже с первого курса некоторые прикладные задачи стараемся решать в R.
Факультет несколько лет назад начал тенденцию на отказ от использования SPSS и Stata для работы с данными. Это помогает отказаться от восприятия статистики как «чёрного ящика» и более осознанно проводить исследования.
Относительно R скажу, что порог входа не очень высокий, особенно благодаря возможности построчного выполнения кода. Но если параллельно не изучать алгоритмы и статистику, то будет больно и непонятно.
Обрабатывать сырую информацию, мне кажется, неподготовленному исследователю будет тяжело в любом случае, а вот работать уже с «причёсанными» датасетами в R исключительно удобно.
Мнение руководителя IT-бизнеса ↑
![R и Python для гуманитариев и непрограммистов 10 — JMS University anton orlov — JMS University](https://jms.university/wp-content/uploads/2021/05/anton-orlov.jpg)
Антон Орлов, генеральный директор AiSales.
Если выбор между R и Python стоит в рамках обучения, то выбирайте тот язык, которым владеет большинство из вашего окружения. Если же исходить из потребностей бизнеса и планов построения карьеры в области анализа данных, то выбирайте любой.
Так, мы принимаем на работу, основываясь не только на конкретном стеке технологий, но обращаем внимание на то, как кандидат решает проблемы бизнеса, как быстро он способен овладеть новыми навыками.
Первый подход к задаче может быть костыльным, но быстрое и разовое решение будет в некоторых случаях предпочтительнее, чем переоптимизированный и написанный «по науке» код. Любой язык программирования — инструмент, решающий проблему, а не сама цель. Не забывайте об этом.
Выводы ↑
Большинство респондентов сошлись на том, что R — узкоспециализированный язык, а Python можно использовать не только для анализа социальных и гуманитарных данных. Для решения задач цифровых гуманитарных наук в большинстве случаев подойдут оба языка. Поэтому рекомендуем выбрать тот язык, которым пользуется ваше окружение.