• формат pdf
  • размер 17,70 МБ
  • добавлен 1 апреля 2015 г.
Хейдт Майкл, Груздев Артём. Изучаем Pandas
М.: ДМК Пресс.
Предисловие.
О содержании книги.
Что необходимо для чтения этой книги.
На кого рассчитана эта книга.
Соглашения.
Отзывы.
Поддержка клиентов.
Загрузка программного кода примеров.
Опечатки.
Нарушение авторских прав.
Вопросы.
Библиотека pandas и анализ данных.
Знакомство с библиотекой pandas.
Обработка данных, анализ, наука и библиотека pandas.
Обработка данных.
Анализ данных.
Наука о данных.
Предназначение библиотеки pandas.
Процесс анализа данных.
Процесс.
Взаимосвязь между книгой и процессом анализа данных.
Понятия «данные» и «анализ» в контексте нашего знакомства с библиотекой pandas.
Типы данных.
Переменные.
Временные ряды.
Общие понятия анализа и статистики.
Другие библиотеки Python, работающие вместе с библиотекой pandas.
Численные и научные вычисления – NumPy и SciPy.
Статистический анализ – StatsModels.
Машинное обучение – scikit-lea.
PyMC – стохастическое байесовское моделирование.
Визуализация данных – matplotlib и seabo.
Выводы.
Запуск библиотеки pandas.
Установка Anaconda.
Ipython и Jupyter Notebook.
Ipython.
Jupyter Notebook.
Знакомство со структурами данных библиотеки pandas – Series и DataFrame.
Импорт pandas.
Объект Series.
Объект DataFrame.
Загрузка данных из Csv-файла в объект DataFrame.
Визуализация.
Выводы.
Представление одномерных данных с помощью объекта series.
Настройка библиотеки pandas.
Создание объекта Series.
Создание объекта Series с помощью питоновских списков и словарей.
Создание объекта Series с помощью функций NumPy.
Создание объекта Series с помощью скалярного значения.
Свойства .index и .values.
Размер и форма объекта Series.
Установка индекса во время создания объекта Series.
Использование методов .head(), .tail() и .take() для вывода значений.
Получение значений в объекте Series по метке или позиции.
Поиск по метке с помощью оператора [] и свойства .ix[].
Явный поиск по позиции с помощью свойства .iloc[].
Явный поиск по меткам с помощью свойства .loc[].
Создание срезов объекта Series.
Выравнивание данных по меткам индекса.
Выполнение логического отбора.
Переиндексация объекта Series.
Модификация объекта Series на месте.
Выводы.
Представление табличных и многомерных данных с помощью объекта dataframe.
Настройка библиотеки pandas.
Создание объектов DataFrame.
Создание объекта DataFrame на основе результатов функций NumPy.
Создание объекта DataFrame с помощью питоновского словаря и объектов Series.
Создание объекта DataFrame на основе Csv-файла.
Доступ к данным внутри объекта DataFrame.
Отбор столбцов в объекте DataFrame.
Отбор строк в объекте DataFrame.
Поиск скалярного значения по метке и позиции с помощью .at[] и .iat[].
Создание среза датафрейма с помощью оператора [].
Логический отбор строк.
Одновременный отбор строк и столбцов.
Выводы.
Выполнение операций над объектом dataframe и его содержимым.
Настройка библиотеки pandas.
Переименование столбцов.
Добавление новых столбцов с помощью оператора [] и метода .insert().
Добавление столбцов за счет расширения датафрейма.
Добавление столбцов с помощью конкатенации.
Переупорядочивание столбцов.
Замена содержимого столбца.
Удаление столбцов.
Присоединение новых строк.
Конкатенация строк.
Добавление и замена строк за счет расширения датафрейма.
Удаление строк с помощью метода .drop().
Удаление строк с помощью логического отбора.
Удаление строк с помощью среза.
Выводы.
Индексация данных.
Настройка библиотеки pandas.
Важность применения индексов.
Типы индексов библиотеки pandas.
Основной тип Index.
Индексы Int64Index и RangeIndex, в качестве меток используются целые числа.
Индекс Float64Index, в качестве меток используются числа с плавающей точкой.
Представление дискретных интервалов с использованием IntervalIndex.
Категории в качестве индекса – CategoricalIndex.
Индексация по датам и времени с помощью DatetimeIndex.
Индексация периодов времени с помощью PeriodIndex.
Работа с индексами.
Создание и использование индекса в объекте Series или объекте DataFrame.
Отбор значений с помощью индекса.
Преобразование данных в индекс и получение данных из индекса.
Переиндексация объекта библиотеки pandas.
Иерархическая индексация.
Выводы.
Категориальные данные.
Настройка библиотеки pandas.
Создание категориальных переменных.
Переименование категорий.
Добавление категорий.
Удаление категорий.
Удаление неиспользуемых категорий.
Установка категорий.
Вычисление описательных статистик для категориальной переменной.
Обработка школьных оценок.
Выводы.
Численные и статистические методы.
Настройка библиотеки pandas.
Применение численных методов к объектам библиотеки pandas.
Выполнение арифметических операций над объектами DataFrame или Series.
Вычисление количества значений.
Определение уникальных значений (и их встречаемости).
Вычисление минимума и максимума.
Вычисление n наименьших значений и n наибольших значений.
Вычисление накопленных значений.
Выполнение статистических операций c объектами библиотеки pandas.
Получение итоговых описательных статистик.
Измерение центральной тенденции: среднее, медиана и мода.
Вычисление дисперсии и стандартного отклонения.
Вычисление ковариации и корреляции.
Дискретизация и квантилизация данных.
Вычисление ранга значений.
Вычисление процентного изменения для каждого наблюдения серии.
Выполнение операций со скользящим окном.
Создание случайной выборки данных.
Выводы.
Загрузка данных.
Настройка библиотеки pandas.
Работа с Csv-файлами и текстовыми/табличными данными.
Исследование Csv-файла.
Чтение Csv-файла в датафрейм.
Указание индекса столбца при чтении Csv-файла.
Вывод и спецификация типа данных.
Указание имен столбцов.
Указание конкретных столбцов для загрузки.
Сохранение датафрейма в Csv-файл.
Работа с данными, в которых используются разделители полей.
Обработка загрязненных данных, в которых используются разделители полей.
Чтение и запись данных в формате Excel.
Чтение и запись Json-файлов.
Чтение Html-файлов из Интернета.
Чтение и запись Hdf5-файлов.
Загрузка Csv-файлов из Интернета.
Чтение из базы данных Sql и запись в базу данных Sql.
Загрузка данных с удаленных сервисов.
Загрузка Базы данных по экономической статистике Федерального резервного банка Сент.
Луиса.
Загрузка данных Кеннета Френча.
Загрузка данных Всемирного банка.
Выводы.
Приведение данных в порядок.
Настройка библиотеки pandas.
Что такое приведение данных в порядок?
Как работать с пропущенными данными.
Поиск значений NaN в объектах библиотеки pandas.
Удаление пропущенных данных.
Обработка значений NaN в ходе арифметических операций.
Заполнение пропущенных данных.
Прямое и обратное заполнение пропущенных значений.
Заполнение с помощью меток индекса.
Выполнение интерполяции пропущенных значений.
Обработка дублирующихся данных.
Преобразование данных.
Сопоставление значений другим значениям.
Замена значений.
Применение функций для преобразования данных.
Выводы.
Объединение, связывание и изменение формы данных.
Настройка библиотеки pandas.
Конкатенация данных, расположенных в нескольких объектах.
Понимание семантики конкатенации, принятой по умолчанию.
Переключение осей выравнивания.
Определение типа соединения.
Присоединение вместо конкатенации.
Игнорирование меток индекса.
Слияние и соединение данных.
Слияние данных, расположенных в нескольких объектах.
Настройка семантики соединения при выполнении слияния.
Поворот данных для преобразования значений в индексы и наоборот.
Состыковка и расстыковка данных.
Состыковка с помощью неиерархических индексов.
Расстыковка с помощью иерархических индексов.
Расплавление данных для преобразования «широкого» формата в «длинный» и наоборот.
Преимущества использования состыкованных данных.
Выводы.
Агрегирование данных.
Настройка библиотеки pandas.
Обзор схемы «разделение – применение - объединение».
Данные для примеров.
ение данных.
Группировка по значениям отдельного столбца.
Просмотр результатов группировки.
Группировка по нескольким столбцам.
Группировка по уровням индекса.
Применение агрегирующих функций, преобразований и фильтров.
Применение агрегирующих функций к группам.
Преобразование групп данных.
Общий процесс преобразования.
Заполнение пропущенных значений групповым средним.
Вычисление нормализованных z-значений с помощью преобразования.
Исключение групп из процедуры агрегирования.
Выводы.
Анализ временных рядов.
Настройка библиотеки pandas.
Представление дат, времени и интервалов.
Объекты datetime, day и time.
Создание временной метки с помощью объекта Timestamp.
Использование объекта Timedelta для представления временного интервала.
Введение во временные ряды.
Индексация с помощью объекта DatetimeIndex.
Создание временного ряда с определенной частотой.
Вычисление новых дат с помощью смещений.
Представление временных интервалов с помощью смещений дат.
Привязанные смещения.
Представление промежутков времени с помощью объектов Period.
Создание временного интервала с помощью объекта Period.
Индексация с помощью объекта PeriodIndex.
Обработка праздников с помощью календарей.
Нормализация временных меток с помощью часовых поясов.
Операции с временными рядами.
Опережение и запаздывание.
Преобразование частоты временного ряда.
Увеличение или уменьшение шага дискретизации временного ряда.
Применение к временному ряду операций на основе скользящего окна.
Выводы.
Визуализация.
Настройка библиотеки pandas.
Основные инструменты визуализации.
Создание графиков временных рядов.
Настройка внешнего вида графика временного ряда.
Виды графиков, часто использующиеся в статистическом анализе данных.
Демонстрация относительных различий с помощью столбиковых диаграмм.
Визуализация распределений данных с помощью гистограмм.
Визуализация распределений категориальных данных с помощью ящичных диаграмм с усами.
Отображение накопленных итогов с помощью площадных диаграмм.
Визуализация взаимосвязи между двумя переменными с помощью диаграммы рассеяния.
Визуализация оценок распределения с помощью графика ядерной оценки плотности.
Визуализация корреляций между несколькими переменными с помощью матрицы диаграмм.
рассеяния.
Отображение взаимосвязей между несколькими переменными с помощью тепловых карт.
Размещение нескольких графиков на одном рисунке вручную.
Выводы.
Приложение 1. Советы по оптимизации вычислений в библиотеке pandas.
Базовое итерирование.
Итерирование с помощью метода .iterrows().
Более лучший способ итерирования с помощью метода .apply().
Векторизация c помощью объектов Series.
Векторизация с помощью массивов NumPy.
Выводы.
Приложение 2. Улучшение производительности pandas (из официального пособия по библиотеке pandas).
Написание расширений на языке C для pandas.
«Чистый» Python.
Обычный Cython.
Использование библиотеки Numba.
Jit.
Vectorize.
Вычисление выражений с помощью функции eval().
Поддерживаемый синтаксис.
Примеры использования функции eval().
Метод DataFrame.eval().
Приложение 3. Используем pandas для больших данных.
Работаем с данными бейсбольных игр.
Внутреннее представление датафрейма.
Подтипы.
Оптимизация числовых столбцов с помощью понижающего преобразования.
Сравнение способов хранения числовых и строковых значений.
Оптимизация типов object с помощью типа category.
Задаем типы во время считывания данных.
Выводы.
Приложение 4. Пример предварительной подготовки данных в pandas (конкурсная.
Задача tinkoff data science challenge).
Считывание CSV-файла в объект DataFrame.
Преобразование типов переменных.
Переименование категорий переменных.
Обработка редких категорий.
Разбиение набора данных на обучающую и контрольную.
Импутация пропусков.
Конструирование новых признаков.
Создание переменной, у которой значения основаны на значениях исходной переменной.
Создание бинарной переменной на основе значений количественных переменных.
Создание переменной, у которой каждое значение - среднее значение количественной.
переменной, взятое по уровню категориальной переменной.
Возведение в квадрат.
Дамми-кодирование (One-hot Encoding).
Кодирование контрастами (Effect Coding).
Присвоение категориям в лексикографическом порядке целочисленных значений, начиная С.
(Label Encoding).
Создание переменной, у которой каждое значение – частота наблюдений в категории.
переменных (Frequency Encoding).
Кодирование вероятностями зависимой переменной (Likelihood Encoding).
Присвоение категориям в зависимости от порядка их появления целочисленных значений,
начиная с 1 ( Ordinal Encoding).
Бинарное кодирование (Binary Encoding).
Создание переменных-взаимодействий.
Категоризация (биннинг) количественной переменной.
Дамми-кодирование и подготовка массивов для обучения и проверки.
Выбор метрики качества.
Построение моделей случайного леса, градиентного бустинга и логистической регрессии.
Математический аппарат логистической регрессии.
Отдельная предварительная подготовка данных для логистической регрессии.
Построение логистической регрессии в библиотеке H2o.
Приложение 5. Пример предварительной подготовки данных в pandas (конкурсная.
Задача предсказания отклика отп банка).
Этап I. Построение модели на обучающей выборке - части исторической выборки и ее проверка.
на контрольной выборке - части исторической выборки.
I.1. Считывание CSV-файла, содержащего исторические данные, в объект DataFrame.
I.2. Преобразование типов переменных.
I.3. Импутация пропусков, не использующая результаты математических вычислений (импутация, которую можно выполнять до/после разбиения на обучение/контроль).
I.4. Обработка редких категорий.
I.5. Конструирование новых признаков, не использующее результаты математических вычислений (которое можно выполнять до/после разбиения на обучение/контроль).
I.6. Разбиение на обучающую и контрольную выборки.
I.7. Импутация пропусков, использующая статистики – результаты математических.
вычислений (ее нужно выполнять после разбиения на обучение и контроль).
I.8. Поиск преобразований переменных, максимизирующих нормальность распределения (дается в сокращенном виде).
I.9. Биннинг как один способов конструирования новых признаков, использующий результаты математических вычислений (нужно выполнять только после разбиения на обучение И контроль).
I.10. Выполнение преобразований, исходя из информации гистограмм распределения И.
графиков квантиль-квантиль.
I.11. Конструирование новых признаков.
I.12. Стандартизация.
I.13. Дамми-кодирование.
I.14. Подготовка массивов признаков и массивов меток зависимой переменной.
I.15. Построение логистической регрессии с помощью класса LogisticRegression библиотеки.
scikit-lea.
I.16. Настройка гиперпараметров логистической регрессии с помощью класса GridSearchCV.
I.17. Отбор признаков для логистической регрессии с помощью случайного леса (класса RFE).
I.18. Отбор признаков для логистической регрессии с помощью BorutaPy.
I.19. Проблема дисбаланса классов.
Этап Ii. Построение модели на всей исторической выборке и применение к новым данным.
Ii.1. Считывание Csv-файла, содержащего исторические данные, в объект DataFrame.
Ii.2. Предварительная обработка исторических данных.
Ii.3. Обучение модели логистической регрессии на всех исторических данных.
Ii.4. Считывание Csv-файла, содержащего новые данные, в объект DataFrame.
Ii.5. Предварительная обработка новых данных.
Ii.6. Применение модели логистической регрессии, построенной на всех исторических данных, к новым данным.
Приложение 6. Работа с датами и строками.
Работа с датами.
Работа со строками.
Изменение регистра строк.
Изменение строкового значения.
Определение пола клиента по отчеству.
Удаление лишних символов из строк.
Удаление повторяющихся строк.
Извлечение нужных символов из строк.
Приложение 7. Работа с предупреждением settingwithcopywaing в библиотеке.
Pandas.
Что представляет из себя предупреждение SettingWithCopyWaing?
Присваивание по цепочке (chained assignment).
Скрытая цепочка.
Советы и рекомендации по работе с предупреждением SettingWithCopyWaing.
Однотипные и многотипные объекты.
Ложные срабатывания.
Подробнее о присваивании по цепочке.
Ложные пропуски.
И вновь о скрытой цепочке.
Приложение 8. От pandas к scikit-lea – Новый подход к управлению рабочими.
Процессами.
Новый уровень интеграции Scikit-Lea с Pandas.
Краткое резюме и цели статьи.
Знакомство с классом ColumnTransformer и обновленным классом OneHotEncoder.
Задача предсказания цен на недвижимость с Kaggle.
Исследуем данные.
Удаление зависимой переменной из обучающего набора.
Кодировка отдельного столбца со строковыми значениями.
Scikit-Lea – только двумерные данные.
Импортируем класс, создаем экземпляр класса - модель, обучаем модель – трехэтапный.
процесс работы с моделью.
У нас NumPy массив. Где имена столбцов?
Проверка корректности первой строки данных.
Используем метод .inverse_transform() для автоматизации данной операции.