- •Об авторе
- •О научном редакторе
- •От издательства
- •Введение
- •Использование 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: расширение набора примеров
- •Прогнозирование тенденций фондового рынка
- •Получение данных
- •Извлечение признаков из непрерывных данных
- •Генерирование выходной переменной
- •Обучение и оценка модели
- •Выводы
5
Работа с базами данных
База данных (БД) — это организованная коллекция
данных, к которой легко получить доступ, управлять
ею и обновлять. Даже если изначально в архитектуре
проекта нет БД, данные, проходящие через приложение, скорее всего, в какой-то момент будут обращаться к одной
или нескольким базам.
Продолжая обсуждение импортирования данных в Python-приложение, в этой главе мы рассмотрим, как работать с данными из БД. Приведенные примеры продемонстрируют, как получить доступ к данным, хранящимся в базах различных типов, и обрабатывать их. Мы также исследуем, как управлять БД, в которых язык SQL является основным инструментом работы с данными, и базами, для которых он таковым не является. Вы узнаете, как использовать Python для взаимодействия с несколькими популярными базами данных: MySQL, Regis и MongoDB.
Базы данных предоставляют множество преимуществ. Например, с их помощью можно сохранять данные между вызовами скрипта и эффективно обмениваться информацией между различными приложениями. Более того, языки баз данных помогают систематизировать данные и отвечать на вопросы о них. Кроме того, многие системы БД позволяют внедрять программный код в саму базу, что может повысить производительность, модульность и возможность повторного использования приложения. Например, в базе данных можно хранить trigger — часть кода, которая автоматически вызывается каждый раз, когда происходит конкретное событие, например добавление новой строки в таблицу.
108 Глава 5. Работа с базами данных
Базы данных могут быть реляционными и нереляционными (NoSQL). Реляционные базы данных имеют строго определенную структуру, реализованную
ввиде схемы для хранимых данных. Такой подход помогает обеспечить целостность, последовательность и общую точность данных. Однако у него есть и недостаток: реляционные БД плохо масштабируются при увеличении объема данных. А базы данных NoSQL, напротив, не накладывают ограничений на структуру хранимых данных, что обеспечивает большую гибкость, адаптивность и масштабируемость. В этой главе мы рассмотрим хранение и поиск данных как
вреляционных, так и в нереляционных базах данных.
Реляционные базы данных
Реляционные базы данных, также известные как базы данных из строк и столбцов, — самый распространенный сегодня тип БД. Они обеспечивают структурированное хранение данных. Подобно тому как список книг на Amazon имеет определенную структуру для хранения информации (с полями для названий книг, авторов, описаний, рейтингов и т. д.), данные, хранящиеся
вреляционной базе данных, должны соответствовать заранее определенной формальной схеме. Работа с реляционной БД начинается с разработки формальной схемы: вы определяете набор таблиц, каждая из которых состоит из нескольких полей (столбцов), и указываете, какой тип данных будет храниться
вкаждом поле. Также необходимо установить отношения между таблицами. После этого можно сохранять данные в базе, получать их или обновлять по мере необходимости.
Реляционные базы данных предназначены для оперативной вставки, обновления и/или удаления малых и больших объемов структурированных данных. Существует множество приложений, для которых такой тип БД будет лучшим выбором. В частности, реляционные базы данных хорошо подходят для систем обработки транзакций в реальном времени (OLTP, online transaction processing), которые обрабатывают большой объем операций множества пользователей.
Среди распространенных систем реляционных баз данных — MySQL, MariaDB, PostgreSQL. В этом разделе мы рассмотрим MySQL, — пожалуй, самую популярную в мире базу данных с открытым исходным кодом. На ее примере мы проиллюстрируем, как взаимодействовать с БД.
Вы узнаете, как настроить MySQL, создать новую базу данных, определить ее структуру и написать Python-скрипты для сохранения данных в базе и их получения.