- •Об авторе
- •О научном редакторе
- •От издательства
- •Введение
- •Использование Python для data science
- •Для кого эта книга?
- •О чем эта книга?
- •Глава 1. Базовые знания о данных
- •Категории данных
- •Неструктурированные данные
- •Структурированные данные
- •Слабоструктурированные данные
- •Данные временных рядов
- •Источники данных
- •Веб-страницы
- •Базы данных
- •Файлы
- •Получение
- •Очистка
- •Преобразование
- •Анализ
- •Хранение
- •Питонический стиль
- •Выводы
- •Глава 2. Структуры данных Python
- •Списки
- •Создание списка
- •Использование общих методов списков
- •Использование срезов
- •Использование списка в качестве очереди
- •Использование списка в качестве стека
- •Использование списков и стеков для обработки естественного языка
- •Расширение функциональности с помощью списковых включений
- •Кортежи
- •Список кортежей
- •Неизменяемость
- •Словари
- •Список словарей
- •Добавление элементов в словарь с помощью setdefault()
- •Преобразование JSON в словарь
- •Множества
- •Удаление дубликатов из последовательности
- •Общие операции с множеством
- •Упражнение № 1: продвинутый анализ тегов фотографий
- •Выводы
- •NumPy
- •Установка NumPy
- •Создание массива NumPy
- •Выполнение поэлементных операций
- •Использование статистических функций NumPy
- •Упражнение № 2: использование статистических функций numpy
- •pandas
- •Установка pandas
- •pandas Series
- •Упражнение № 3: объединение трех серий
- •pandas DataFrame
- •Упражнение № 4: использование разных типов join
- •scikit-learn
- •Установка scikit-learn
- •Получение набора образцов
- •Преобразование загруженного датасета в pandas DataFrame
- •Разделение набора данных на обучающий и тестовый
- •Преобразование текста в числовые векторы признаков
- •Обучение и оценка модели
- •Создание прогнозов на новых данных
- •Выводы
- •Глава 4. Доступ к данным из файлов и API
- •Импортирование данных с помощью функции open()
- •Текстовые файлы
- •Файлы с табличными данными
- •Упражнение № 5: открытие json-файлов
- •Двоичные файлы
- •Экспортирование данных в файл
- •Доступ к удаленным файлам и API
- •Как работают HTTP-запросы
- •Библиотека urllib3
- •Библиотека Requests
- •Упражнение № 6: доступ к api с помощью requests
- •Перемещение данных в DataFrame и из него
- •Импортирование вложенных структур JSON
- •Конвертирование DataFrame в JSON
- •Выводы
- •Глава 5. Работа с базами данных
- •Реляционные базы данных
- •Понимание инструкций SQL
- •Начало работы с MySQL
- •Определение структуры базы данных
- •Вставка данных в БД
- •Запрос к базе данных
- •Упражнение № 8: объединение «один-ко-многим»
- •Использование инструментов аналитики баз данных
- •Базы данных NoSQL
- •Документоориентированные базы данных
- •Упражнение № 9: вставка и запрос нескольких документов
- •Выводы
- •Глава 6. Агрегирование данных
- •Данные для агрегирования
- •Объединение датафреймов
- •Группировка и агрегирование данных
- •Просмотр конкретных агрегированных показателей по MultiIndex
- •Срез диапазона агрегированных значений
- •Срезы на разных уровнях агрегирования
- •Добавление общего итога
- •Добавление промежуточных итогов
- •Выбор всех строк в группе
- •Выводы
- •Глава 7. Объединение датасетов
- •Объединение встроенных структур данных
- •Объединение списков и кортежей с помощью оператора +
- •Объединение словарей с помощью оператора **
- •Объединение строк из двух структур
- •Реализация join-объединений списков
- •Конкатенация массивов NumPy
- •Объединение структур данных pandas
- •Конкатенация датафреймов
- •Удаление столбцов/строк из датафрейма
- •Join-объединение двух датафреймов
- •Выводы
- •Глава 8. Визуализация
- •Распространенные способы визуализации
- •Линейные диаграммы
- •Столбчатые диаграммы
- •Круговые диаграммы
- •Гистограммы
- •Построение графиков с помощью Matplotlib
- •Установка Matplotlib
- •Использование matplotlib.pyplot
- •Работа с объектами Figure и Axes
- •Создание гистограммы с помощью subplots()
- •Совместимость Matplotlib с другими библиотеками
- •Построение графиков для данных pandas
- •Отображение данных геолокации с помощью Cartopy
- •Выводы
- •Глава 9. Анализ данных о местоположении
- •Получение данных о местоположении
- •Преобразование стандартного вида адреса в геокоординаты
- •Получение геокоординат движущегося объекта
- •Анализ пространственных данных с помощью geopy и Shapely
- •Поиск ближайшего объекта
- •Поиск объектов в определенной области
- •Объединение двух подходов
- •Упражнение № 15: совершенствование алгоритма подбора машины
- •Получение непространственных характеристик
- •Объединение датасетов с пространственными и непространственными данными
- •Выводы
- •Глава 10. Анализ данных временных рядов
- •Регулярные и нерегулярные временные ряды
- •Общие методы анализа временных рядов
- •Вычисление процентных изменений
- •Вычисление скользящего окна
- •Вычисление процентного изменения скользящего среднего
- •Многомерные временные ряды
- •Обработка многомерных временных рядов
- •Анализ зависимости между переменными
- •Выводы
- •Глава 11. Получение инсайтов из данных
- •Ассоциативные правила
- •Поддержка
- •Доверие
- •Лифт
- •Алгоритм Apriori
- •Создание датасета с транзакциями
- •Определение часто встречающихся наборов
- •Генерирование ассоциативных правил
- •Визуализация ассоциативных правил
- •Получение полезных инсайтов из ассоциативных правил
- •Генерирование рекомендаций
- •Планирование скидок на основе ассоциативных правил
- •Выводы
- •Глава 12. Машинное обучение для анализа данных
- •Почему машинное обучение?
- •Типы машинного обучения
- •Обучение с учителем
- •Обучение без учителя
- •Как работает машинное обучение
- •Данные для обучения
- •Статистическая модель
- •Неизвестные данные
- •Пример анализа тональности: классификация отзывов о товарах
- •Получение отзывов о товарах
- •Очистка данных
- •Разделение и преобразование данных
- •Обучение модели
- •Оценка модели
- •Упражнение № 19: расширение набора примеров
- •Прогнозирование тенденций фондового рынка
- •Получение данных
- •Извлечение признаков из непрерывных данных
- •Генерирование выходной переменной
- •Обучение и оценка модели
- •Выводы
8
Визуализация
Графические данные более наглядны, чем сухие
цифры. Например, можно создать линейный график,
отображающий изменение цены акции с течением
времени, или отследить интерес к статьям на сайте с помощью гистограммы ежедневных просмотров каждой из них. Визуализация такого рода поможет сразу же рас-
познать тенденции в данных.
В этой главе приводится обзор самых распространенных типов визуализации данных и рассказывается, как строить графики с помощью Matplotlib, популярной библиотеки Python. Мы также рассмотрим, как интегрировать Matplotlib с pandas и как создавать карты с помощью библиотек Matplotlib и Cartopy.
Распространенные способы визуализации
Существует несколько типов диаграмм для визуализации данных: линейные, столбчатые, круговые и гистограммы. В данном разделе мы обсудим все эти типы, а также исследуем типичные примеры использования каждого из них.
Линейные диаграммы
Линейные диаграммы, также известные как линейные графики, полезны, когда нужно проиллюстрировать тенденции в данных за определенный период
Распространенные способы визуализации 171
времени. На линейной диаграмме столбец меток времени датасета располагается вдоль оси x, а один или несколько числовых столбцов — по оси y.
В качестве примера рассмотрим веб-сайт, на котором пользователи могут просматривать различные статьи. Можно создать график статьи, где по оси x будет отображаться определенное количество дней, а по оси y — просмотры в каждый из этих дней. Такой график показан на рис. 8.1.
20
10
0 |
|
|
|
|
|
|
|
|
|
24/12 25/12 |
26/12 |
27/12 |
28/12 29/12 |
30/12 |
31/12 |
01/01 02/01 |
03/01 04/01 |
05/01 |
06/01 |
Рис. 8.1. Линейный график изменения количества просмотров статьи с течением времени
Можно наложить несколько параметров на одну линейную диаграмму, отображая каждый из них линией своего цвета, чтобы выявить корреляцию между ними. Например, на рис. 8.2 в дополнение к количеству просмотров статьи показано количество уникальных пользователей сайта в каждый из дней.
|
|
|
6 |
20 |
|
|
4 |
10 |
2 |
0 |
|
|
|
|
|
24/12 25/12 26/12 |
27/12 |
28/12 |
29/12 |
30/12 31/12 |
01/01 02/01 03/01 04/01 05/01 06/01 |
Рис. 8.2. Линейный график, показывающий взаимосвязь между параметрами |
Левая ось y на этом графике показывает количество просмотров статьи, а правая ось y — количество уникальных посетителей. Наложение данных по обоим
172 Глава 8. Визуализация
параметрам наглядно демонстрирует общую корреляцию между количеством просмотров и уникальными посетителями.
ПРИМЕЧАНИЕ
Просмотры статей можно также отображать на гистограммах. Гистограммы мы обсудим позже в этом же разделе.
Столбчатые диаграммы
Столбчатые диаграммы, также называемые столбчатыми графиками, отображают категориальные данные с помощью прямоугольных столбиков с высотой, пропорциональной значениям представляемых данных, что позволяет сравнивать категории. Для примера рассмотрим значения, представляющие совокупный годовой объем продаж компании в разных регионах:
Новая Англия |
$882 703 |
Северо-восток |
$532 648 |
Средний Запад |
$714 406 |
|
|
На рис. 8.3 показана столбчатая диаграмма с данными о продажах.
Г а а
П а
800 000
600 000
400 000
200 000
0 |
Н а А |
С- |
С За а |
|
Рис. 8.3. Столбчатая диаграмма сравнения категориальных данных
Распространенные способы визуализации 173
На этом графике по оси y отображаются сравнительные показатели продаж для регионов, расположенных на оси x.
Круговые диаграммы
Круговые диаграммы иллюстрируют процентное соотношение категорий в датасете. На рис. 8.4 показаны объемы продаж из предыдущего примера в виде круговой диаграммы.
П а а
Н а А
41.4%
25%
С-
33.5%
С За а
Рис. 8.4. Круговая диаграмма с процентным соотношением категорий в виде круговых секторов
Размер сектора здесь дает наглядное представление о доле вклада каждой категории в общую картину. Можно с легкостью сравнить продажи в каждом регионе. Такая диаграмма эффективна, когда каждый из секторов занимает значительную часть круга, но как можно догадаться, круговая диаграмма не лучший выбор, если нужно отобразить очень маленькие сектора. Например, сектор, составляющий 0.01% от целого, может быть даже не виден на диаграмме.
Гистограммы
Гистограммы отображают частотные распределения, то есть сколько раз определенное значение либо диапазон значений встречается в датасете. Каждое значение (или итоговый показатель) представлено вертикальным столбцом, высота которого соответствует частоте этого значения. Например,