Python для сбора и анализа данных: различия между версиями

Материал из MathINFO
Перейти к навигации Перейти к поиску
(не показана 21 промежуточная версия этого же участника)
Строка 86: Строка 86:
 
=== Парсинг HTML-файлов. (15 и 18 марта) ===
 
=== Парсинг HTML-файлов. (15 и 18 марта) ===
  
* Видеозапись занятия: вторник, пятница.
+
* Видеозапись занятия: [https://www.dropbox.com/sh/7u2oosvjii01cku/AACzRWW8-VgCc9hLOD2l8p0ma?dl=0 вторник], [https://www.dropbox.com/sh/nca9rwd1oo5xto3/AADrpAgV3xPnU6YeM9St0crma?dl=0 пятница].
 
* Парсинг BeautifulSoup: [https://gist.github.com/allatambov/0b3b72f30da68602cff928511878772f часть 1], [https://gist.github.com/allatambov/a9853d3deff299fac9d706c960a5e8f7 часть 2].
 
* Парсинг BeautifulSoup: [https://gist.github.com/allatambov/0b3b72f30da68602cff928511878772f часть 1], [https://gist.github.com/allatambov/a9853d3deff299fac9d706c960a5e8f7 часть 2].
 
* Установка драйвера Selenium: для [https://chromedriver.chromium.org/downloads Chrome], для [https://github.com/mozilla/geckodriver/releases/ Firefox], [https://allatambov.github.io/icef/instr-wb.pdf решение] проблем на Mac.
 
* Установка драйвера Selenium: для [https://chromedriver.chromium.org/downloads Chrome], для [https://github.com/mozilla/geckodriver/releases/ Firefox], [https://allatambov.github.io/icef/instr-wb.pdf решение] проблем на Mac.
Строка 92: Строка 92:
 
=== Управление браузером с помощью Selenium. Знакомство с API. (22 и 25 марта) ===
 
=== Управление браузером с помощью Selenium. Знакомство с API. (22 и 25 марта) ===
  
* Видеозапись занятия: вторник, пятница.
+
* Видеозапись занятия: [https://www.dropbox.com/sh/ghx8yi79qjaecv4/AAAKMAHPbG4zaPwbtRNRBvita?dl=0 вторник], пятница.
* Selenium: [https://gist.github.com/allatambov/304182891a67a8fe93905ef542f25e3a часть 1], [https://gist.github.com/allatambov/accb80b5cd1c8e2edabc31b01cf5d239 часть 2].
+
* Selenium: пример с поиском по сайту ([https://nbviewer.org/github/allatambov/allatambov.github.io/blob/master/icef/selenium-bg.ipynb смотреть], [https://allatambov.github.io/icef/selenium-bg.ipynb скачать]).
 +
* Selenium: пример с ВКонтакте ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/selenium-vk.ipynb смотреть], [https://allatambov.github.io/icef/selenium-vk.ipynb скачать]).
 +
* Доступ к API ВКонтакте: [https://allatambov.github.io/pypolit/vk-auth.pdf инструкция].
 +
 
 +
=== Работа с API на примере ВКонтакте. Массивы NumPy и датафреймы pandas. (5 и 8 апреля) ===
 +
 
 +
* Видеозаписи занятий: [https://www.dropbox.com/sh/0krvvix3kiwj9cp/AAAbiZwbVkf7U0ObIFgvS9HYa?dl=0 вторник], [https://www.dropbox.com/sh/tjw5b0aokppzqqy/AAANLCtDWENYaDaexhS3IEhGa?dl=0 пятница].
 +
* [https://dev.vk.com/method Документация] API ВКонтакте.
 +
* Выгрузка постов со стены сообщества ([https://allatambov.github.io/icef/vk-api-wall.ipynb задачи], [https://allatambov.github.io/icef/vk-api-wall-upd.ipynb решения]).
 +
* NumPy arrays, Pandas Series, Pandas DataFrames ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/arrays-pandas.ipynb читать], [https://allatambov.github.io/icef/seminars/arrays-pandas.ipynb скачать]).
 +
* Работа с датафреймами pandas: часть 1 ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/pandas-01.ipynb читать], [https://allatambov.github.io/icef/seminars/pandas-01.ipynb скачать], файл [https://allatambov.github.io/pydj/seminars/firtree.csv firtree.csv]).
 +
 
 +
Дополнительно:
 +
 
 +
* Выгрузка информации о друзьях ([https://allatambov.github.io/icef/vk-api-friends.ipynb задачи], [https://nbviewer.org/github/allatambov/allatambov.github.io/blob/master/web-scrape/vk-api-friends-upd.ipynb решения]).
 +
 
 +
=== Датафреймы pandas. Визуализация с библиотекой seaborn. (12 и 15 апреля) ===
 +
 
 +
* Видеозаписи занятий: [https://www.dropbox.com/sh/he8o9ekwaqbv53a/AAByYYPQzUI4260kR-lGqHUVa?dl=0 вторник], [https://www.dropbox.com/sh/vwxj6of6miovwak/AADMdGEflO2nWyzedszkdyBda?dl=0 пятница].
 +
* Данные для работы: [https://allatambov.github.io/pydj/seminars/firtree.csv firtree.csv], [https://allatambov.github.io/pydj/seminars/Chile.csv Chile.csv], [https://allatambov.github.io/rprog/data/wgi_fh.csv wgi_fh.csv].
 +
* Работа с датафреймами pandas: часть 2 ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/pandas-02.ipynb читать], [https://allatambov.github.io/icef/seminars/pandas-02.ipynb скачать]), часть 3 ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/pandas-03.ipynb читать], [https://allatambov.github.io/icef/seminars/pandas-03.ipynb скачать]).
 +
* Визуализация с библиотекой seaborn ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/seaborn-graphs.ipynb читать], [http://allatambov.github.io/icef/seminars/seaborn-graphs.ipynb скачать]).
 +
 
 +
=== Интерактивные визуализации с библиотеками plotly и dash. (22 апреля) ===
 +
 
 +
* [https://www.dropbox.com/sh/ylu042uf2ddespd/AABiQipFldBrvWPj3wNpr00xa?dl=0 Видеозапись] занятия (было только в пятницу).
 +
* [https://plotly.com/python/ Документация] библиотеки plotly.
 +
* [https://dash.plot.ly/ Документация] библиотеки dash для интерактивных дэшбордов.
 +
* Обзор работы с dash: файл [https://gist.github.com/allatambov/9057d18b80c7f0698bd73d02d3e32d09 dash1.py].
 +
* Dashboard со своими данными: файл [https://gist.github.com/allatambov/043ddefcc76566f4c739fa5c7b2502fc dash2.py], с меню для пользователя: файл [https://gist.github.com/allatambov/cdecca50d511024ae10e685081303cea dash3.py].
 +
 
 +
=== Дополнительные темы. Классы. Регулярные выражения. (26 апреля) ===
 +
 
 +
* [https://www.dropbox.com/sh/38lt2w17o7yekyy/AABp31nthGEo0edzvj1rEgJQa?dl=0 Видеозапись] занятия (было только во вторник).
 +
* Объекты и классы в Python ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/pydj/seminars/classes.ipynb конспект], [https://www.w3schools.com/python/python_classes.asp материалы] от W3schools).
 +
* Введение в регулярные выражения ([https://github.com/allatambov/Py-programming-3/blob/3e471c720a4f5f7e08b5f4878299b939799cded2/28-05/regex-1.ipynb конспект]).
  
 
== Дополнительные материалы ==
 
== Дополнительные материалы ==
Строка 113: Строка 148:
 
* Домашние задания типа ''online'' выполняются на платформе DataCamp.  
 
* Домашние задания типа ''online'' выполняются на платформе DataCamp.  
 
* Обычные домашние задания сдаются в системе [http://python.math-hse.info python.math-hse.info]. Познакомиться с системой можно на примере домашнего задания №0.
 
* Обычные домашние задания сдаются в системе [http://python.math-hse.info python.math-hse.info]. Познакомиться с системой можно на примере домашнего задания №0.
 +
* Домашнее задание 4 – дополнительное. Оценка за ДЗ рассчитывается по домашним заданиям 1-3. Но если какое-то из них не сдано, можно сдать домашнее задание 4 и тем самым скомпенсировать полученный 0.
  
 
{| class="wikitable"
 
{| class="wikitable"
Строка 126: Строка 162:
 
| Online 3 || DataCamp: глава [https://app.datacamp.com/learn/courses/python-data-science-toolbox-part-1 Default arguments, variable-length arguments and scope]|| 16.03 23:59
 
| Online 3 || DataCamp: глава [https://app.datacamp.com/learn/courses/python-data-science-toolbox-part-1 Default arguments, variable-length arguments and scope]|| 16.03 23:59
 
|-
 
|-
| Домашнее задание 2 ||  MathInfo: задания [https://nbviewer.org/url/python.math-hse.info/static/assignments_release/pyicef2022/icef-hw02/icef-hw02.ipynb hw02] || 27.03 10:00
+
| Домашнее задание 2 ||  MathInfo: задания [https://nbviewer.org/url/python.math-hse.info/static/assignments_release/pyicef2022/icef-hw02/icef-hw02.ipynb hw02] || 05.04 10:00
 
|-
 
|-
 
| Online 4 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/intro-to-python-for-data-science NumPy] || 07.04 23:59
 
| Online 4 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/intro-to-python-for-data-science NumPy] || 07.04 23:59
 
|-
 
|-
| Домашнее задание 3 ||  MathInfo: задания hw03 || TBA
+
| Домашнее задание 3 ||  MathInfo: задания [https://nbviewer.org/url/python.math-hse.info/static/assignments_release/pyicef2022/icef_hw03/icef_hw03.ipynb hw03] || 26.04 23:59
 
|-
 
|-
 
| Online 5 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/data-manipulation-with-pandas Aggregating DataFrames] || 14.04 23:59
 
| Online 5 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/data-manipulation-with-pandas Aggregating DataFrames] || 14.04 23:59
Строка 140: Строка 176:
 
| Online 8 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/reshaping-data-with-pandas Converting Between Wide and Long Format] || 21.04 23:59
 
| Online 8 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/reshaping-data-with-pandas Converting Between Wide and Long Format] || 21.04 23:59
 
|-
 
|-
| Домашнее задание 4 ||  MathInfo: задания hw04 || TBA
+
| Домашнее задание 4* ||  задания [https://github.com/allatambov/allatambov.github.io/blob/master/icef/hw/hw03.ipynb hw04], файл [https://allatambov.github.io/pydj/seminars/polit.csv polit.csv], сдавать через [https://www.dropbox.com/request/AbCirZTrcqQKpX9Pg4uN Dropbox] || 12.05 23:59
 
|-
 
|-
 
| Online 9 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/reshaping-data-with-pandas Stacking and Unstacking DataFrames] || 28.04 23:59
 
| Online 9 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/reshaping-data-with-pandas Stacking and Unstacking DataFrames] || 28.04 23:59
Строка 146: Строка 182:
 
| Online 10 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/reshaping-data-with-pandas Advanced Reshaping] || 28.04 23:59
 
| Online 10 ||  DataCamp: глава [https://app.datacamp.com/learn/courses/reshaping-data-with-pandas Advanced Reshaping] || 28.04 23:59
 
|}
 
|}
 +
 +
== Проект ==
 +
 +
* [https://allatambov.github.io/icef/icef-project.pdf Описание] проекта и критерии оценивания.
 +
* Проект можно выполнять как на русском, так и на английском языке. Для того, чтобы получить высокие баллы за проект (оценки 9-10), в проекте необходимо использовать продвинутые инструменты/библиотеки, не обсуждаемые подробно в рамках курса.
 +
* Проект необходимо загрузить на [https://www.dropbox.com/request/UIrB1HUgUiBhACAmNCUG Dropbox] до 19 мая 18:00, дедлайн жёсткий. Файл с кодом, файл с документацией и вспомогательные файлы (при наличии) лучше загружать в виде zip-архива.

Версия 16:12, 29 апреля 2022

Это страница факультатива «Python для сбора и анализа данных», читаемого в МИЭФ в 2021/2022 учебном году.

Авторы курса: Щуров Илья Валерьевич, Тамбовцева Алла Андреевна.

Лекции и семинары ведет: Тамбовцева Алла Андреевна.

Содержание

Правила игры

  • Формула оценки: 0.4 * ДЗ + 0.2 * Онлайн + 0.4 * Проект.
  • Сдача домашних заданий с опозданием допускается, но со штрафом: за задержку в пределах часа – 15% от полученной оценки, в пределах суток – 30%, в пределах двух дней – 50%.
  • Курс читается с использованием онлайн-курсов на платформе DataCamp. Бесплатный доступ к платформе студентам предоставляется.
  • Ведомость по курсу: таблица.

Программное обеспечение

Перед занятиями необходимо установить дистрибутив Anaconda (скачать можно здесь), который включает в себя интерпретатор языка Python, библиотеки для обработки, анализа и визуализации данных, а также среду для работы Jupyter Notebook. Также есть возможность работать в Jupyter Notebook онлайн, используя ресурс Google Colab (для создания и редактирования файлов нужен аккаунт Gmail). Но в долгосрочной перспективе предпочтительнее установить Anaconda.

Материалы занятий

Презентация факультатива и знакомство с Jupyter Notebook (1 февраля)

Дополнительно:

Переменные и типы данных в Python. Ввод и вывод (8 или 11 февраля)

Дополнительно:

Списки и цикл for. Методы на строках. (15 или 18 февраля)

Дополнительно:

Генераторы списков. Условные конструкции и цикл while. (22 или 25 февраля)

Дополнительно:

Кортежи и словари. Работа с файлами. Формат JSON. (1 и 4 марта)

Функции. Введение в парсинг HTML-файлов. (9 и 11 марта)

Дополнительно:

Парсинг HTML-файлов. (15 и 18 марта)

Управление браузером с помощью Selenium. Знакомство с API. (22 и 25 марта)

Работа с API на примере ВКонтакте. Массивы NumPy и датафреймы pandas. (5 и 8 апреля)

Дополнительно:

Датафреймы pandas. Визуализация с библиотекой seaborn. (12 и 15 апреля)

Интерактивные визуализации с библиотеками plotly и dash. (22 апреля)

Дополнительные темы. Классы. Регулярные выражения. (26 апреля)

Дополнительные материалы

Библиотека SymPy для символьных вычислений

Введение в SymPy: часть 1 (sympy-1.ipynb), часть 2 (sympy-2.ipynb), задачи (sympy-problems.ipynb). Официальная документация SymPy.

Работа с текстом в Python

Библиотека pymorphy2 (морфологический анализатор). Библиотека pymystem3 (предобработка текста). Тьюториал для построения облака слов.

Статистика и анализ данных в Python

Материалы по статистическим тестам и линейным регрессиям в Python.

Домашние задания

  • Домашние задания типа online выполняются на платформе DataCamp.
  • Обычные домашние задания сдаются в системе python.math-hse.info. Познакомиться с системой можно на примере домашнего задания №0.
  • Домашнее задание 4 – дополнительное. Оценка за ДЗ рассчитывается по домашним заданиям 1-3. Но если какое-то из них не сдано, можно сдать домашнее задание 4 и тем самым скомпенсировать полученный 0.
Домашнее задание Ссылка Дедлайн
Online 1 DataCamp: глава Python Lists 17.02 23:59
Домашнее задание 1 MathInfo: задания hw01 02.03. 23:59
Online 2 DataCamp: глава Writing your own functions 16.03 23:59
Online 3 DataCamp: глава Default arguments, variable-length arguments and scope 16.03 23:59
Домашнее задание 2 MathInfo: задания hw02 05.04 10:00
Online 4 DataCamp: глава NumPy 07.04 23:59
Домашнее задание 3 MathInfo: задания hw03 26.04 23:59
Online 5 DataCamp: глава Aggregating DataFrames 14.04 23:59
Online 6 DataCamp: глава Slicing and Indexing DataFrames 14.04 23:59
Online 7 DataCamp: глава Introduction to Data Reshaping 21.04 23:59
Online 8 DataCamp: глава Converting Between Wide and Long Format 21.04 23:59
Домашнее задание 4* задания hw04, файл polit.csv, сдавать через Dropbox 12.05 23:59
Online 9 DataCamp: глава Stacking and Unstacking DataFrames 28.04 23:59
Online 10 DataCamp: глава Advanced Reshaping 28.04 23:59

Проект

  • Описание проекта и критерии оценивания.
  • Проект можно выполнять как на русском, так и на английском языке. Для того, чтобы получить высокие баллы за проект (оценки 9-10), в проекте необходимо использовать продвинутые инструменты/библиотеки, не обсуждаемые подробно в рамках курса.
  • Проект необходимо загрузить на Dropbox до 19 мая 18:00, дедлайн жёсткий. Файл с кодом, файл с документацией и вспомогательные файлы (при наличии) лучше загружать в виде zip-архива.