Видеокурс "Обработка и анализ данных на Python. Основы Python с нуля". (Андрей Кудлай - Webformyself)

Это электронный видеокурс
45
Видеокурс
  • Автор(ы): Андрей Кудлай

    Курс будет интересен в первую очередь тем программистам, которые желают продолжить изучение языка программирования Python. Состоит из четырех частей и включает в себя 54 урока общей продолжительностью более 17 часов видео, а также бонусная часть по основам Python с полного нуля.

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

    • Часть №1. Окружение и основы Jupyter Notebook

    Первая часть курса посвящена настройке и работе с окружением. Поскольку Pandas – это библиотека на Python, соответственно, потребуется установить Python на компьютер, если его еще нет.

    Также потребуется сама библиотека Pandas. И здесь будут рассмотрены два варианта: установка виртуального окружения и необходимых библиотек с нуля и установка дистрибутива Anaconda, который включает весь необходимый набор библиотек.

    Также для работы потребуется редактор. Можно выбрать любой привычный, но в среде Python-аналитиков одним из наиболее популярных вариантов является использованием Jupyter Notebook. Jupyter Notebook – это веб-оболочка для IPython, который в свою очередь является интерактивной оболочкой для Python.

    Использование Jupyter Notebook имеет ряд преимуществ по сравнению с обычными редакторами кода или IDE. Во-первых, писать код в Jupyter Notebook можно в специальных ячейках кода и при этом можно выполнять каждую из ячеек в отдельности.

    Во-вторых, Jupyter Notebook позволяет экспортировать результаты работы в обычный файл HTML, что позволит продемонстрировать как код, так и результат его исполнения на любой машине без необходимости устанавливать Python и любое другое специальное ПО.

    Также в Jupyter Notebook можно использовать дополнительные возможности IPython, например, т.н. магические команды, позволяющие сократить написание кода.

    • Урок №1. Введение. Установка Python (15:45)

    В первом уроке курса рассмотрены организационные моменты, структура и содержание курса. Из урока вы узнаете об основных источниках документации, о библиотеке Pandas, а также необходимых программах для дальнейшей работы. Также в уроке будет показана установка Python для дальнейшей работы.

    • Урок №2. Установка виртуального окружения (13:38)

    Одним из вариантов дальнейшей работы будет установка окружения, точнее, виртуального окружения. При работе с проектом рекомендуется устанавливать необходимые библиотеки не глобально, а в специально установленное виртуальное окружение. Это позволит для разных проектов использовать разные версии библиотек при необходимости и избежать возможного конфликта версий. В уроке будет показана установка виртуального окружения, а также установка библиотеки Pandas и Jupyter Notebook.

    • Урок №3. Установка дистрибутива Anaconda (12:27)

    Вторым вариантом дальнейшей работы будет установка дистрибутива Anaconda, который предлагает весь необходимый для работы набор библиотек. В уроке будет показана установка Anaconda, а также начало работы с ней.

    • Урок №4. Язык разметки Markdown (29:33)

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

    • Урок №5. Горячие клавиши в Jupyter Notebook (29:33)

    При работе в Jupyter Notebook можно использовать курсор и меню редактора. Но можно использовать целый набор горячих клавиш для упрощения и ускорения работы. Из урока вы узнаете о наиболее полезных для работы горячих клавишах Jupyter Notebook.

    • Урок №6. Волшебные команды Jupyter Notebook (24:12)

    Поскольку Jupyter Notebook является веб-оболочкой IPython, он поддерживает его волшебные команды, некоторые из которых и будут рассмотрены в данном уроке. Например, если вам нужно измерить время выполнения того или иного кода, вам не нужно писать для этого соответствующий код на Python, достаточно запустить соответствующую магическую команду и Jupyter покажет результат.

    • Часть №2. Структура данных Series

    Со второй части курса начнется изучение непосредственно библиотеки Pandas. И из шести уроков данной части вы узнаете об одной из структур данных библиотеки Pandas – Series (серии). Pandas работает с табличными данными, а таблицы, как известно, состоят из строк и столбцов. Серия – это, по сути, столбец табличных данных.

    В уроках данной части будет показано создание серий, работа со значениями серий, накладывание фильтров на серии, которые позволят отбирать значения по различным условиям, использование атрибутов и методов, которые Pandas предлагает для работы с типом Series и т.д.

    • Урок №1. Series. Constructor (17:51)

    Первый урок будет посвящен знакомству с типом Series. Из урока вы узнаете, как создать серию в Pandas, используя метод конструктора, а также узнаете о том, что такое значения и индексы в Pandas.

    • Урок №2. Series. Работа со значениями (26:29)

    Структура данных Series в Pandas похожа на массивы, однако, имеет некоторые отличия при работе со значениями. Об этих отличиях и будет рассказано в предлагаемом уроке.

    • Урок №3. Фильтрация данных Series (17:10)

    Одной из наиболее мощных возможностей, предлагаемых библиотекой Pandas, является возможность накладывания фильтров, проще говоря, возможность применения условий для выборки нужных значений. Эта возможность напоминает условия языка запросов SQL. И в дальнейшем мы еще не раз в этом убедимся при работе с другой структурой данных – DataFrame.

    • Урок №4. Атрибуты и методы Series. Часть 1 (16:02)

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

    • Урок №5. Атрибуты и методы Series. Часть 2 (14:44)

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

    • Урок №6. Домашнее задание (09:40)

    На протяжении курса вам будет предложено много домашних заданий для закрепления пройденного материала. В последнем уроке второй части курса вы найдете первое домашнее задание и, конечно же, вариант его решения, который вы сможете сравнить со своим решением.

    • Часть №3. Структура данных DataFrame

    В этой части будет изучаться ключевая структура данных в Pandas – это DataFrame.

    Объект DataFrame можно представить в виде таблицы и на самом деле это действительно табличная структура данных. Если Series – это столбец, то DataFrame – это совокупность объектов Series, т.е. некоторое множество столбцов.

    Поскольку DataFrame – это табличная структура данных, то неудивительно, что именно DataFrame является ключевой структурой данных Pandas, ведь таблицы, как ничто иное, прекрасно подходят для представления анализируемых данных.

    В таблицах легко представить большие массивы данных, которые будут некоторым образом упорядочены и визуально понятны для восприятия. В уроках данной части курса вы найдете как теорию, так и много практики.

    Здесь будут рассмотрены такие темы, как чтение данных из различных источников в DataFrame, первичный анализ данных в полученном датафрейме, обработка и фильтрация данных, применение встроенных и пользовательских функций к данным, работа со значениями, работа с типами данных, группировка и сортировка данных, объединение нескольких датафреймов, запись обработанных данных в различные типы файлов и т.д.

    • Урок №1. DataFrame. Constructor (15:17)

    Первый урок будет посвящен знакомству с типом DataFrame. Из урока вы узнаете, как создать датафрейм в Pandas, используя метод конструктора.

    • Урок №2. DataFrame. Чтение данных (22:14)

    В предыдущем уроке был показан вариант создания датафрейма с помощью конструктора. Однако, на практике мы чаще всего не создаем датафрейм с наполнением данных вручную, а получаем датафрейм с данными из внешнего источника, чаще всего из файлов CSV или Excel. В результате можно быстро получить датафрейм с огромными массивами данных для дальнейшей работы. В уроке будут показаны способы чтения данных и получения датафрейма из внешнего источника данных.

    • Урок №3. Получение информации о DataFrame (17:21)

    После получения данных из внешнего источника в DataFrame необходимо провести первичный анализ полученных данных, ведь получить можно миллионы строк данных, которые вы видите впервые. В частности, при первичном анализе можно узнать общее число строк и столбцов, наименование столбцов, количество непустых и пустых значений в каждом из столбцов, тип данных столбца и т.п. Все эти данные можно получить очень быстро. Как это сделать – вы узнаете из данного урока.

    • Урок №4. Опции и настройки DataFrame (26:16)

    Используя Jupyter Notebook, мы используем его настройки для работы с датафреймами, которые имеют некоторые ограничения. Например, при распечатке датафрейма Jupyter показывает не весь датафрейм, а лишь некоторую его часть, заданную в настройках часть его строк. При необходимости можно изменить эти настройки. Из урока вы узнаете о некоторых настройках, которые могут пригодиться в дальнейшей работе.

    • Урок №5. Атрибуты loc и iloc (18:19)

    Одними из полезных атрибутов для выборки строк и значений из датафреймов являются атрибуты loc и iloс. С помощью этих атрибутов можно получить доступ к нужной строке или набору строк. В уроке вы найдете различные варианты применения указанных атрибутов.

    • Урок №6. Домашнее задание (08:58)

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

    • Урок №7. Добавление и удаление колонок (20:34)

    При работе с датафреймами одной из частых операций является удаление и добавление колонок. Не все колонки с данными, полученные из внешнего источника, нам нужны, и их можно удалить, освободив тем самым память. Также часто требуется добавить какую-либо колонку, например, вычисляемую колонку, значения которой могут быть получены на основе значений других колонок. Из урока вы узнаете, как добавлять и удалять столбцы из датафрейма.

    • Урок №8. Переименование колонок (14:58)

    Получая данные из внешнего источника в датафрейм, мы получаем также и названия столбцов, которые не всегда удобны в работе. Из урока вы узнаете, как можно переименовать колонки датафрейма.

    • Урок №9. Работа с NaN (20:50)

    Когда в датафрейм приходит пустое значение, Pandas заменяет его на NaN (Not a number). Это специальное значение, которое желательно каким-либо образом обработать и здесь возможны различные варианты. Например, можно заменить NaN на какое-либо значение по умолчанию или же просто удалить строку с отсутствующими значениями. В уроке вы найдете примеры работы с отсутствующими значениями в DataFrame.

    • Урок №10. Работа с Excel. Запись в файлы (24:50)

    До текущего урока данные в датафреймы получались из файлов CSV. Однако, Pandas умеет работать и с другими источниками данных, например, с файлами Excel. Из урока вы узнаете, как получать данные из Excel, и как записывать данные в файлы различных форматов.

    • Урок №11. Домашнее задание (14:52)

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

    • Урок №12. Методы для работы со строками (33:51)

    Значительная доля данных в датафреймах может быть представлена в виде всевозможных строк. При этом часто может потребовать осуществить поиск каких-то конкретных строк или же поиск строк по маске. Может потребовать проделать какие-либо операции над строками. Все это можно проделать с помощью десятков методов для работы со строками, которые предлагает Pandas.

    • Урок №13. Метод apply (29:06)

    В данном уроке будет рассмотрена одна из наиболее мощных возможностей в Pandas – применение функций с помощью метода apply. В уроке вы найдете различные варианты использования метода apply и применения встроенных и собственных функция для обработки данных.

    • Урок №14. Группировка методом groupby (21:48)

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

    • Урок №15. Домашнее задание (06:13)

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

    • Урок №16. Группировка с фильтрацией (33:55)

    В данном уроке будет продолжена тема группировки данных и будет показана возможность наложения фильтров на сгруппированные данные. С помощью наложенных фильтров можно получать не все группы данных, а только группы, удовлетворяющие условиям фильтра.

    • Урок №17. Сортировка (20:07)

    В предлагаемом уроке вы найдете варианты сортировки данных датафрейма. Это может быть сортировка в прямом или обратном порядке, сортировка по отдельному столбцу или даже по нескольким колонкам данных.

    • Урок №18. Объединение датафреймов. Метод concat (12:16)

    На практике часто приходится работать не с одним источником данных, а сразу с несколькими. Например, мы можем получить для обработки годовую выгрузку данных с разбивкой по месяцам, т.е. 12 отдельных файлов с данными. Обрабатывать каждый из файлов в отдельности при этом – не вариант. Нужно свести все файлы в один датафрейм и Pandas позволяет проделать эту операцию буквально в несколько строк кода и минуту времени.

    • Урок №19. Домашнее задание (10:35)

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

    • Урок №20. Сводные таблицы (32:16)

    Для тех, кто работал с анализом данных в Excel, может быть известен термин сводные таблицы. Сводные таблицы позволяют обобщить некоторые данные. Pandas также предлагает возможность создания сводных таблиц и в данном уроке вы познакомитесь с этой возможностью.

    • Урок №21. Домашнее задание - 1 (09:27)

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

    • Урок №22. Домашнее задание - 2 (16:13)

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

    • Урок №23. Объединение таблиц с merge и join (36:51)

    В одном из предыдущих уроков была рассмотрена тема объединения датафреймов с помощью метода concat. Это простое объединение абсолютно всех данных, которое похоже на операцию UNION в SQL. Часто необходимо производить соединение данных на основе определенных значений в этих данных. Такая возможность также есть в Pandas и похожа она на операцию JOIN в SQL.

    • Урок №24. Домашнее задание (06:53)

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

    • Урок №25. Типы данных в Pandas (30:50)

    В этом уроке будут рассмотрены основные типы данных, которыми оперирует Pandas. Это достаточно важная тема, которая связана с оптимизацией работы с датафреймами, а также с оптимизацией использования памяти при работе с датафреймами.

    • Урок №26. Тип данных Category (39:31)

    В предлагаемом уроке вы познакомитесь с интересным типом данных Category, благодаря которому можно значительно сократить объем датафрейма в памяти, а также значительно ускорить обработку данных. Использование этого типа особенно актуально на больших объемах данных.

    • Урок №27. Тип данных Datetime (23:17)

    Еще одним типом данных, с которым нередко приходится работать, является тип данных Datetime. Преобразуя данные в этот тип, становится возможным использовать методы и атрибуты для работы с датой и временем. Например, можно получить из даты только число или месяц, можно получить день недели и т.д.

    • Часть №4. Практика работы с Pandas

    Последняя часть курса фактически будет исключительно практической. В этой части будут взяты файлы больших объемов, они будут обработаны и проанализированы. Как результат анализа, будут даны ответы на классические вопросы для тех или иных задач.

    Например, при анализе продаж магазина будут даны ответы на такие вопросы, как:

    Какой месяц лучший для продаж, а в каком месяце продажи были самыми низкими?

    В какой день недели продажи лучше, а в какой хуже? При этом изначально в данных нет дня недели, а есть только дата и время.

    В какие часы продажи наиболее высокие?

    В какие часы больше всего сделано покупок?

    В каком городе сделаны наибольшие продажи, а в каком – наименьшие, и почему?

    • Урок №1. Библиотека Matplotlib. Часть 1 (08:58)

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

    • Урок №2. Библиотека Matplotlib. Часть 2 (29:50)

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

    • Урок №3. Задание 1-1. Чтение файлов в датафрейм (12:58)

    В качестве первого задания у нас будет годовая отчетность продаж магазина в разных городах с разбивкой по месяцам. Соответственно, у нас будет 12 однотипных файлов, каждый из которых содержит сведения по продажам за определенный месяц. При этом каждый из файлов содержит десятки тысяч строк данных и в сумме у нас будет почти 200 тысяч строк данных. Задачей текущего урока будет объединение имеющихся 12 файлов в единый датафрейм данных.

    • Урок №4. Задание 1-2. Удаление пустых значений (06:38)

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

    • Урок №5. Задание 1-3. Конвертирование типов (10:25)

    Следующим этапом обработки данных является опциональное конвертирование типов данных. В нашем случае этот этап обязателен, поскольку в дальнейшем потребуется создание вычисляемых полей на основе существующих значений, для которых потребуются математические вычисления.

    • Урок №6. Задание 1-4. Добавляем колонку Total (04:51)

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

    • Урок №7. Задание 1-5. Добавляем колонку Month (07:14)

    Для ответа на вопрос относительно лучшего и худшего месяцев для продаж, очевидно, нужно иметь колонку месяца в общем датафрейме. Такой колонки нет, но есть столбец с датой и временем покупки, из которого и можно получить месяц. В этом уроке будет реализована поставленная задача.

    • Урок №8. Задание 1-6. Определяем лучший месяц продаж (30:19)

    В предыдущем уроке была добавлена колонка месяца и теперь можно попытаться дать ответ на вопрос о лучшем и худшем месяце для продаж. Сделать это просто – достаточно сгруппировать данные по месяцам и агрегировать суммы продаж по колонке Total. Это и будет сделано в данном уроке.

    • Урок №9. Задание 1-7. Определяем лучшие часы продаж (23:00)

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

    • Урок №10. Задание 1-8. Определяем лучшие дни продаж (07:59)

    Следующий вопрос, на который будет дан ответ в предлагаемом уроке, - определение лучшего дня недели для продаж и, соответственно, худшего дня недели.

    • Урок №11. Задание 1-9. Определяем город наибольших продаж (16:47)

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

    • Урок №12. Задание 2-1. Объединение файлов данных (19:13)

    Второе практическое задание предполагает набор данных из более чем сотни файлов и почти 2 миллионов строк. Задачей текущего урока будет объединение всех этих файлов в единый датафрейм и экспорт полученных данных в единый файл для дальнейшей работы.

    • Урок №13. Задание 2-2. Получение всех имен по годам (24:25)

    Массив данных в данном практическом задании представляет собой мужские и женские имена в США в период с 1880 по 2019 года. Задачей текущего урока будет получение диаграммы имен за указанный период, на которой будут представлены 2 линии: количество мужских и женских имен по годам.

    • Урок №14. Задание 2-3. Определяем ТОП 10 имен (09:47)

    Еще одной практической задачей может быть ответ на вопрос ТОП 10 женских и ТОП 10 мужских имен за весь период имеющейся выборки. В этом уроке будет показано решение озвученной задачи.

    • Урок №15. Пакет Qgrid (13:07)

    В последнем уроке курса будет показана установка пакета Qgrid, который сделает работу с датафреймами проще и удобнее.

  • ВСЕ МАТЕРИАЛЫ АВТОРА

    Видеокурс
    Видеокурс "Telegram...

    Видеокурс
    Видеокурс "Bootstra...

    Бесплатный видеокурс
    Бесплатный видеокур...

    Видеокурс
    Видеокурс "Laravel....

    Бесплатный видеокурс
    Бесплатный видеокур...

    Видеокурс
    Видеокурс "Django. ...

    Бесплатный видеокурс
    Бесплатный видеокур...

    Видеокурс
    Видеокурс "Фреймвор...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Python. ...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Фреймвор...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "WordPres...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "1С-Битри...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "PHP-Маст...

    Видео урок
    Видеокурс "Интернет...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Фреймвор...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Фреймвор...

    Видео урок
    Видеокурс "Фреймвор...

    Бесплатный видео урок
    Бесплатный видеокур...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "WordPres...

    Видео урок
    Видеокурс "WordPres...

    Видео урок
    Видеокурс "Премиум ...

    Видео урок
    Видеокурс "Премиум ...

    Видео урок
    Видеокурс "Премиум ...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Интернет...

  • СМОТРИТЕ БЕСПЛАТНЫЕ МИНИ - КУРСЫ АВТОРА

    Мини-курс
    Мини-курс "Фреймвор...

    Мини-курс
    Мини-курс "Django. ...

    Мини-курс.
    Мини-курс. "Фреймво...

    Мини-курс. Фреймворк Bootstrap 4. Быстрый старт. (Андрей Кудлай - Webformyself)
    Мини-курс. Фреймвор...

    CMS 1C-Битрикс быстрый старт, первые результаты. (Андрей Кудлай - Webformyself)
    Мини-курс. CMS 1C-Б...

    PHP. Прием платежей на сайте. (Андрей Кудлай - Webformyself)
    Мини-курс. PHP. При...

    OpenCart: быстрый старт. (Андрей Кудлай - Webformyself)
    Мини-курс. OpenCart...

    Фреймворк Yii2: теория и первая практика. (Андрей Кудлай - Webformyself)
    Мини-курс. Фреймвор...

    CakePHP - мощь и гибкость современного PHP-фреймворка. (Андрей Кудлай - Webformyself)
    Мини-курс. CakePHP ...

    Фреймворк Bootstrap. Верстаем адаптивно. (Андрей Кудлай - Webformyself)
    Мини-курс. Фреймвор...

    Премиум уроки по WordPress. (Андрей Бернацкий, Андрей Кудлай - Webformyself)
    Мини-курс. Премиум ...

    Создание интернет-магазина. (Андрей Бернацкий, Андрей Кудлай - Webformyself)
    Мини-курс. Создание...