Автор(ы): Андрей Кудлай
Курс будет интересен в первую очередь тем программистам, которые желают продолжить изучение языка программирования Python. Состоит из четырех частей и включает в себя 54 урока общей продолжительностью более 17 часов видео, а также бонусная часть по основам Python с полного нуля.
Python – один из наиболее популярных языков программирования для анализа данных. Во многом это обусловлено тем, что Python является достаточно простым и одновременно очень мощным средством, позволяющим решать широкий круг задач. Кроме того, для анализа данных на Python имеется достаточно много открытых библиотек. Одной из таких библиотек является Pandas, которая предназначена для обработки и первичного анализа данных. Также эта библиотека может использоваться и для других задач по работе с данными.
Первая часть курса посвящена настройке и работе с окружением. Поскольку Pandas – это библиотека на Python, соответственно, потребуется установить Python на компьютер, если его еще нет.
Также потребуется сама библиотека Pandas. И здесь будут рассмотрены два варианта: установка виртуального окружения и необходимых библиотек с нуля и установка дистрибутива Anaconda, который включает весь необходимый набор библиотек.
Также для работы потребуется редактор. Можно выбрать любой привычный, но в среде Python-аналитиков одним из наиболее популярных вариантов является использованием Jupyter Notebook. Jupyter Notebook – это веб-оболочка для IPython, который в свою очередь является интерактивной оболочкой для Python.
Использование Jupyter Notebook имеет ряд преимуществ по сравнению с обычными редакторами кода или IDE. Во-первых, писать код в Jupyter Notebook можно в специальных ячейках кода и при этом можно выполнять каждую из ячеек в отдельности.
Во-вторых, Jupyter Notebook позволяет экспортировать результаты работы в обычный файл HTML, что позволит продемонстрировать как код, так и результат его исполнения на любой машине без необходимости устанавливать Python и любое другое специальное ПО.
Также в Jupyter Notebook можно использовать дополнительные возможности IPython, например, т.н. магические команды, позволяющие сократить написание кода.
В первом уроке курса рассмотрены организационные моменты, структура и содержание курса. Из урока вы узнаете об основных источниках документации, о библиотеке Pandas, а также необходимых программах для дальнейшей работы. Также в уроке будет показана установка Python для дальнейшей работы.
Одним из вариантов дальнейшей работы будет установка окружения, точнее, виртуального окружения. При работе с проектом рекомендуется устанавливать необходимые библиотеки не глобально, а в специально установленное виртуальное окружение. Это позволит для разных проектов использовать разные версии библиотек при необходимости и избежать возможного конфликта версий. В уроке будет показана установка виртуального окружения, а также установка библиотеки Pandas и Jupyter Notebook.
Вторым вариантом дальнейшей работы будет установка дистрибутива Anaconda, который предлагает весь необходимый для работы набор библиотек. В уроке будет показана установка Anaconda, а также начало работы с ней.
Одно из преимуществ работы с Jupyter Notebook заключается в возможности использования языка разметки Markdown для комментирования вашей работы. Вместо простых комментариев на Python мы можем использовать всю мощь языка разметки, что позволит сопроводить код заголовками, списками, акцентированными выделениями ключевых моментов, ссылками на внешние ресурсы и даже изображениями и видео. В данном уроке будут рассмотрены основы языка разметки Markdown.
При работе в Jupyter Notebook можно использовать курсор и меню редактора. Но можно использовать целый набор горячих клавиш для упрощения и ускорения работы. Из урока вы узнаете о наиболее полезных для работы горячих клавишах Jupyter Notebook.
Поскольку Jupyter Notebook является веб-оболочкой IPython, он поддерживает его волшебные команды, некоторые из которых и будут рассмотрены в данном уроке. Например, если вам нужно измерить время выполнения того или иного кода, вам не нужно писать для этого соответствующий код на Python, достаточно запустить соответствующую магическую команду и Jupyter покажет результат.
Со второй части курса начнется изучение непосредственно библиотеки Pandas. И из шести уроков данной части вы узнаете об одной из структур данных библиотеки Pandas – Series (серии). Pandas работает с табличными данными, а таблицы, как известно, состоят из строк и столбцов. Серия – это, по сути, столбец табличных данных.
В уроках данной части будет показано создание серий, работа со значениями серий, накладывание фильтров на серии, которые позволят отбирать значения по различным условиям, использование атрибутов и методов, которые Pandas предлагает для работы с типом Series и т.д.
Первый урок будет посвящен знакомству с типом Series. Из урока вы узнаете, как создать серию в Pandas, используя метод конструктора, а также узнаете о том, что такое значения и индексы в Pandas.
Структура данных Series в Pandas похожа на массивы, однако, имеет некоторые отличия при работе со значениями. Об этих отличиях и будет рассказано в предлагаемом уроке.
Одной из наиболее мощных возможностей, предлагаемых библиотекой Pandas, является возможность накладывания фильтров, проще говоря, возможность применения условий для выборки нужных значений. Эта возможность напоминает условия языка запросов SQL. И в дальнейшем мы еще не раз в этом убедимся при работе с другой структурой данных – DataFrame.
В следующих уроках вы познакомитесь с небольшой долей атрибутов и методов, которые предлагает Pandas как для работы с сериями, так и для работы с датафреймами. На самом деле таких атрибутов и методов сотни. Все их рассмотреть невозможно, да собственно в этом и нет смысла, но на протяжении курса будут рассмотрены те, которые используются наиболее часто и действительно пригодятся вам в работе.
В следующих уроках вы познакомитесь с небольшой долей атрибутов и методов, которые предлагает Pandas как для работы с сериями, так и для работы с датафреймами. На самом деле таких атрибутов и методов сотни. Все их рассмотреть невозможно, да собственно в этом и нет смысла, но на протяжении курса будут рассмотрены те, которые используются наиболее часто и действительно пригодятся вам в работе.
На протяжении курса вам будет предложено много домашних заданий для закрепления пройденного материала. В последнем уроке второй части курса вы найдете первое домашнее задание и, конечно же, вариант его решения, который вы сможете сравнить со своим решением.
В этой части будет изучаться ключевая структура данных в Pandas – это DataFrame.
Объект DataFrame можно представить в виде таблицы и на самом деле это действительно табличная структура данных. Если Series – это столбец, то DataFrame – это совокупность объектов Series, т.е. некоторое множество столбцов.
Поскольку DataFrame – это табличная структура данных, то неудивительно, что именно DataFrame является ключевой структурой данных Pandas, ведь таблицы, как ничто иное, прекрасно подходят для представления анализируемых данных.
В таблицах легко представить большие массивы данных, которые будут некоторым образом упорядочены и визуально понятны для восприятия. В уроках данной части курса вы найдете как теорию, так и много практики.
Здесь будут рассмотрены такие темы, как чтение данных из различных источников в DataFrame, первичный анализ данных в полученном датафрейме, обработка и фильтрация данных, применение встроенных и пользовательских функций к данным, работа со значениями, работа с типами данных, группировка и сортировка данных, объединение нескольких датафреймов, запись обработанных данных в различные типы файлов и т.д.
Первый урок будет посвящен знакомству с типом DataFrame. Из урока вы узнаете, как создать датафрейм в Pandas, используя метод конструктора.
В предыдущем уроке был показан вариант создания датафрейма с помощью конструктора. Однако, на практике мы чаще всего не создаем датафрейм с наполнением данных вручную, а получаем датафрейм с данными из внешнего источника, чаще всего из файлов CSV или Excel. В результате можно быстро получить датафрейм с огромными массивами данных для дальнейшей работы. В уроке будут показаны способы чтения данных и получения датафрейма из внешнего источника данных.
После получения данных из внешнего источника в DataFrame необходимо провести первичный анализ полученных данных, ведь получить можно миллионы строк данных, которые вы видите впервые. В частности, при первичном анализе можно узнать общее число строк и столбцов, наименование столбцов, количество непустых и пустых значений в каждом из столбцов, тип данных столбца и т.п. Все эти данные можно получить очень быстро. Как это сделать – вы узнаете из данного урока.
Используя Jupyter Notebook, мы используем его настройки для работы с датафреймами, которые имеют некоторые ограничения. Например, при распечатке датафрейма Jupyter показывает не весь датафрейм, а лишь некоторую его часть, заданную в настройках часть его строк. При необходимости можно изменить эти настройки. Из урока вы узнаете о некоторых настройках, которые могут пригодиться в дальнейшей работе.
Одними из полезных атрибутов для выборки строк и значений из датафреймов являются атрибуты loc и iloс. С помощью этих атрибутов можно получить доступ к нужной строке или набору строк. В уроке вы найдете различные варианты применения указанных атрибутов.
В данном уроке будет предложено домашнее задание для закрепления пройденного материала, а также вариант решения этого задания, который вы можете сравнить со своим решением.
При работе с датафреймами одной из частых операций является удаление и добавление колонок. Не все колонки с данными, полученные из внешнего источника, нам нужны, и их можно удалить, освободив тем самым память. Также часто требуется добавить какую-либо колонку, например, вычисляемую колонку, значения которой могут быть получены на основе значений других колонок. Из урока вы узнаете, как добавлять и удалять столбцы из датафрейма.
Получая данные из внешнего источника в датафрейм, мы получаем также и названия столбцов, которые не всегда удобны в работе. Из урока вы узнаете, как можно переименовать колонки датафрейма.
Когда в датафрейм приходит пустое значение, Pandas заменяет его на NaN (Not a number). Это специальное значение, которое желательно каким-либо образом обработать и здесь возможны различные варианты. Например, можно заменить NaN на какое-либо значение по умолчанию или же просто удалить строку с отсутствующими значениями. В уроке вы найдете примеры работы с отсутствующими значениями в DataFrame.
До текущего урока данные в датафреймы получались из файлов CSV. Однако, Pandas умеет работать и с другими источниками данных, например, с файлами Excel. Из урока вы узнаете, как получать данные из Excel, и как записывать данные в файлы различных форматов.
В данном уроке будет предложено домашнее задание для закрепления пройденного материала, а также вариант решения этого задания, который вы можете сравнить со своим решением.
Значительная доля данных в датафреймах может быть представлена в виде всевозможных строк. При этом часто может потребовать осуществить поиск каких-то конкретных строк или же поиск строк по маске. Может потребовать проделать какие-либо операции над строками. Все это можно проделать с помощью десятков методов для работы со строками, которые предлагает Pandas.
В данном уроке будет рассмотрена одна из наиболее мощных возможностей в Pandas – применение функций с помощью метода apply. В уроке вы найдете различные варианты использования метода apply и применения встроенных и собственных функция для обработки данных.
При работе с датафреймами на практике очень часто используется возможность группировки данных. Благодаря этой возможности мы можем отобрать данные, которые относятся только к какому-то конкретному объекту, и применить к этим данным агрегирующие функции, позволяющие получить какую-либо статистическую информацию.
В данном уроке будет предложено домашнее задание для закрепления пройденного материала, а также вариант решения этого задания, который вы можете сравнить со своим решением.
В данном уроке будет продолжена тема группировки данных и будет показана возможность наложения фильтров на сгруппированные данные. С помощью наложенных фильтров можно получать не все группы данных, а только группы, удовлетворяющие условиям фильтра.
В предлагаемом уроке вы найдете варианты сортировки данных датафрейма. Это может быть сортировка в прямом или обратном порядке, сортировка по отдельному столбцу или даже по нескольким колонкам данных.
На практике часто приходится работать не с одним источником данных, а сразу с несколькими. Например, мы можем получить для обработки годовую выгрузку данных с разбивкой по месяцам, т.е. 12 отдельных файлов с данными. Обрабатывать каждый из файлов в отдельности при этом – не вариант. Нужно свести все файлы в один датафрейм и Pandas позволяет проделать эту операцию буквально в несколько строк кода и минуту времени.
В данном уроке будет предложено домашнее задание для закрепления пройденного материала, а также вариант решения этого задания, который вы можете сравнить со своим решением.
Для тех, кто работал с анализом данных в Excel, может быть известен термин сводные таблицы. Сводные таблицы позволяют обобщить некоторые данные. Pandas также предлагает возможность создания сводных таблиц и в данном уроке вы познакомитесь с этой возможностью.
В данных уроках будет предложено домашнее задание для закрепления пройденного материала, а также вариант решения этого задания, который вы можете сравнить со своим решением.
В данных уроках будет предложено домашнее задание для закрепления пройденного материала, а также вариант решения этого задания, который вы можете сравнить со своим решением.
В одном из предыдущих уроков была рассмотрена тема объединения датафреймов с помощью метода concat. Это простое объединение абсолютно всех данных, которое похоже на операцию UNION в SQL. Часто необходимо производить соединение данных на основе определенных значений в этих данных. Такая возможность также есть в Pandas и похожа она на операцию JOIN в SQL.
В данном уроке будет предложено домашнее задание для закрепления пройденного материала, а также вариант решения этого задания, который вы можете сравнить со своим решением.
В этом уроке будут рассмотрены основные типы данных, которыми оперирует Pandas. Это достаточно важная тема, которая связана с оптимизацией работы с датафреймами, а также с оптимизацией использования памяти при работе с датафреймами.
В предлагаемом уроке вы познакомитесь с интересным типом данных Category, благодаря которому можно значительно сократить объем датафрейма в памяти, а также значительно ускорить обработку данных. Использование этого типа особенно актуально на больших объемах данных.
Еще одним типом данных, с которым нередко приходится работать, является тип данных Datetime. Преобразуя данные в этот тип, становится возможным использовать методы и атрибуты для работы с датой и временем. Например, можно получить из даты только число или месяц, можно получить день недели и т.д.
Последняя часть курса фактически будет исключительно практической. В этой части будут взяты файлы больших объемов, они будут обработаны и проанализированы. Как результат анализа, будут даны ответы на классические вопросы для тех или иных задач.
Например, при анализе продаж магазина будут даны ответы на такие вопросы, как:
Какой месяц лучший для продаж, а в каком месяце продажи были самыми низкими?
В какой день недели продажи лучше, а в какой хуже? При этом изначально в данных нет дня недели, а есть только дата и время.
В какие часы продажи наиболее высокие?
В какие часы больше всего сделано покупок?
В каком городе сделаны наибольшие продажи, а в каком – наименьшие, и почему?
Работая с данными часто необходимо не просто обработать данные и показать табличный результат, но и визуализировать этот результат графиком или диаграммой. Во многих случаях один взгляд на диаграмму сразу даст ответ на очевидные вопросы. В то же время простой взгляд на таблицу не сразу может дать такие ответы. В предлагаемой паре уроков вы познакомитесь с библиотекой Matplotlib, которая позволит построить необходимую диаграмму и настроить ее под заданные требования.
Работая с данными часто необходимо не просто обработать данные и показать табличный результат, но и визуализировать этот результат графиком или диаграммой. Во многих случаях один взгляд на диаграмму сразу даст ответ на очевидные вопросы. В то же время простой взгляд на таблицу не сразу может дать такие ответы. В предлагаемой паре уроков вы познакомитесь с библиотекой Matplotlib, которая позволит построить необходимую диаграмму и настроить ее под заданные требования.
В качестве первого задания у нас будет годовая отчетность продаж магазина в разных городах с разбивкой по месяцам. Соответственно, у нас будет 12 однотипных файлов, каждый из которых содержит сведения по продажам за определенный месяц. При этом каждый из файлов содержит десятки тысяч строк данных и в сумме у нас будет почти 200 тысяч строк данных. Задачей текущего урока будет объединение имеющихся 12 файлов в единый датафрейм данных.
При работе с любыми данными важно произвести первичный анализ и обработать пропуски в данных, заменив эти пропуски дефолтными значениями или же удалив строки с пустыми значениями. В предлагаемом уроке будут найдены и удалены строки с пустыми значениями.
Следующим этапом обработки данных является опциональное конвертирование типов данных. В нашем случае этот этап обязателен, поскольку в дальнейшем потребуется создание вычисляемых полей на основе существующих значений, для которых потребуются математические вычисления.
В полученном датафрейме имеются колонки цены товара и количества единиц проданного товара. Для того, чтобы в дальнейшем агрегировать корректное значение суммы продаж, необходимо получить произведение цены товара и его количества. Результат при этом нужно сохранить в отдельную колонку. Эта операция и будет проделана в данном уроке.
Для ответа на вопрос относительно лучшего и худшего месяцев для продаж, очевидно, нужно иметь колонку месяца в общем датафрейме. Такой колонки нет, но есть столбец с датой и временем покупки, из которого и можно получить месяц. В этом уроке будет реализована поставленная задача.
В предыдущем уроке была добавлена колонка месяца и теперь можно попытаться дать ответ на вопрос о лучшем и худшем месяце для продаж. Сделать это просто – достаточно сгруппировать данные по месяцам и агрегировать суммы продаж по колонке Total. Это и будет сделано в данном уроке.
Еще один вопрос, на который можно дать ответ при анализе подобных данных, это вопрос о лучших часах для продаж. При этом можно дать ответ о наибольших количествах продаж в определенные часы и наибольших суммах продаж в определенные часы. Эти данные могут на самом деле отличаться.
Следующий вопрос, на который будет дан ответ в предлагаемом уроке, - определение лучшего дня недели для продаж и, соответственно, худшего дня недели.
Последним вопросом для данного набора данных будет вопрос о городе, который сделал лучшие продажи за год. Как и в предыдущих случаях, ответ будет сопровождаться не только табличным выводом, но и будет произведена визуализация данных в виде диаграммы.
Второе практическое задание предполагает набор данных из более чем сотни файлов и почти 2 миллионов строк. Задачей текущего урока будет объединение всех этих файлов в единый датафрейм и экспорт полученных данных в единый файл для дальнейшей работы.
Массив данных в данном практическом задании представляет собой мужские и женские имена в США в период с 1880 по 2019 года. Задачей текущего урока будет получение диаграммы имен за указанный период, на которой будут представлены 2 линии: количество мужских и женских имен по годам.
Еще одной практической задачей может быть ответ на вопрос ТОП 10 женских и ТОП 10 мужских имен за весь период имеющейся выборки. В этом уроке будет показано решение озвученной задачи.
В последнем уроке курса будет показана установка пакета Qgrid, который сделает работу с датафреймами проще и удобнее.