Python
Материал из MachineLearning.
Python — высокоуровневый, объектно-ориентированный, интерпретируемый язык программирования, основными целями которого являются повышенная читаемость кода и способность написания намного меньших по объему программ по сравнению с такими языками как Java или C++. Правила оформления кода интегрированы в язык и закреплены его стилевыми правилами.
Содержание |
Версии языка
Основными поддерживаемыми версиями Python являются вторая и третья, которые, вообще говоря, не являются обратно совместимыми. Вторая версия на момент написания статьи распространена в индустрии больше из-за количества написанного на нем кода, однако его поддержка будет закончена раньше, и все основные модули совместимы с Python 3.
Установка Python
Python является интерпретируемым языком программирования, что означает, что для работы кода на Python нужен интерпретатор. Основной реализацией Python является CPython. В академической и исследовательской распространен IPython, который расширен более продвинутым автодополнением и другими вспомогательными конструкциями. В частности, довольно распространен Jupyter, в котором можно писать код (не только на Python 2 или 3, но и на Matlab, R и других) и вставлять документацию на Markdown с поддержкой LaTeX.
Linux и OS X
Интерпретатор Python встроен в OS X и почти во все Linux дистрибутивы. С большой вероятностью, команда python вызовят интерпретатор Python по умолчанию, python3 — интерпретатор для третьей версии.
Для установки дополнительных пакетов необходимо воспользоваться пакетным менеджером Python — pip. Единственный верный способ установки менеджера на любой \*nix системе указан здесь
Все дополнительные библиотеки, jupyter и ipython могут быть установлены с помощью команды (приведен пример для установки pandas).
pip install pandas
Обратите внимание, что, если вы используете Linux, рекомендуется использовать pip без прав администратора, так как вы рискуете своей ошибкой нарушить работоспособность системы. Для безопасной работы с pip существует virtualenv.
Альтернативой pip является anaconda.
Windows
Для корректной работы всех библиотек анализа данных практически единственным реалистичным методом является anaconda.
Anaconda
Anaconda — это дистрибутив Python и R вместе с основными библиотеками для анализа данных и пакетным менеджером conda
. С помощью последнего удобно устанавливать и удалять пакеты. После установки дистрибутива с официального сайта (в этом разделе рассматриваем случай Windows) в приложениях появляется "Anaconda Prompt". Именно в этом приложении коммандной строки и придется работать. Для выведения помощи по коммандам:
conda help
Обновление всех установленных пакетов
conda update --all
Выведение списка установленных пакетов
conda list
Из комманд терминала Windows пригодится cd foldername
— изменить директорию, dir
— вывести содержимое текущей директории. Расширенную справку можно почитать, например, тут.
Краткое введение в Python
Будем использовать для знакомства третью версию языка Python.
Программа "Hello, World"
# this is comment print("Hello, World!")
В арифметических операции Python помимо стандартных есть возведение в степень. Длинная арифметика, а также необходимые преобразования типов происходят "под капотом"
bags = 20 apples = 40 variants = apples ** bags print(variants) # 109951162777600000000000000000000
Целочисленное деление, остаток от деления
a = 23 / 4 # 5.75 # в Python 2 было бы 5 a = 23 // 4 # 5 a = 23 % 4 # 3
Булевы операции
print(5 in [1, 2, 5]) # True condition = 2 * 2 == 5 if condition: call_police()
Python — язык с динамической типизацией
value = "Who is John Galt?" print(value) value = 9 print(value + 1)
В Python богатый встроенный набор коллекций
# список (изменяемый, расширяемый) fruit = ['apples', 'peaches', 'bananas'] # словарь (множество пар ключ-значение) cities = {"London":"UK", "Nizhny Novgorod":"Russia"} cities["Bristol"] = "Ireland" # кортеж (неизменяемый) point = (12, 21)
Индексация в списках
pi_list = [3, 1, 4, 1, 5, 9, 2, 6] pi_list[0:4] # [3, 1, 4, 1], то есть берется полуинтервал с левым включением pi_list[:4] == pi_list[0:4] # True, крайние значения можно опускать pi_list[:3:-1] # [4, 1, 3], -1 инвертирует направление списка pi_list[::2] # [3, 4, 5, 2] каждый второй элемент pi_list[:-4:-2] # [6, 9] это можно понять :)
Цикл for. Обратите внимание, что блок выделяется однотипным отступом (то есть с помощью Tab или одинакового количества пробелов).
for i in range(5): print(i) # 0 1 2 3 4 for letter in ["alpha", "beta", "gamma"]: print(letter.upper()) # ALPHA BETA GAMMA
Цикл while
value = 0 while value < 5: value += 1
Модуль math
import math print(math.sqrt(math.pi))
или
from math import pi from math import sqrt print(sqrt(pi))
Некоторые трюки с присваиваниями
val1, val2 = val2, val1 ### def func(a, b): return (a, b+a) # кортеж val1, val2 = func(2, 3) # в val1 теперь 2, в val2 — 5 ### a = [1, 2, 3] b = a b.append(4) # добавляем 4 в конец b a == b # True, при присваивании в b записалась ссылка на a ### b = a[:] # В b теперь копия a
Определение функций в Python
def centrize(array): mean = sum(array)/len(array) array = [item - mean for item in array] # генератор return array print(centrize([1, 2, 3])) # [-1.0, 0.0, 1.0]
Python и анализ данных
Python наряду с R стал де-факто стандартом индустрии анализа данных. Одним из основных достоинств Python выделяют богатство его стандартной библиотеки и огромное множество реализованных библиотек, называемых *модулями*. В частности, для задач оптимизации, статистики, анализа данных, визуализации и представления результатов можно выделить следующие модули:
Литература
- М. Лутц "Изучаем Python"
- М. Саммерфилд "Программирование на Python 3. Подробное руководство"