Anaconda что это за программа
Инструкция по Anaconda & Conda. Как управлять и настроить среду для Python?
Среды Conda помогает управлять зависимостями и изолировать проекты. Также среды conda не зависят от языка, т.е. они поддерживают языки, отличные от Python.
В этом руководстве мы рассмотрим основы создания и управления средами Conda для Python
Conda vs. Pip vs. Venv — в чем разница?
venv создает изолированные среды только для разработки на Python, а conda может создавать изолированные среды для любого поддерживаемого языка программирования.
Примите во внимание, что pip устанавливает только пакеты Python из PyPI, с помощью conda можно
Что такое Anaconda? Обо всем по порядку…
Anaconda — это дистрибутивы Python и R. Он предоставляет все необходимое для решения задач по анализу и обработке данных (с применимостью к Python).
Anaconda — это набор бинарных систем, включающий в себя Scipy, Numpy, Pandas и их зависимости.
Что такое Анаконда Навигатор?
Anaconda Navigator — это графический интерфейс пользователя на рабочем столе (GUI), включенный в дистрибутив Anaconda, который позволяет запускать приложения и легко управлять пакетами, средами и каналами conda без использования команд командной строки. Навигатор может искать пакеты в Anaconda Cloud или в локальном репозитории Anaconda. Он доступен для Windows, MacOS и Linux.
Зачем использовать Навигатор?
Для запуска многие научные пакеты зависят от конкретных версий других пакетов. Исследователи данных часто используют несколько версий множества пакетов и используют несколько сред для разделения этих разных версий.
Программа командной строки conda является одновременно менеджером пакетов и менеджером среды. Это помогает специалистам по данным гарантировать, что каждая версия каждого пакета имеет все необходимые зависимости и работает правильно.
Navigator — это простой и удобный способ работы с пакетами и средами без необходимости вводить команды conda в окне терминала. Вы можете использовать его, чтобы найти нужные вам пакеты, установить их в среде, запустить пакеты и обновить их — все в Navigator.
Почему Вам могут потребоваться несколько сред Python?
Когда Вы начинаете изучать Python, Вы устанавливаете самую новую версию Python с последними версиями библиотек (пакетов), которые Вам нужны или с которыми Вы хотите поэкспериментировать.
Когда Вы постигните азы Python и загрузите приложения Python из GitHub, Kaggle или других источников. Этим приложениям могут потребоваться другие версии библиотек (пакетов) Python, чем те, которые Вы в настоящее время используете (прошлые версии пакетов или прошлые версии Python).
В этом случае Вам необходимо настроить различные среды.
Помимо этой ситуации, есть и другие варианты использования, когда могут оказаться полезными дополнительные среды:
Каналы — это места хранилищ, где Conda ищет пакеты. Каналы существуют в иерархическом порядке. Канал с наивысшим приоритетом является первым, который проверяет Conda в поисках пакета, который вы просили. Вы можете изменить этот порядок, а также добавить к нему каналы (и установить их приоритет).
Рекомендуется добавлять канал в список каналов как элемент с самым низким приоритетом. Таким образом, вы можете включить «специальные» пакеты, которые не являются частью тех, которые установлены по умолчанию (каналы
Continuum). В результате вы получите все пакеты по умолчанию — без риска перезаписи их по каналу с более низким приоритетом — И тот «специальный», который вам нужен.
Создание новой среды в Anaconda Navigator
Для создания новой среды, нажимаем пункт Environments, а затем Create:
Далее указываем наименование среды и выбираем версию Python:
Добавление нового канала в Anaconda Навигаторе
Как начать работу в новой среде Conda?
Итак, Вы создали среду, указали дополнительные каналы, установили необходимые пакеты (библиотеки). Теперь необходимо в Анаконда Навигаторе перейти на вкладку Home и инсталлировать в определенную среду те компоненты, которые Вы хотите использовать.
Например, последовательно установим 2 компонента Jupyter Notepad и Spyder. Для компонентов также имеются каналы, откуда скачиваются для инсталляции ПО.
После инсталляции станут доступны кнопки Launch — Запустить компонент для работы в среде.
Запустим для примера Spyder:
Настройка среды для Spyder
1. Настройка интерпретатора
Настройка директории
Как открыть Jupyter Notebook в новой среде MyNewEnvironmentName
Для того, чтобы запустить Jupyter Notebook в созданной среде MyNewEnvironmentName, в пуске находим Anaconda3 и запускаем блокнот с названием среды:
Появится консольное окошко — это движок Jupyter Notebook, который работает в фоновом режиме:
В Jupyter запускаем Python 3:
Для того, чтобы убедиться в какой среде мы работаем, можно вбить ряд команд (ниже приведен текст этих команд для Python 3):
Узнать среду, в которой работает Jupyter Notebook:
Получить список модулей, доступных в Env:
Anaconda3 Prompt cmd Conda Command — Запуск команд через консоль
Для того, чтобы использовать команды conda через командную строку (cmd), необходимо запустить программу Anaconda Prompt (Anaconda3)
Можете набрать две команды (в качестве проверки работы conda):
Установка новой библиотеки (пакета) в среду
Пакеты управляются отдельно для каждой среды. Изменения, которые вы вносите в пакеты, применяются только к активной среде.
Исполняемые файлы в среде Conda
Видео по Anaconda Youtube
Использование Anaconda с Doker
Anaconda со своей изолированной средой для пакетов Data Science Python и технологией контейнеров Docker создает отличную комбинацию для масштабируемых, воспроизводимых и переносимых развертываний данных.
Вы можете использовать Anaconda с Docker для создания контейнеров и обмена вашими приложениями для обработки данных внутри вашей команды. Совместные рабочие процессы по обработке данных с Anaconda и Docker максимально упрощают переход от разработки к развертыванию.
Jupyter Notebook: цифровая лабораторная тетрадь
Для обеспечения воспроизводимости исследований необходимо регистрировать все, что вы делаете. Это достаточно обременительно, особенно если вы просто хотите просто поэкспериментировать и выполнить специальный анализ.
Отличный инструмент для экспериментов — Jupyter Notebook. Интерактивный интерфейс программирования позволяет мгновенно проверять действия, выполняемые кодом, благодаря чему можно создавать алгоритмы шаг за шагом. Более того, вы можете использовать ячейки Markdown для записи своих идей и выводов одновременно с кодом.
Conda
Управление пакетами, зависимостями и средой для любого языка — Python, R, Ruby, Lua, Scala, Java, JavaScript, C / C ++, FORTRAN и других.
Conda — это система управления пакетами с открытым исходным кодом и система управления средой, работающая в Windows, macOS и Linux. Conda быстро устанавливает, запускает и обновляет пакеты и их зависимости. Conda легко создает, сохраняет, загружает и переключается между средами на вашем локальном компьютере. Он был создан для программ Python, но он может упаковывать и распространять программное обеспечение для любого языка.
Conda как менеджер пакетов поможет вам найти и установить пакеты. Если вам нужен пакет, для которого требуется другая версия Python, вам не нужно переключаться на другой менеджер среды, потому что conda также является менеджером среды. С помощью всего лишь нескольких команд вы можете настроить совершенно отдельную среду для запуска этой другой версии Python, продолжая при этом запускать вашу обычную версию Python в обычной среде.
В конфигурации по умолчанию conda может устанавливать и управлять тысячами пакетов на repo.anaconda.com, которые создаются, проверяются и поддерживаются Anaconda.
Conda может быть объединена с системами непрерывной интеграции, такими как Travis CI и AppVeyor, чтобы обеспечить частое автоматическое тестирование вашего кода.
Пакет conda и менеджер среды включены во все версии Anaconda и Miniconda.
Команды Conda
Управление Conda и Anaconda
Убедитесь, что conda установлена, проверьте версию #
Обновление пакета conda и менеджера среды
Обновите метапакет анаконды (anaconda)
Управление средами — Managing Environments
Получить список всех моих окружений. Активная среда показана с *
Создать среду и установить программу (ы)
Активируйте новую среду, чтобы использовать ее
Дезактивировать окружающую среду
Создайте новую среду, укажите версию Python
Сделать точную копию окружения
Сохранить текущую среду в файл
Загрузить среду из файла
Управление Python
Проверьте версии Python, доступные для установки
Установите другую версию Python в новой среде
Добавьте новое значение в каналы, чтобы conda искала пакеты в этом месте
Управление пакетами (Packages), включая Python
Просмотр списка пакетов и версий, установленных в активной среде
Найдите пакет, чтобы узнать, доступен ли он для установки conda.
Установите новый пакет. ПРИМЕЧАНИЕ. Если вы не укажете имя среды, оно будет установлено в текущей активной среде.
Обновить пакет в текущей среде
Поиск пакета в определенном месте (канал pandas на Anaconda.org)
Установить пакет из определенного канала
Найдите пакет, чтобы узнать, доступен ли он в репозитории Anaconda.
Установить коммерческие пакеты Continuum
Создайте пакет Conda из пакета Python Index Index (PyPi)
Удаление Пакетов (Packages) или Сред (Environments)
Удалить один пакет из любой именованной среды
Работа с Anaconda на примере поиска корреляции курсов криптовалют
Цель этой статьи — предоставить легкое введение в анализ данных с использованием Anaconda. Мы пройдем через написание простого скрипта Python для извлечения, анализа и визуализации данных по различным криптовалютам.
Шаг 1 — Настройка рабочей среды.
Единственные навыки, которые вам понадобятся, это базовое понимание Python.
Шаг 1.1 — Установка Anaconda
Дистрибутив Anaconda можно скачать на официальном сайте.
Установка проходит в стандартном Step-by-Step режиме.
Шаг 1.2 — Настройка рабочей среды проекта
После того, как Anaconda будет установлена, нужно создать и активировать новую среду для организации наших зависимостей.
Зачем использовать среды? Если вы планируете разрабатывать несколько проектов Python на своем компьютере, полезно хранить зависимости (программные библиотеки и пакеты) отдельно, чтобы избежать конфликтов. Anaconda создаст специальный каталог среды для зависимостей каждого проекта, чтобы все было организовано и разделено.
Сделать это можно либо через командную строку
либо через Anaconda Navigator
В данном случае среда активируется автоматически
Затем необходимо установить необходимые зависимости NumPy, Pandas, nb_conda, Jupiter, Plotly, Quandl.
либо через Anaconda Navigator, поочередно каждый пакет
Это может занять несколько минут.
Шаг 1.3 — Запуск Jupyter Notebook
Так же существует вариант через командную строку jupyter notebook и откройте браузер на http://localhost:8888/
и через Anaconda Navigator
Шаг 1.4 — Импорт зависимостей
После того, как вы откроете пустой Jupyter Notebook, первое, что нужно сделать — это импорт необходимых зависимостей.
Затем импорт и активация автономного режима Plotly.
Шаг 2 — Получение данных о ценах на биткоин
Теперь, когда все настроено, мы готовы начать извлечение данных для анализа. Начнем с того, что получим данные о ценах используя бесплатный API от Quandl.
Шаг 2.1 — Определение функции Quandl
Начнем с того, что определим функцию для загрузки и кэширования наборов данных из Quandl.
Мы используем pickle для сериализации и сохранения загруженных данных в виде файла, что позволит нашему сценарию повторно не загружать одни и те же данные при каждом запуске скрипта.
Функция вернет данные в виде набора данных pandas.
Шаг 2.2 — Получение курса биткоина на бирже Kraken
Реализуем это следующим образом:
Для проверки корректности отрабатывания скрипта мы можем посмотреть первые 5 строк полученного ответа используя метод head().
Результат:
Date | Open | High | Low | Close | Volume (BTC) | Volume (Currency) | Weighted Price |
---|---|---|---|---|---|---|---|
2014-01-07 | 874.67040 | 892.06753 | 810.00000 | 810.00000 | 15.622378 | 13151.472844 | 841.835522 |
2014-01-08 | 810.00000 | 899.84281 | 788.00000 | 824.98287 | 19.182756 | 16097.329584 | 839.156269 |
2014-01-09 | 825.56345 | 870.00000 | 807.42084 | 841.86934 | 8.158335 | 6784.249982 | 831.572913 |
2014-01-10 | 839.99000 | 857.34056 | 817.00000 | 857.33056 | 8.024510 | 6780.220188 | 844.938794 |
2014-01-11 | 858.20000 | 918.05471 | 857.16554 | 899.84105 | 18.748285 | 16698.566929 | 890.671709 |
И построить график для визуализации полученного массива
Здесь мы используем Plotly для генерации наших визуализаций. Это менее традиционный выбор, чем некоторые из более известных библиотек, таких как Matplotlib, но я думаю, что Plotly — отличный выбор, поскольку он создает полностью интерактивные диаграммы с использованием D3.js.
Шаг 2.3 — Получение курса биткоина на нескольких биржах
Характер обмена заключается в том, что ценообразование определяется предложением и спросом, поэтому ни одна биржа не содержит «истинной цены» Биткойна. Чтобы решить эту проблему мы будем извлекать дополнительно данные из трех более крупных бирж для расчета совокупного индекса цены.
Мы будем загружать данные каждой биржи в словарь.
Шаг 2.4 — Объединение всех цен в единый набор данных
Определим простую функцию для объединения данных.
Затем объединим все данные по столбцу «Weighted Price».
Теперь посмотрим последние пять строк, используя метод tail (), чтобы убедиться, что все выглядит нормально и так как мы хотели.
Результат:
Date | BITSTAMP | COINBASE | ITBIT | KRAKEN | avg_btc_price_usd |
---|---|---|---|---|---|
2018-02-28 | 10624.382893 | 10643.053573 | 10621.099426 | 10615.587987 | 10626.030970 |
2018-03-01 | 10727.272600 | 10710.946064 | 10678.156872 | 10671.653953 | 10697.007372 |
2018-03-02 | 10980.298658 | 10982.181881 | 10973.434045 | 10977.067909 | 10978.245623 |
2018-03-03 | 11332.934468 | 11317.108262 | 11294.620763 | 11357.539095 | 11325.550647 |
2018-03-04 | 11260.751253 | 11250.771211 | 11285.690725 | 11244.836468 | 11260.512414 |
Шаг 2.5 — Сравнение наборов данных о ценах.
Следующим логическим шагом является визуализация сравнения полученных цен. Для этого мы определим вспомогательную функцию, которая построит график для каждой из бирж при помощи Plotly.
Теперь удалим все нулевые значения, так как мы знаем, что цена никогда не была равна нулю в периоде, который мы рассматриваем.
И пересоздадим график
Шаг 2.6 — Расчет средней цены
Теперь мы можем вычислить новый столбец, содержащий среднесуточную цену биткоина на всех биржах.
Этот новый столбец является нашим индексом цены биткоина. Построим его график, чтобы убедиться, что он выглядит нормально.
Мы будем использовать эти данные позже, чтобы конвертировать обменные курсы других криптовалют в USD.
Шаг 3 — Получение данных по альтернативным криптовалютам
Теперь, когда у нас есть массив данных с ценами биткойна, давайте возьмем некоторые данные об альтернативных криптовалютах.
Шаг 3.1 — Определение функций для работы с Poloniex API.
Для получения данных мы будем использовать API Poloniex. Определим две вспомогательные функции для загрузки и кэширования JSON данных из этого API.
Затем мы определим функцию для форматирования HTTP-запросов Poloniex API и вызова нашей новой функции get_json_data для сохранения полученных данных.
Эта функция на входе получает пару криптовалют например, «BTC_ETH» и вернет исторические данные по обменному курсу двух валют.
Шаг 3.2 — Загрузка данных из Poloniex
Некоторые из рассматриваемых альтернативных криптовалют нельзя купить на биржах напрямую за USD. По этой причине мы будем загружать обменный курс на биткоин для каждой из них, а затем будем использовать существующие данные о ценах биткоина для преобразования этого значения в USD.
Мы загрузим данные об обмене для девяти популярных криптовалют — Ethereum, Litecoin, Ripple, Ethereum Classic, Stellar, Dash, Siacoin, Monero, and NEM.
Теперь у нас есть 9 наборов данных, каждый из которых содержит исторические среднедневные биржевые соотношения биткона к альтернативной криптовалюте.
Мы можем просмотреть последние несколько строк таблицы цен на Ethereum, чтобы убедиться, что она выглядит нормально.
date | close | high | low | open | quoteVolume | volume | weightedAverage |
---|---|---|---|---|---|---|---|
2018-03-01 | 0.079735 | 0.082911 | 0.079232 | 0.082729 | 17981.733693 | 1454.206133 | 0.080871 |
2018-03-02 | 0.077572 | 0.079719 | 0.077014 | 0.079719 | 18482.985554 | 1448.732706 | 0.078382 |
2018-03-03 | 0.074500 | 0.077623 | 0.074356 | 0.077562 | 15058.825646 | 1139.640375 | 0.075679 |
2018-03-04 | 0.075111 | 0.077630 | 0.074389 | 0.074500 | 12258.662182 | 933.480951 | 0.076149 |
2018-03-05 | 0.075373 | 0.075700 | 0.074723 | 0.075277 | 10993.285936 | 826.576693 | 0.075189 |
Шаг 3.3 — Конвертирование цен в USD.
Так как теперь у нас есть обменный курс на биткоин для каждой криптовалюты и у нас есть индекс исторических цен биткоина в USD, мы можем напрямую рассчитать цену в USD для каждой альтернативной криптовалюты.
Этим мы создали новый столбец в каждом наборе данных альтернативных криптовалют с ценами в USD.
Теперь добавим в набор данных цены биткоина в качестве конечного столбца.
В результате мы имеем набор данных, содержащий ежедневные цены в USD для десяти криптовалют, которые мы рассматриваем.
Этот график дает довольно солидную «общую картину» того, как обменные курсы каждой валюты менялись в течение последних нескольких лет.
В данном примере мы используем логарифмическую шкалу оси Y, чтобы сравнить все валюты на одном и том же участке. Вы можете попробовать различные значения параметров (например, scale = ‘linear’), чтобы получить разные точки зрения на данные.
Шаг 3.4 — Вычисление корреляции криптовалют.
Вы можете заметить, что обменные курсы криптовалюты, несмотря на их совершенно разные ценности и волатильность, кажутся слегка коррелированными. И как видно по всплеску в апреле 2017 года, даже небольшие колебания, похоже, происходят синхронно на всем рынке.
Сначала мы вычислим корреляции для 2016 года.
Чтобы визуализировать эти результаты, мы создадим еще одну вспомогательную функцию.
Здесь темно-красные значения представляют собой сильные корреляции, а синие значения представляют собой сильные обратные корреляции. Все остальные цвета представляют собой разную степень слабых/несуществующих корреляций.
Что говорит нам этот график? По сути, это показывает, что было очень мало статистически значимой связи между тем, как цены разных криптовалют колебались в течение 2016 года.
Теперь, чтобы проверить нашу гипотезу о том, что криптотермины стали более коррелированными в последние месяцы, повторим те же тесты, используя данные за 2017 и 2018 года.
Результат:
DASH | ETC | ETH | LTC | SC | STR | XEM | XMR | XRP | BTC | |
---|---|---|---|---|---|---|---|---|---|---|
DASH | 1.000000 | 0.387555 | 0.506911 | 0.340153 | 0.291424 | 0.183038 | 0.325968 | 0.498418 | 0.091146 | 0.307095 |
ETC | 0.387555 | 1.000000 | 0.601437 | 0.482062 | 0.298406 | 0.210387 | 0.321852 | 0.447398 | 0.114780 | 0.416562 |
ETH | 0.506911 | 0.601437 | 1.000000 | 0.437609 | 0.373078 | 0.259399 | 0.399200 | 0.554632 | 0.212350 | 0.410771 |
LTC | 0.340153 | 0.482062 | 0.437609 | 1.000000 | 0.339144 | 0.307589 | 0.379088 | 0.437204 | 0.323905 | 0.420645 |
SC | 0.291424 | 0.298406 | 0.373078 | 0.339144 | 1.000000 | 0.402966 | 0.331350 | 0.378644 | 0.243872 | 0.325318 |
STR | 0.183038 | 0.210387 | 0.259399 | 0.307589 | 0.402966 | 1.000000 | 0.339502 | 0.327488 | 0.509828 | 0.230957 |
XEM | 0.325968 | 0.321852 | 0.399200 | 0.379088 | 0.331350 | 0.339502 | 1.000000 | 0.336076 | 0.268168 | 0.329431 |
XMR | 0.498418 | 0.447398 | 0.554632 | 0.437204 | 0.378644 | 0.327488 | 0.336076 | 1.000000 | 0.226636 | 0.409183 |
XRP | 0.091146 | 0.114780 | 0.212350 | 0.323905 | 0.243872 | 0.509828 | 0.268168 | 0.226636 | 1.000000 | 0.131469 |
BTC | 0.307095 | 0.416562 | 0.410771 | 0.420645 | 0.325318 | 0.230957 | 0.329431 | 0.409183 | 0.131469 | 1.000000 |
DASH | ETC | ETH | LTC | SC | STR | XEM | XMR | XRP | BTC | |
---|---|---|---|---|---|---|---|---|---|---|
DASH | 1.000000 | 0.775561 | 0.856549 | 0.847947 | 0.733168 | 0.717240 | 0.769135 | 0.913044 | 0.779651 | 0.901523 |
ETC | 0.775561 | 1.000000 | 0.808820 | 0.667434 | 0.530840 | 0.551207 | 0.641747 | 0.696060 | 0.637674 | 0.694228 |
ETH | 0.856549 | 0.808820 | 1.000000 | 0.700708 | 0.624853 | 0.630380 | 0.752303 | 0.816879 | 0.652138 | 0.787141 |
LTC | 0.847947 | 0.667434 | 0.700708 | 1.000000 | 0.683706 | 0.596614 | 0.593616 | 0.765904 | 0.644155 | 0.831780 |
SC | 0.733168 | 0.530840 | 0.624853 | 0.683706 | 1.000000 | 0.615265 | 0.695136 | 0.626091 | 0.719462 | 0.723976 |
STR | 0.717240 | 0.551207 | 0.630380 | 0.596614 | 0.615265 | 1.000000 | 0.790420 | 0.642810 | 0.854057 | 0.669746 |
XEM | 0.769135 | 0.641747 | 0.752303 | 0.593616 | 0.695136 | 0.790420 | 1.000000 | 0.744325 | 0.829737 | 0.734044 |
XMR | 0.913044 | 0.696060 | 0.816879 | 0.765904 | 0.626091 | 0.642810 | 0.744325 | 1.000000 | 0.668016 | 0.888284 |
XRP | 0.779651 | 0.637674 | 0.652138 | 0.644155 | 0.719462 | 0.854057 | 0.829737 | 0.668016 | 1.000000 | 0.712146 |
BTC | 0.901523 | 0.694228 | 0.787141 | 0.831780 | 0.723976 | 0.669746 | 0.734044 | 0.888284 | 0.712146 | 1.000000 |
И вот мы видим то, о чем и предполагали — почти все криптовалюты стали более взаимосвязанными друг с другом по всем направлениям.
На этом будем считать, что введение в работу с данными в Anaconda успешно пройдено.