#1 Python для Data Science – Руководство для начинающих

Если вы изучаете Data Science (науку о данных), то довольно быстро встретитесь с Python. Почему? Потому что это один из самых используемых языков программирования для работы с данными. Он популярен по 3 основным причинам:

  • Его легко изучать, с ним легко работать
  • Python прекрасно работает с разными структурами данных
  • Существуют мощные библиотеки языка для визуализации данных и статистики

В этом руководстве речь пойдет обо всем, что нужно знать, начиная с основ. Даже если вы никогда не работали с кодом, то точно оказались в нужном месте. Затрагиваться будет только та часть языка, которая имеет отношение к data science — ненужные и непрактичные нюансы пропустим. А в конце обязательно создадим что-то интересное, например, прогнозную аналитику.

Это практическое руководство!

Делать что-то, следуя инструкциям, всегда полезнее, чем просто читать. Если те части, в которых есть код, вы будете повторять самостоятельно, набирая его на своем ПК, то разберетесь и запомните все в 10 раз лучше. А в конце статьи обязательно будет одно-два упражнения для проверки!

Это значит, что для практики нужна некоторая подготовка. Установите:

  • Python 3.6+
  • Jupyter (с iPython)
  • Библиотеки: pandas, numpy, scikit, matplotlib

Зачем учить Python для Data Science?

Когда настает время изучать код для работы с данными, стоит сосредоточиться на этих 4 языках:

  • SQL
  • Python
  • R
  • Bash

Конечно, хорошо бы изучить все четыре. Но если вы только начинаете, то стоит начать с одного или двух. Чаще всего рекомендуют выбирать Python и SQL. С их помощью удастся охватить 99% процесса работы с данными и аналитических проблем.

Но почему стоит изучать Python для Data Science?

  • Это легко и весело.
  • Есть много библиотек для простых аналитических проектов (например, сегментация, групповой анализ, исследовательская аналитика и так далее) и более сложных (например, построение моделей машинного обучения).
  • Рынок труда требует профессионалов в сфере работы с данными, у которых хорошие знания Python. Это значит, что Python в резюме будет чрезвычайно конкурентоспособным пунктом.

Что такое Python? Он подходит только для Data Science?

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

  1. Python — язык общего назначения и он используется не только для Data Science. Это значит, что его не нужно знать идеально, чтобы быть экспертом в сфере работы с данными. В то же время даже основ будет достаточно, чтобы понимать и другие языки, а это очень удобно для работы в IT.
  2. Python — высокоуровневый язык. Это значит, что в отношении процессорного времени он не самый эффективный. С другой же стороны, он был создан очень простым, «удобным для использования» и понятным. Так, пусть вы и проиграете в процессорном времени, но сможете отыграться в процессе разработки.

Python 2 vs Python 3 – какой выбрать для Data Science?

Многие слышали о противостоянии Python 2.x и Python 3.x. Суть его в том, что Python 3 существует с 2008 года, и 95% функций и библиотек для data science уже перекочевали из Python 2. Также Python 2 перестанет поддерживаться после 2020 года. Учить его — то же самое, что учить латынь — иногда полезно, но будущее все равно за Python 3.

По этой причине все эти руководства написаны на Python 3.

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

Достаточно теории! Пора программировать!

Как открыть Jupyter Notebook

Когда Jupyter Notebook установлен, следуйте этим 4 шагам каждый раз, когда нужно будет его запустить:

Есть вы работаете локально, достаточно запустить программу Jupyter Notebook и перейти к пункту 4.

  1. Войти на сервер! Для этого нужно открыть терминал и ввести следующее в командную строку: ssh [ваш_логин]@[ваш ip-адрес]
    и пароль.
    (Например: ssh dataguy@178.62.1.214)

Заходим на сервер

  1. Запустить Jupyter Notebeook на сервере с помощью команды: jupyter notebook --browser any

Запуск Jupyter Notebeook на сервере

  1. Получить доступ к Jupyter из браузера! Для этого нужно открыть Google Chrome (или любой другой) и ввести следующее в адресную строку: [IP адрес удаленного сервера]:8888

(Например: 178.62.1.214:8888)

На экране отобразится следующее:

Стартовая страница Jupyter в браузере

Нужно будет ввести “password” (пароль) или “token” (токен). Поскольку пароля пока нет, сначала нужно использовать токен, который можно найти в окне терминала:

token для Jupyter

  1. Готово! Теперь нужно создать новый Jupyter Notebook! (Если он создан, осталось его открыть).

Создание нового Jupyter Notebook

Важно! Во время работы в браузере окно терминал сдолжен работать в фоне. Если его закрыть, Jupyter в браузере тоже закроется.

Вот и все. Запомните порядок действий, потому что их придется повторять часто в этом руководстве по Python для Data Science.

Как использовать Jupyter Notebeook

Теперь разберем, как пользоваться Jupyter Notebook!

как пользоваться Jupyter Notebook

  1. Введите команду Python! Это может быть команда на несколько строк — если нажать Enter, ничего не запустится, а в этой же ячейке появится новая строка!

Hello World в Jupyter Notebook

  1. Для запуска команды Python нужно нажать SHIFT + ENTER!

вывод в Jupyter Notebook

  1. Введите что-то и нажмите TAB. Если это возможно, Jupyter автоматически закончит выражение (для команд Python и указанных переменных). Если вариантов несколько, появится выпадающее меню.

Автозаполнение в Jupyter Notebook


Основы Python

Прекрасно! Вы знаете все, что может понадобиться с технической стороны. Дальше речь пойдет об основных концепциях, которые нужно изучить, прежде чем переходить к использованию Python в Data Science. Вот эти 6 концепций:

  1. Переменные и типы данных
  2. Структуры данных в Python
  3. Функции и методы
  4. Инструкция (оператор) if
  5. Циклы
  6. Основы синтаксиса Python

Чтобы упростить процесс изучения и практики, эти 6 тем разбиты на 6 статей. Вот первая.

Основы Python №1: переменные и типы данных

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

Посмотрим, как это работает!

Предположим, что есть собака (“Freddie”), и нужно сохранить ее черты (name, age, is_vaccinated, birth_year и так далее) в переменных Python. В ячейке Jupyter Notebook нужно ввести следующее:

dog_name = 'Freddie'
age = 9
is_vaccinated = True
height = 1.1
birth_year = 2001

Примечание: это же можно сделать по одной переменной для каждой ячейки. Но такое решение все-в-одном проще и изящнее.

С этого момент если вводить названия переменных, то те будут возвращать соответствующие значения:

обращение к переменным в Jupyter Notebook

Как и в SQL в Python есть несколько типов данных.

Например, переменная dog_name хранит строку: 'Freddie'. В Python 3 строка — это последовательность символов в кодировке Unicode (например, цифры, буквы, знаки препинания и так далее), поэтому она может содержать цифры, знаки восклицания и почти все что угодно (например, ‘R2-D2’ — допустимая строка). В Python легко определить строку — она записывается в кавычках.

age и birth_year хранят целые числа (9 и 2001) — это числовой тип данных Python. Другой тип данных — числа с плавающей точкой (float). В примере это height со значением 1.1.

Значение True переменной is_vaccinated — это логический тип (или булевый тип). В этом типе есть только два значения: True и False.

Резюме в таблице:

Имя переменнойЗначениеТип данных
dog_name'Freddie'str (сокр. от ‘string’ — строка)
age9int (сокр. от ‘integer’ — целое число)
is_vaccinatedTruebool (сокр. от Boolean — булев тип)
height1.1float (сокр. от floating — с плавающей запятой)
birth_year2001int (сокр. от integer)

Есть и другие типы данных, но для начала этих четырех будет достаточно.

Важно знать, что любую переменную Python можно перезаписать. Например, если запустить:

_dog_name = 'Eddie'

в Jupyter Notebook, тогда имя пса больше не будет ‘Freddie’…

переопределение переменных в Jupyter Notebook


Переменные Python — основные операторы

Вы знаете, что такое переменные. Пора поэкспериментировать с ними! Определим две переменные: a и b:

a = 3
b = 4

Что можно сделать с a и b? В первую очередь, есть набор арифметических операций! Ничего необычного, но вот список:

ОператорЧто делает?Результат
a + bСкладывает a и b7
a - bВычитает b из a-1
a * bУмножает a на b12
a / bДелит a на b0.75
b % aДелит b на a и возвращает остаток1
a ** bВозводит a в степень b81

Вот как это выглядит в Jupyter:

арифметические операции в Jupyter Notebook

Примечание: попробуйте самостоятельно со своими переменными в Jupyter Notebook.

Можно использовать переменные с операторами сравнения. Результатом всегда будут логические True или False. a и b все еще 3 и 4.

ОператорЧто делает?Результат
a > bОценивает, больше ли a чем bFalse
a < bОценивает, меньше ли a чем bTrue
a == bОценивает, равны ли a и bFalse

В Jupyter Notebook:

булевые операции в Jupyter Notebook

В итоге, переменные сами могут быть логическими операторами. Определим c и d:

c = True
d = False
ОператорЧто делает?Результат
c and dTrue, если c и dTrueFalse
c or dTrue, если c или dTrueTrue
not cПротивоположное cFalse

булевые операции в Jupyter Notebook

Это легко и, возможно, не так интересно, но все-таки: попробуйте ввести все это в Jupyter Notebook, запустите команды и начните соединять элементы — будет интереснее.

Время переходить к заданиям.

Проверьте себя №1

Вот несколько переменных:

a = 1
b = 2
c = 3
d = True
e = 'cool'

Какой тип данных вернется, и каким будет результат всей операции?

a == e or d and c > b

Примечание: сперва попробуйте ответить на этот вопрос без Python — а затем проверьте, правильно ли вы определили!

.

.

.

Ответ: это будет логический тип данных со значением True.

Почему? Потому что:

  • Значение a == e равно False, поскольку 1 не равняется ‘cool’
  • Значение d равно True по определению
  • Значение c > b равно True, потому что 3 больше 2

Таким образом, a == e or d and c > b превращается в False or True and True, что в итоге приводит к True.

Проверьте себя №2

Используйте переменные из прошлого задания:

a = 1
b = 2
c = 3
d = True
e = 'cool'

Но в этот раз попробуйте определить результат слегка измененного выражения:


not a == e or d and not c > b

Чтобы правильно решить эту задачку, нужно знать порядок исполнения логических операторов:

  1. not
  2. and
  3. or

.

.

.

Ответ: True.

Почему? Разберем.

Пользуясь логикой прошлого задания, можно прийти к выводу, что выражение равняется: not False or True and not True.

Первым исполняется оператор not. После того как все not оценены, остается: True or True and False.

Второй шаг — определить оператор and. Переводим и получаем True or (True and False), что приводит к True or False.

И финальный шаг — or:

True or FalseTrue

Выводы

Осознали ли вы, что программировали на Python 3? Не правда ли, что было легко и весело?

Хорошие новости в том, что в остальном Python настолько же прост. Сложность появляется от объединения простых вещей… Именно поэтому так важно знать основы!

В следующей части «Python для Data Science» вы узнаете о самых важных структурах данных в Python.