Python

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
м (fix error in example)
м
Строка 3: Строка 3:
'''Python''' — высокоуровневый, объектно-ориентированный, интерпретируемый язык программирования, основными целями которого являются повышенная читаемость кода и способность написания намного меньших по объему программ по сравнению с такими языками как Java или C++. Правила оформления кода интегрированы в язык и закреплены
'''Python''' — высокоуровневый, объектно-ориентированный, интерпретируемый язык программирования, основными целями которого являются повышенная читаемость кода и способность написания намного меньших по объему программ по сравнению с такими языками как Java или C++. Правила оформления кода интегрированы в язык и закреплены
-
его [https://www.python.org/dev/peps/pep-0008/ стилевыми правилами].
+
его [https://www.python.org/dev/peps/pep-0008/ стилевыми правилами]. Python и [[R]] являются [http://www.fastcompany.com/3030716/the-9-best-languages-for-crunching-data де-факто <ref>http://www.fastcompany.com/3030716/the-9-best-languages-for-crunching-data</ref><ref>http://www.kdnuggets.com/2014/08/four-main-languages-analytics-data-mining-data-science.html</ref>
Строка 14: Строка 14:
-
Python является интерпретируемым языком программирования, что означает, что для работы кода на Python нужен ''интерпретатор''. Основной реализацией Python является [https://www.python.org/downloads/ CPython]. В академической и исследовательской распространен [http://ipython.org IPython], который расширен более продвинутым автодополнением и другими вспомогательными конструкциями. В частности, довольно распространен [http://jupyter.org Jupyter], в котором можно писать код (не только на Python 2 или 3, но и на [[Matlab]], [[R]] и других) и вставлять документацию на Markdown с поддержкой LaTeX.
+
Python является интерпретируемым языком программирования, что означает, что для работы кода на Python нужен ''интерпретатор''. Основной реализацией Python является [https://www.python.org/downloads/ CPython]. В академической и исследовательской распространен [http://ipython.org IPython], который расширен более продвинутым автодополнением и другими вспомогательными конструкциями. В частности, довольно распространен [http://jupyter.org Jupyter], в котором можно писать код (не только на Python 2 или 3, но и на [[Matlab]], [[R]] и других) и вставлять документацию на [[Markdown]] с поддержкой [[LaTeX]].
==== Linux и OS X ====
==== Linux и OS X ====

Версия 07:42, 23 мая 2016

Python — высокоуровневый, объектно-ориентированный, интерпретируемый язык программирования, основными целями которого являются повышенная читаемость кода и способность написания намного меньших по объему программ по сравнению с такими языками как Java или C++. Правила оформления кода интегрированы в язык и закреплены его стилевыми правилами. Python и R являются [http://www.fastcompany.com/3030716/the-9-best-languages-for-crunching-data де-факто [1][1]


Содержание

Версии языка

Основными поддерживаемыми версиями 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 выделяют богатство его стандартной библиотеки и огромное множество реализованных библиотек, называемых *модулями*. В частности, для задач оптимизации, статистики, анализа данных, визуализации и представления результатов можно выделить следующие модули:

Литература

Полезные ссылки

Личные инструменты