1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/it-ebooks-pyda-2e-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
1.md 36 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 16:49 0ce2ae9

Глава 1. Подготовка работы

1.1 Содержание книги

В этой книге рассказывается о том, как использовать Python для управления, обработки, организации и анализа данных. Моя цель — представить Python-программирование и библиотеки, а также инструменты для работы с данными, которые помогут вам стать специалистом по анализу данных. Хотя книга называется «Анализ данных», основное внимание уделяется программированию на Python, библиотекам и инструментам для анализа данных. Это именно то, что нужно для анализа данных с помощью Python.

Какие данные?

Когда в книге упоминается «данные», что это значит? В основном это структурированные данные (structured data), этот намеренно расплывчатый термин обозначает все данные общего формата, такие как:

  • Табличные данные, где столбцы могут быть разных типов (строки, числа, даты и т. д.). Например, данные, хранящиеся в реляционной базе данных или в текстовом файле с разделителями-табуляторами или запятыми.
  • Многомерные массивы (матрицы).
  • Несколько таблиц, связанных через ключевые столбцы (для пользователей SQL это первичные и внешние ключи).
  • Интервальные средние или неравномерные временные ряды.

Это далеко не полный список. Большинство наборов данных можно преобразовать в более подходящую для анализа и моделирования структуру, хотя иногда это не так очевидно. Если это невозможно, можно также преобразовать набор данных в структурированную форму. Например, группу новостных статей можно обработать в виде частотной таблицы, которую затем можно использовать для эмоционального анализа.

Большинство пользователей электронных таблиц (например, Microsoft Excel, который, возможно, является самым популярным инструментом для анализа данных) знакомы с этим типом данных.

1.2 Почему следует использовать Python для анализа данных

Многие люди (включая меня) легко влюбляются в Python. С момента своего появления в 1991 году Python стал одним из самых популярных динамических языков программирования, наряду с Perl и Ruby. Благодаря большому количеству веб-фреймворков (таких как Rails для Ruby и Django для Python), использование Python и Ruby для создания веб-сайтов стало очень популярным с 2005 года. Эти языки часто называют скриптовыми языками, потому что их можно использовать для написания коротких и грубых небольших программ (скриптов). Мне лично не нравится термин «скриптовый язык», потому что он звучит так, будто эти языки не подходят для создания надёжного программного обеспечения. Из-за различных исторических и культурных факторов Python развил большое и активное сообщество научных вычислений. За последние 10 лет Python превратился из периферийного или рискованного языка научных вычислений в один из важнейших языков для задач анализа данных, машинного обучения, академических и промышленных разработок программного обеспечения.

При анализе данных, интерактивных вычислениях и визуализации данных Python неизбежно будет сравниваться с другими открытыми и коммерческими специализированными языками программирования/инструментами, такими как R, MATLAB, SAS, Stata и другие. В последние годы благодаря постоянному совершенствованию библиотек Python (таких как pandas и scikit-learn) он стал предпочтительным вариантом для задач анализа данных. В сочетании с его мощью в универсальном программировании мы можем полностью использовать Python как единый язык для разработки приложений, ориентированных на данные.

Python как связующий язык

Python стал успешным инструментом научных вычислений отчасти потому, что он может легко интегрировать код C, C++ и Fortran. Большинство современных вычислительных сред используют некоторые библиотеки Fortran и C для реализации линейной алгебры, оптимизации, интеграции, быстрого преобразования Фурье и других подобных алгоритмов. Многие предприятия и государственные лаборатории также используют Python для «склеивания» устаревших программных систем, которыми они пользовались годами.

Большая часть программного обеспечения состоит из двух частей кода: небольшого количества кода, требующего большую часть времени выполнения, и большого количества «связующего кода», который редко выполняется. В большинстве случаев время выполнения связующего кода незначительно. Разработчики тратят почти всё своё время на оптимизацию узких мест в вычислениях, иногда даже напрямую используя более низкоуровневые языки (такие как C).

Решение проблемы «двух языков»

Во многих организациях обычно используется язык, подобный предметно-ориентированному языку вычислений (такому как SAS и R), для исследования новых идей, прототипирования и тестирования, а затем переноса этих идей в более крупную производственную систему (возможно, написанную на Java, C# или C++). Люди постепенно начинают понимать, что Python подходит не только для исследований и прототипов, но и для построения производственных систем. Зачем нужны два языка и среда разработки? Я уверен, что всё больше предприятий будут думать так же, поскольку использование одного и того же инструмента программирования исследователями и инженерами-технологами принесёт значительные организационные выгоды.

Почему бы не выбрать Python

Хотя Python отлично подходит для создания аналитических приложений и общих систем, его применимость к некоторым сценариям использования ограничена.

Поскольку Python является интерпретируемым языком программирования, большая часть кода Python работает намного медленнее, чем код, написанный на компилируемых языках (таких как Java и C++). Поскольку время программистов обычно дороже, чем время процессора, многие люди готовы пойти на компромисс. Однако в приложениях с очень низкой задержкой или высокой эффективностью использования ресурсов (например, высокочастотные торговые системы) написание кода на более низком и менее производительном языке, таком как C++, также стоит усилий.

Для многопоточных и параллельных приложений с высоким уровнем параллелизма (особенно тех, которые имеют много вычислительно интенсивных потоков) Python не является идеальным языком программирования. Это связано с тем, что у Python есть компонент, называемый глобальной блокировкой интерпретатора (Global Interpreter Lock, GIL), механизм, предотвращающий одновременное выполнение нескольких инструкций байт-кода Python интерпретатором. Технические причины существования GIL выходят за рамки этой книги. Хотя многим приложениям для обработки больших данных требуется запускать обработку данных на кластере компьютеров в течение короткого периода времени, некоторые ситуации требуют использования однопроцессного многопоточного решения.

Однако это не означает, что Python не может выполнять настоящий многопоточный параллельный код. Например, плагины Python, использующие собственный C или C++, могут работать параллельно без влияния GIL, если они не взаимодействуют с объектами Python слишком часто.

1.3 Важные библиотеки Python

Учитывая, что читатели, незнакомые с экосистемой научных вычислений Python и библиотеками, могут найти эту информацию полезной, я сначала представлю каждую библиотеку вкратце.

NumPy NumPy (сокращение от Numerical Python) является основой для научных вычислений на Python. Большая часть содержания этой книги основана на NumPy и библиотеках, построенных на его основе. Он предоставляет следующие функции (среди прочего):

  • Быстрый и эффективный многомерный массив объектов ndarray.

  • Функции для выполнения операций над элементами массива и прямого выполнения математических операций над массивами.

  • Инструменты для чтения и записи данных на основе массивов на жёстком диске.

  • Линейная алгебра, преобразование Фурье и генерация случайных чисел.

    -Зрелый C API для доступа к данным и вычислительным инструментам NumPy из Python плагинов и собственного кода C, C++ и Fortran.

Помимо предоставления быстрых возможностей обработки массивов, NumPy также играет важную роль в анализе данных как контейнер для передачи данных между алгоритмами и библиотеками. Для числовых данных массивы NumPy гораздо эффективнее, чем встроенные структуры данных Python. Кроме того, библиотеки, написанные на низкоуровневых языках (таких как C и Fortran), могут напрямую манипулировать данными в массивах NumPy без необходимости копировать данные. Поэтому многие инструменты численных вычислений Python либо используют массивы NumPy в качестве основной структуры данных, либо могут беспрепятственно взаимодействовать с ними.

pandas

pandas предоставляет быстрые и удобные инструменты для обработки больших объёмов структурированных данных. С момента его появления в 2010 году он сделал Python мощной и эффективной средой для анализа данных. Наиболее часто используемые объекты pandas — это DataFrame, двумерная табличная структура, ориентированная на столбцы, и Series, одномерный объект массива с метками.

pandas сочетает в себе высокую производительность массивов NumPy с гибкостью и мощью обработки данных электронных таблиц и реляционных баз данных (таких как SQL). Он обеспечивает сложные и тонкие возможности индексирования, облегчая перестройку, нарезку и нарезку кубиками, агрегацию и выбор подмножеств данных. Поскольку обработка данных, подготовка и очистка являются наиболее важными навыками в анализе данных, pandas является основным направлением этой книги.

В качестве фона я начал разработку pandas в начале 2008 года, когда работал в AQR Capital Management, фирме по количественному управлению инвестициями, у меня было много рабочих требований, которые нельзя было удовлетворить с помощью какого-либо одного инструмента:

  • Структуры данных с тегами, поддерживающие автоматическое или явное выравнивание данных. Это помогает предотвратить ошибки, вызванные несогласованностью данных или обработкой данных из разных источников с разными индексами.
  • Интегрированные функции временных рядов.
  • Те же структуры данных для обработки временных рядов и не временных рядов данных.
  • Сохранение арифметических операций и сжатия метаданных.
  • Гибкая обработка отсутствующих данных.
  • Объединение и другие операции с популярными базами данных (например, основанными на SQL базами данных).

Я хотел создать инструмент, который мог бы реализовать все функции, используя общий язык разработки программного обеспечения. Python был хорошим кандидатом, но в то время не существовало интегрированной структуры данных и инструментов. Я изначально стремился сделать pandas инструментом, подходящим для финансовых и бизнес-аналитиков, с акцентом на глубокие временные ряды и инструменты, подходящие для данных с временными индексами.

Пользователи R, вероятно, не будут незнакомы с именем DataFrame, которое происходит от объекта data.frame в R и его стандартных библиотеках. Но в отличие от Python, data frames построены в R и его стандартной библиотеке. Таким образом, многие функции pandas не принадлежат R или его расширениям.

Название pandas происходит от панельных данных (термин для многомерных структурированных наборов данных в эконометрике) и анализа данных Python (Python data analysis).

matplotlib

matplotlib — самая популярная библиотека для создания графиков и другой двумерной визуализации данных в Python. Она была первоначально создана Джоном Д. Хантером (JDH) и в настоящее время поддерживается большим сообществом разработчиков. Он особенно хорошо подходит для создания диаграмм для публикации. Хотя существуют и другие библиотеки визуализации Python, matplotlib является наиболее широко используемой, и она прекрасно сочетается с другими инструментами экосистемы. Я считаю, что его можно использовать в качестве инструмента визуализации по умолчанию.

IPython и Jupyter

Проект IPython изначально был создан Фернандо... Переведённый текст:

Перес в 2001 году создал подпроект, направленный на усиление взаимодействия с Python. В течение следующих 16 лет он стал одним из наиболее важных инструментов стека данных Python. Хотя IPython сам по себе не предоставляет инструменты для вычислений и анализа данных, он может значительно повысить производительность интерактивных вычислений и разработки программного обеспечения. IPython поощряет рабочий процесс «выполнение-исследование», в отличие от рабочего процесса «редактирование-компиляция-выполнение» других программных средств. Он также позволяет легко получать доступ к системным оболочкам и файловым системам. Поскольку большая часть кода анализа данных включает исследование, пробные попытки и повторение, IPython может ускорить работу.

В 2014 году Фернандо и команда IPython объявили о проекте Jupyter, который представляет собой более широкий многоязычный инструмент для интерактивных вычислений. IPython web notebook превратился в Jupyter notebook, теперь поддерживающий 40 языков программирования. IPython теперь может использоваться как ядро Python в Jupyter (режим программирования).

IPython стал компонентом обширного открытого проекта Jupyter — эффективной среды для интерактивного и исследовательского вычисления. Это самый старый и простой режим, который сейчас является усиленной оболочкой для написания, тестирования и отладки кода Python. Вы также можете использовать Jupyter Notebook, интерактивный сетевой блокнот, поддерживающий множество языков, для использования IPython. Блокноты Jupyter и IPython особенно подходят для исследования данных и визуализации.

Блокноты Jupyter также позволяют создавать контент в формате Markdown и HTML, предоставляя способ создания обогащённого текста с кодом и текстом. Другие языки программирования также были интегрированы в ядра Jupyter, позволяя использовать языки, отличные от Python, в среде Jupyter.

Для меня лично большая часть моей работы с Python требует использования IPython, включая запуск, отладку и тестирование кода.

На странице GitHub этой книги вы можете найти Jupyter notebooks со всеми примерами кода из каждой главы.

SciPy

SciPy — это набор пакетов, предназначенных для решения различных стандартных задач в области научных вычислений, включающий следующие пакеты:

  • scipy.integrate: процедуры численного интегрирования и решатели дифференциальных уравнений.
  • scipy.linalg: расширенные линейно-алгебраические процедуры и функции разложения матриц, предоставляемые numpy.linalg.
  • scipy.optimize: оптимизаторы функций (минимизаторы) и алгоритмы поиска корней.
  • scipy.signal: инструменты обработки сигналов.
  • scipy.sparse: разреженные матрицы и решатели линейных систем с разреженными матрицами.
  • scipy.special: пакет, обертывающий SPECFUN (библиотека Fortran, реализующая многие стандартные математические функции, такие как функция Гамма).
  • scipy.stats: стандартные непрерывные и дискретные распределения вероятностей (такие как функции плотности, генераторы случайных чисел, непрерывные функции распределения и т. д.), различные статистические методы проверки и лучшие методы описания статистики.

Объединение NumPy и SciPy создаёт довольно полную и зрелую вычислительную платформу, способную обрабатывать разнообразные традиционные задачи научных вычислений.

scikit-learn

С момента своего появления в 2010 году scikit-learn стал универсальным инструментом машинного обучения Python. Всего за семь лет он собрал более 1500 участников-вкладчиков. Его подмодули включают:

  • Классификация: SVM, k-ближайшие соседи, случайные леса, логистическая регрессия и другие.
  • Регрессия: Lasso, гребневая регрессия и другие.
  • Кластеризация: k-средние, спектральная кластеризация и другие.
  • Снижение размерности: PCA, выбор признаков, разложение матриц и другие.
  • Выбор модели: поиск по сетке, перекрестная проверка, метрики.
  • Предварительная обработка: извлечение признаков, стандартизация.

Вместе с pandas, statsmodels и IPython scikit-learn играет ключевую роль в превращении Python в мощный язык программирования для науки о данных. Хотя эта книга не будет подробно объяснять scikit-learn, я кратко представлю некоторые из его моделей и способы их использования с другими инструментами.

statsmodels

statsmodels — это пакет статистического анализа, созданный профессором статистики Стэнфордского университета Джонатаном Тейлором. Он разработал множество моделей регрессионного анализа, популярных в языке R. Скиппер Сиболд и Йозеф Перктольд официально создали проект statsmodels в 2010 году, после чего собрали большое количество пользователей и участников. Вдохновлённый системой формул R, Натаниэль Смит разработал проект Patsy, обеспечивающий стандартную структуру для формул или моделей statsmodels.

По сравнению со scikit-learn, statsmodels содержит алгоритмы классической статистики и эконометрики. Включает следующие подмодули:

  • Модели регрессии: линейная регрессия, обобщённая линейная модель, устойчивая линейная модель, линейная смешанная модель и другие.
  • Дисперсионный анализ (ANOVA).
  • Анализ временных рядов: AR, ARMA, ARIMA, VAR и другие модели.
  • Непараметрические методы: ядерная оценка плотности, ядерная регрессия.
  • Визуализация результатов статистических моделей.

statsmodels больше фокусируется на статистическом выводе, предоставляя неопределённые оценки и p-значения параметров. Напротив, scikit-learn уделяет внимание прогнозированию.

Как и в случае со scikit-learn, я лишь кратко представлю statsmodels, а также способы его использования с NumPy и pandas.

1.4 Установка и настройка

Поскольку люди используют Python для разных целей, не существует универсального подхода к установке Python и его плагинов. Из-за того, что многие читатели не могут полностью удовлетворить потребности научного вычислительного окружения Python, я подробно опишу методы установки для каждой операционной системы. Я рекомендую бесплатный установочный пакет Anaconda. На момент написания этой книги Anaconda предоставляла версии Python 2.7 и 3.6, но это может измениться. Эта книга использует Python 3.6 и поэтому рекомендует выбирать Python 3.6 или более позднюю версию.

Windows

Чтобы запустить на Windows, сначала загрузите установочный пакет Anaconda. Рекомендуется следовать инструкциям по установке на странице загрузки Anaconda для Windows, которые могут меняться со временем.

Теперь убедитесь, что настройки верны. Откройте командное окно (cmd.exe), введите python, чтобы открыть интерпретатор Python. Вы должны увидеть вывод, похожий на версию Anaconda, например:

C:\Users\wesm>python
Python 3.5.2 |Anaconda 4.1.1 (64-bit)| (default, Jul  5 2016, 11:41:13)
[MSC v.1900 64 bit (AMD64)] on win32
>>>

Чтобы выйти из оболочки, нажмите Ctrl-D (Linux или macOS), Ctrl-Z (Windows) или введите команду exit(), затем нажмите Enter.

Apple (OS X, macOS)

Загрузите установочный пакет OS X Anaconda, который называется примерно так: Anaconda3-4.1.0-MacOSX-x86_64.pkg. Дважды щёлкните файл .pkg, чтобы запустить установочный пакет. Во время работы установочного пакета он автоматически добавит путь выполнения Anaconda в файл .bash_profile, расположенный в /Users/$USER/.bash_profile.

Чтобы убедиться в успешности установки, откройте IPython в системной оболочке:

$ ipython

Чтобы выйти из оболочки, нажмите Ctrl-D или введите команду exit(), а затем нажмите Enter.

GNU/Linux

Существует множество версий Linux, здесь приведены инструкции по установке для Debian, Ubantu, CentOS и Fedora. Установочный пакет представляет собой сценарий, который необходимо запустить в оболочке. В зависимости от того, является ли ваша система 32-битной или 64-битной, выберите установочный пакет x86 (32-битный) или x86_64 (64-битный). Затем вы получите файл, который будет называться примерно так: Anaconda3-4.1.0-Linux-x86_64.sh. Установите его с помощью bash:

$ bash Anaconda3-4.1.0-Linux-x86_64.sh

Примечание: Некоторые версии Linux имеют пакеты Python, удовлетворяющие требованиям, доступные через менеджер пакетов, такой как apt. Здесь описывается установка с использованием Anaconda, которая подходит для различных пакетов Linux и упрощает обновление до последней версии.

После принятия лицензии вам будет предложено указать, куда поместить файлы Anaconda. Я рекомендую установить файлы по умолчанию в домашний каталог, например /home/$USER/anaconda.

Установочный пакет Anaconda может спросить вас, хотите ли вы добавить каталог bin/ в переменную $PATH. Если у вас возникнут какие-либо проблемы после установки, вы можете изменить файл .bashrc (или .zshrc, если вы используете оболочку zsh) следующим образом:

export PATH=/home/$USER/anaconda/bin:$PATH

Сделав это, вы можете открыть новое окно или снова выполнить .bashrc, используя ~/.bashrc.

Установка или обновление пакетов Python

Когда вы читаете эту книгу, вы, возможно, захотите установить дополнительные пакеты Python, которых нет в Anaconda. Обычно вы можете установить их с помощью следующей команды:

conda install package_name

Если эта команда не работает, вы также можете использовать pip, менеджер пакетов:

pip install package_name

Вы можете обновить пакет с помощью команды conda update:

conda update package_name

Pip можно использовать для обновления с помощью --upgrade:

pip install --upgrade package_name

В этой книге у вас будет много возможностей попробовать эти команды.

Обратите внимание: При использовании conda и pip для установки пакетов одновременно не используйте pip для обновления пакетов conda, так как это может привести к проблемам с окружением. При использовании Anaconda или Miniconda лучше всего сначала использовать conda для обновления пакетов.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/it-ebooks-pyda-2e-zh.git
git@api.gitlife.ru:oschina-mirror/it-ebooks-pyda-2e-zh.git
oschina-mirror
it-ebooks-pyda-2e-zh
it-ebooks-pyda-2e-zh
master