R и Python для гуманитариев и непрограммистов

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

Сравним два наиболее популярных языка программирования, используемых в цифровых гуманитарных науках. Речь пойдет про Python и R.

Почему R и Python?

Особенности R и Python для Digital Humanities:

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

R или Python?

Цифровой Дискурс обратился за комментариями к экспертам-аналитикам, начинающим цифровым гуманитариям и представителям бизнеса. Часть респондентов работает с обоими языками, часть только с одним.

Мнение аналитика

Анастасия Кузнецова, свободный аналитик

Анастасия Кузнецова, свободный аналитик, автор блога «настенька и графики» (ВКонтакте, Telegram).

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

В итоге же R оказался полезным навыком. У него простой синтаксис, а начать изучать R можно даже самому. Он был создан под статистический анализ данных, с чем отлично справляется. Пакетов под R сделали тоже достаточно, что предоставляет возможности для социально-сетевого и текстового анализа в социальных и гуманитарных науках. А интеграция с Google Analytics, Яндекс.Метрикой и базами данных будут полезны маркетологам.

Мнение участника Python-комьюнити

Михаил Корнеев, сооснователь сообщества Moscow Python

Михаил Корнеев, сооснователь сообщества Moscow Python.

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

Мнение аналитика и автора курса по R

Алексей Селезнёв, руководитель отдела аналитики в компании Netpeak

Алексей Селезнёв, руководитель отдела аналитики в компании Netpeak, автор множества пакетов на R, автор онлайн-курса «Язык R для интернет – маркетинга» и методички по R.

Практически любую задачу в области сбора, трансформации, очистки и визуализации данных одинаково эффективно могут решить как R, так и Python.

Python я бы рекомендовал тем, кто помимо анализа, планирует заниматься веб-программированием. R более удобен для манипуляции с данными, имеет большие возможности по визуализации данных (пакет ggplot2).

Принято считать, что синтаксис Python проще, чем R, а порог вхождения в него ниже. Мне сложно об этом судить, но могу сказать, что на базовом R сейчас уже почти никто не пишет. Весь код реализуется на основе популярных пакетов, которые делают его синтаксис максимально компактным. Так, популярный пакет dplyr имеет SQL like синтаксис, и поддерживает конвейерный стиль написания кода, что позволяет избежать сохранения результата промежуточных шагов в отельные переменные.

Читайте также:  Курс лекций на тему «Как исследовать компьютерные игры?»

Если подытожить всё вышесказанное, то мои рекомендации следующие:

  • если речь идёт о задачах работы с данными, то выбирайте R;
  • если о веб-программировании, то Python.

Ранее Алексей рассказывал об инструментах интернет-аналитиков и месте R в интернет-маркетинге.

Мнение продуктового аналитика

Алексей Макаров, продуктовый аналитик CoMagic, автор telegram-канала Datalytics

Алексей Макаров, продуктовый аналитик CoMagic, автор telegram-канала Datalytics.

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

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

  1. поищите примеры кода в документации или любительских статьях;
  2. запустите этот код у себя;
  3. адаптируйте его под свои нужды.

Для некоторых сервисов вы можете найти готовые библиотеки. В этом случае вам уже не нужно самому пытаться использовать API, за вас это сделает библиотека. К примеру, у Facebook есть открытая библиотека для Python. Библиотеки помогут вам, если вы занимаетесь анализом маркетинговых данных. Так, для Google Analytics есть отличная библиотека, позволяющая в несколько строчек кода вытащить статистику посещаемости сайта. Если вы хотите использовать данные, полученные с сайтов, то тогда вам нужно заняться веб-парсингом. Для этого есть отличный инструмент BeautifulSoup, который позволяет извлекать структурированную информацию из HTML-страничек.

В плане обработки данных всё немного проще. В среде аналитиков данных стандартом является библиотека Pandas. Он включает в себя огромный функционал для различных манипуляций с данными:

  • статистическая обработка,
  • очистка,
  • трансформация,
  • агрегация.

Pandas может стать достойной заменой Excel, если вы много работаете с обработкой массивов данных.

Python обладает большими возможностями и для визуализации данных. Можно начать с освоения библиотеки Bokeh или Chartify.

Особую популярность Python получил в сфере машинного обучения. В этой отрасли на нем написано большое число библиотек. Есть простой в освоении sklearn, для профессионалов есть высокопроизводительный TensorFlow.

Мнение директора мастерской по R

Александр Фенин, социальный психолог

Александр Фенин, социальный психолог, директор мастерской «Анализ данных в социальных науках», Product Management в Яндекс.Учебник.

Александр Фенин, будучи директором мастерской «Анализа данных в социальных науках», дал развернутое интервью про «Язык R в гуманитарных и социальных исследованиях». Рекомендуем позже ознакомиться с полным текстом интервью, а пока приводим цитату из беседы с Александром:

Зачастую для научных работ психологи пользуются программой Excel, в лучшем случае такими статистическими продуктами, как SPSS или Statistica. Существуют целые гайды по тому, как тыкать в кнопочки внутри, чтобы сделать весь необходимый анализ, и даже не задумываясь, что именно происходит. R лучше в ряде существенных пунктов: во-первых, он позволяет сохранять и шерить скрипты подготовки и анализа (второе есть и в указанных продуктах, но этим мало кто пользуется); во-вторых, он позволяет на порядок более гибко и прозрачно готовить, анализировать и визуализировать данные; в-третьих, у него огромное и всегда готовое прийти на помощь комьюнити, регулярно снабжающее потенциальных исследователей новыми удобными библиотеками и идеями по обработке данных.

R почему-то очень распространился именно в социально-научной среде за рубежом и отчасти в России. Хотя это справедливо не для всех наук: лингвисты, например, в подавляющем большинстве своём предпочитают Python. Как минимум из-за более разработанного аппарата NLP.

Мнение IT-разработчика

Андрей Гроза, Backend разработчик digital-агентства Rutorika

Андрей Гроза, Backend разработчик digital-агентства Rutorika.

Читайте также:  Язык R в гуманитарных и социальных исследованиях

Для анализа данных я настойчиво рекомендую R.

На мой взгляд, у R гораздо ниже входной порог. Когда вы начнёте изучать R, станете думать о задаче, а не о коде, который её решает. В Python приходится писать больше кода и чаще думать о нём, а не о задаче.

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

На R удобнее оформлять отчёты. Когда я начинал работать с данными, сначала выбрал Python, но через несколько месяцев простота и красота отчётов на R подтолкнула меня к его изучению.

Не говорю, что Python хуже R. Просто R создавался для анализа данных, а Python — язык общего назначения, в котором анализ — только одна из областей его использования. В своей работе мы используем и R, и Python, но для разных задач. R — для разведочного анализа, проверки гипотез, построения отчётов и так далее. Python — для задач машинного обучения.

Мнение маркетолога

Сергей Шмаков, SMM-специалист, автор бесплатных курсов по Python для SMM

Сергей Шмаков, SMM-специалист, автор бесплатного курса по Python для SMM.

Сергей ранее рассказывал Цифровому Дискурсу про то, нужны ли интернет-маркетологу навыки аналитики и программирования. Приводим цитату из интервью с ним:

Яро агитировать за Python не буду. Здесь важно, чтобы в окружении были те люди, которые помогут, а если их нет, то отталкиваться от будущих задач. Если это только статистика, то R, если захочется веб-приложение сделать, то Python/JS. Лучший способ проверить — попробовать.

Начинайте изучать уже сегодня Python/R или какой-то другой язык. Чем дольше тянете, тем сложнее вам будет в мире, где инструментов разных так много, разработчики стоят дорого, либо их нет совсем, а задачи решать нужно.

Мнение студентки магистратуры

Ксения Семыкина, студентка магистратуры ВШЭ, Москва и Свободного Университета, Берлин

Ксения Семыкина, студентка магистратуры ВШЭ, Москва и Свободного Университета, Берлин.

Я имела дело с обоими языками программирования, но с R существенно больше, поскольку на моей магистерской программе в ВШЭ (Comparative Social Research) задания практически по всем курсам, предполагающим работу с данными, выполняются именно в R.

Работала в основном с данными социологических опросов, в особенности датасетов для межстрановых исследований ценностей, таких, как World Values Survey. Если знать, какие пакеты нужны для выполнения той или иной задачи, R открывает большие возможности для анализа такого типа данных, от простых описательных статистик до многоуровневого регрессионного анализа и байесовских подходов.

Сравнивать R с Python я могу только поверхностно, учитывая не столь долгосрочный опыт с последним. Поделюсь тенденцией, которую подметила. Для обоих языков программирования есть онлайн курсы «Анализ данных в …», но «Программирование в…» я встречала только по отношению к Python. Вероятно, в этом часть правды, и R — это скорее не про красоту кода, а про то, как решить конкретную исследовательскую задачу. Python кажется более унифицированным в плане синтаксиса разных пакетов.

Читайте также:  О ловушках продуктового дизайна

Что касается порога входа для непрограммистов, отмечу, что работа c использованием языков программирования скорее непривычна, чем сложна. Если есть понимание, какое преимущество даёт анализ в R или Python по сравнению с более юзер-френдли вариантами, то их изучение не должно стать большим препятствием.

Значительно облегчит жизнь наличие коллег, готовых прийти на помощь в случае проблем. Всегда есть Stack Overflow и просто Google, но новичку бывает нелегко сориентироваться в ответах на похожие запросы, а ответ на собственный запрос на форуме может поступить позже горящего дедлайна. В таких ситуациях наличие человека, готового оперативно объяснить непонятное именно тебе, приходится весьма кстати.

Мнение студентки-политолога

Алиса Козлякова, студентка 2 курса ОП Политология ФСН НИУ ВШЭ

Алиса Козлякова, студентка 2 курса ОП Политология ФСН НИУ ВШЭ.

У нас на образовательной программе существует 2 трека — политический анализ и политическое управление. Я, соответственно, принадлежу ко второму. Мы изучаем довольно интенсивно теорию вероятности и статистику. Уже с первого курса некоторые прикладные задачи стараемся решать в R.

Факультет несколько лет назад начал тенденцию на отказ от использования SPSS и Stata для работы с данными. Это помогает отказаться от восприятия статистики как «чёрного ящика» и более осознанно проводить исследования.

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

Обрабатывать сырую информацию, мне кажется, неподготовленному исследователю будет тяжело в любом случае, а вот работать уже с «причёсанными» датасетами в R исключительно удобно.

Мнение руководителя IT-бизнеса

Антон Орлов, генеральный директор AiSales

Антон Орлов, генеральный директор AiSales.

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

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

Первый подход к задаче может быть костыльным, но быстрое и разовое решение будет в некоторых случаях предпочтительнее, чем переоптимизированный и написанный «по науке» код. Любой язык программирования — инструмент, решающий проблему, а не сама цель. Не забывайте об этом.

Выводы

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

Дополнительно

Если вы всерьез и надолго решили заняться digital humanities, то рекомендуем обратить внимание на тематические подборки:

  1. telegram-каналов про цифровую гуманитаристику и цифру: https://discourse.digital/blogs/podborka-telegram-kanalov-dlja-internet-issledovatelej/
  2. платформ и онлайн-курсов для интернет-исследователей: https://discourse.digital/blogs/platformy-i-onlajn-kursy-dlja-internet-issledovatelej/
  3. магистерских программ по Digital Humanities: https://discourse.digital/blogs/podborka-magisterskih-programm-po-digital-humanities/

А если вы испытываете потребность в DH-комьюнити, то приглашаем в Digital Humanities Chat.

Редакция портала
Редакция портала
Пишем новости, обзоры и берём интервью.
Цифровой Дискурс