Галопом по Python: языковой минимум, необходимый начинающему дата-сайентисту
Для первых шагов в науку о данных достаточно самых основ «змеиного» языка. Разбираемся, каких именно.
vlada_maestro / shutterstock
Python (он же пайтон, питон, питончик) — основной язык программирования в Data Science, без него просто никуда. Он несложен в изучении, имеет ясный и читаемый код. Для языка создано огромное количество дополнений-библиотек, вокруг него сформировалось многочисленное сообщество, которое не даст пропасть новичку.
Итак, начинающему дата-сайентисту для старта достаточно знать:
- что такое переменные, строки, списки и как с ними работать;
- что такое срезы, цикл for и почему важны отступы.
Кажется, немного. Но этих знаний хватит, чтобы закодить несложную модель машинного обучения (например, Random Forest) для рекомендательной системы в туризме, предсказания курса доллара или прогноза цены недвижимости.
Питонить удобнее всего в Google Colaboratory. Это бесплатная веб-среда корпорации Google для вычислений и анализа данных. Чтобы получить к ней доступ, требуется лишь почта на Gmail — всё работает прямо в браузере, на компьютер ничего устанавливать не нужно.
Числа, строки, списки
Числа (целые и дробные), строки и списки — это самые фундаментальные типы данных в Python. Первые примеры кода практически во всех руководствах связаны именно с ними.
Для начала достаточно запомнить, что дробные числа, в отличие от целых, пишутся через точку: 23.0 — это дробное число для Python, а 23 — целое. Строки состоят из букв, символов и цифр и заключены в одинарные или двойные кавычки, а списки — это несколько элементов через запятую в квадратных скобках.
Код и текст в ячейках
Традиционно начнём с вывода строки Hello, Skillbox. В ячейке своего ноутбука Colab наберите:
Затем нажмите:
- либо треугольник «Запустить код» слева от ячейки;
- либо комбинацию клавиш Ctrl+Enter.
И в том, и в другом случае код в ячейке запустится на выполнение. В нашем случае код из ячейки ноутбука говорит: «Напечатай на экране строку Hello, Skillbox». Должно получиться что-то вроде:
В ноутбуках два основных вида ячеек: «код» и текст». Ту, что с кодом, мы только что запустили. Ячейки текстового типа нужны для пояснений, создания заголовков или оглавлений ноутбуков. В ячейках используется так называемая маркдаун-разметка: здесь подробная шпаргалка по ней.
Потренируйтесь: самостоятельно создайте и удалите ячейки с кодом и текстом. Попробуйте использовать кодовые ячейки как калькулятор — наберите выражение, например, 2 + 2, 3 * 5 (звёздочка означает умножение) или 5 / 20, и запустите ячейку на выполнение. И, наконец, переименуйте ноутбук из Untitled0.ipynb в The_Greatest_DS_Project_Ever.ipynb или что-нибудь поскромнее.
Переменные и их вывод
Переменные в Python — это именованные сущности, в которые мы, как в коробочку с надписью, кладём какие-то значения или данные. Значения переменным задаются с помощью оператора присваивания: =.
Этот код, запущенный в ячейке, сначала присвоит переменной а_chislo значение 20, затем выдаст его нам с помощью функции print ().
Старайтесь использовать осмысленные, говорящие названия переменных. Эта привычка сбережёт вам дни и недели, если не месяцы жизни — без преувеличения. Используйте маленькие латинские буквы, символ подчёркивания и цифры.
В переменные можно класть и строки:
Можно сочетать переменные прямо внутри скобок функции print через запятую:
Python понимает и одинарные, и двойные кавычки. Главное правило: не закрывать одинарные кавычки двойными, и наоборот. Двойные кавычки закрывают двойные, одинарные — одинарные. Машины, порядок, красота!
Более продвинутый способ вывода использует форматированные строки,
или f-strings:
В скобках прямо перед кавычками ставится f, и Python понимает, что строка будет форматированной. Внутрь основной строки с помощью фигурных скобок можно вставлять переменные и целые выражения из них.
Кстати, если переносите код в ячейку прямо из текста этой статьи копипастом (а кто из нас без греха), то Python может выдать ошибку. Причина — кавычки и другие специальные символы. Они могут быть немного другими, в зависимости от настроек шрифта в вашем браузере. Надёжнее всего перепечатать код вручную.
F-строки удобны тем, что не надо постоянно лезть внутрь скобок функции print (), чтобы изменить вывод: достаточно изменить переменную.
Изменим значение переменной b_string:
Списки и что с ними делать
Список — это структура данных в Python, состоящая из произвольных элементов, перечисленных через запятую. Элементы списка заключаются в квадратные скобки.
Например:
Обратите внимание, что последним элементом в списке freddy_list является другой список, а именно [3, 4, «Запирайте дверь в квартире»]. В списках могут содержаться и числа, и строки, и, как видим, другие списки.
Давайте создадим список income_list, содержащий в себе поступления и расходы:
Слова «выведет список» в примере — это строчный комментарий. Такие комментарии в Python используют для пояснения к командам. Они отделяются от исполняемого кода с помощью двух пробелов, знака решётки # и ещё одного пробела. Уместные комментарии — это хорошо.
В одной переменной income_list теперь содержится целый список из чисел.
Что с ним можно сделать:
Запускайте каждую команду в новой ячейке, иначе некоторые результаты не выведутся — это особенность работы в ноутбуках. Также можем подсчитать среднее значение — сумму элементов списка поделим на их количество:
Циклы, отступы и срезы в Python
Циклы позволяют организовать код более компактно, а отступы улучшают его структуру и повышают читаемость. Срезы предназначены для корректного выделения определённого диапазона значений: это одна из наиболее частых операций над данными.
Циклы
Чтобы сделать какую-то операцию нужное количество раз, в Python используют циклы: во-первых, это красиво, во-вторых, это правильно. Например, чтобы вывести фразу «Я изучаю Data Science» пять раз, можно написать такой код:
Без цикла (неправильно):
С циклом (правильно):
В первой строке правильного кода мы говорим: для всех i (эта переменная называется итератор — «перечислитель») в промежутке range от 0 до 5 сделай следующее — и ставим двоеточие. И Python, последовательно перебирая целые значения итератора i от 0 до 5, раз за разом выполняет команду после двоеточия. Это тело цикла, которое печатает нужную фразу.
Отступы
Обратите внимание на отступ перед командой print () в примере кода с циклом. Отступы очень важны: именно с их помощью Python понимает, что эта команда принадлежит циклу, а не стоит сама по себе. Если интерпретатор Python не увидит отступа там, где он должен, по его мнению, быть, то выдаст ошибку типа Indentation Error (ошибка отступа).
Colab, как и другие современные редакторы кода, сам поставит отступ, когда вы нажмёте Enter после двоеточия. Чтобы начать писать команду, уже не относящуюся к циклу, надо вернуться в начало строки с помощью клавиши Backspace.
Срезы
Запустим простой цикл:
В первой строке мы снова указываем итератору бежать от 0 до 5; сам ноль при этом не указываем, Python его поставит по умолчанию. Во второй строке печатаем значение самого итератора i. Что же мы видим:
Стоп-стоп, а где же 5? Там же в скобках ясно написано число!
Если коротко, то при указании начального и конечного значения какого-либо промежутка в Python подразумевается, что начальное значение в него входит, а конечное нет.
Проще всего это объяснить рисунком:
Сначала идёт срез (чёрные пунктирные линии на рисунке) с индексом, и только затем сам элемент (серый квадратик) с этим же индексом. Поскольку срез идёт впереди элемента, то элемент, отрезанный по индексу, не попадает в промежуток.
Тем более что элемент с индексом 5 по факту шестой — посчитайте. В программировании и data science отсчёт всегда начинается не с единицы, а с нуля.
Для списков и даже для строк действует аналогичное правило.
Такая конструкция (для строк, списков и некоторых других типов данных) в Python так и называется: срез (slice). Его внешнее отличие от range () в том, что границы среза пишутся через двоеточие и в квадратных скобках.
Что дальше
Конечно, это только начало: в следующих статьях покажем, как применить эти знания. Самые нетерпеливые могут посмотреть интенсивы по Python и Data Science на нашем YouTube-канале. Сделать чат-бота с ИИ, предсказать курс доллара, рекомендовать туристу город для поездки — всё возможно!
На курсах «Профессии Data Scientist» Python посвящены несколько модулей. Там вы ещё ближе познакомитесь с этим языком программирования и с его возможностями в области анализа данных.