Python
Материал из MachineLearning.
Python — высокоуровневый, объектно-ориентированный, интерпретируемый язык программирования, основными целями которого являются повышенная читаемость кода и способность написания намного меньших по объему программ по сравнению с такими языками как Java или C++. Правила оформления кода интегрированы в язык и закреплены его стилевыми правилами. Python и R являются стандартными языками программирования для анализа данных де-факто [1][1].
Содержание |
Версии языка
Основными поддерживаемыми версиями Python являются вторая и третья (2.7.11 и 3.5.1 на момент написания статьи), которые, вообще говоря, не являются обратно совместимыми. Вторая версия на момент написания статьи распространена в индустрии больше из-за количества написанного на нем кода, однако его поддержка будет закончена раньше, и все основные модули совместимы с Python 3.
Установка Python
Python является интерпретируемым языком программирования, что означает, что для работы кода на Python нужен интерпретатор. Основной реализацией Python является CPython. В академической и исследовательской распространен IPython, который расширен более продвинутым автодополнением и другими вспомогательными конструкциями. В частности, довольно распространен Jupyter, в котором можно писать код (не только на Python 2 или 3, но и на Matlab, R и других) и вставлять документацию на Markdown с поддержкой LaTeX. Основным достоинством этого подхода является написание кода и технического отчета одновременно, который может сопровождаться самой разнообразной визуализацией[1].
Linux и OS X
Интерпретатор Python встроен в OS X и почти во все Linux дистрибутивы. С большой вероятностью, команда python вызывает интерпретатор Python по умолчанию, python3 — интерпретатор для третьей версии.
Для установки дополнительных пакетов необходимо воспользоваться пакетным менеджером Python — pip. Единственный верный способ установки менеджера на любой \*nix системе указан здесь. Если вы используете Ubuntu/Mint/Debian, то код, устанавливающий основные зависимости и библиотеки анализа данных приведен ниже (работает на Ubuntu 14.04). Обратите внимание, что пакеты собираются pip'ом из исходников на Linux, так что установка может занять некоторое время.
sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y dist-upgrade sudo apt-get -y install htop gcc g++ vim libxrender1 libxrender-dev gfortran build-essential libatlas-dev libatlas3gf-base libsm6 git \ pkg-config libblas3gf libblas-doc libblas-dev liblapack3gf liblapack-doc liblapack-dev libpng-dev libjpeg8-dev libfreetype6-dev sudo apt-get -y install python-pip python-dev python-setuptools sudo apt-get -y install python3-pip python3-dev python3-setuptools sudo pip install --upgrade pip sudo pip3 install --upgrade pip sudo pip3 install numpy scipy matplotlib pandas jupyter sklearn seaborn # если устанавливать пакеты для Python 2 используйте pip вместо pip3
Все дополнительные библиотеки, jupyter и ipython могут быть установлены с помощью команды (приведен пример для установки pandas).
pip install pandas
Обратите внимание, что, если вы используете Linux, рекомендуется использовать pip без прав администратора, так как вы рискуете своей ошибкой нарушить работоспособность системы. Для безопасной работы с pip существует virtualenv.
Альтернативой pip является anaconda.
Windows
Для корректной работы всех библиотек анализа данных практически единственным реалистичным методом является anaconda.
Anaconda
Anaconda — это дистрибутив Python и R вместе с основными библиотеками для анализа данных и пакетным менеджером conda
. С помощью последнего удобно устанавливать и удалять пакеты. Также сильным достоинством является установка без компилирования из исходного кода, что значительно ее ускоряет по сравнению с pip. После установки дистрибутива с официального сайта (в этом разделе рассматриваем случай 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. Подробное руководство"
- Лучано Рамальо "Python. К вершинам мастерства"
- Уэс Маккини "Python для анализа данных"