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

Материал из MathINFO
Перейти к навигации Перейти к поиску
(не показано 26 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
Это страница факультатива '''«Python для сбора и анализа данных»''', читаемого в МИЭФ в '''2020/2021''' учебном году.
 
Это страница факультатива '''«Python для сбора и анализа данных»''', читаемого в МИЭФ в '''2020/2021''' учебном году.
 +
 +
Авторы курса: Щуров Илья Валерьевич, Тамбовцева Алла Андреевна
  
 
Лекции и семинары ведет: Тамбовцева Алла Андреевна
 
Лекции и семинары ведет: Тамбовцева Алла Андреевна
Строка 46: Строка 48:
 
* Проверка условий ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/conditions.ipynb конспект], [https://allatambov.github.io/icef/seminars/conditions.ipynb conditions.ipynb]). Условные конструкции ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/if-else.ipynb конспект], [https://allatambov.github.io/icef/seminars/if-else.ipynb if-else.ipynb]). Pythontutor: [https://pythontutor.ru/lessons/ifelse/ условия].
 
* Проверка условий ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/conditions.ipynb конспект], [https://allatambov.github.io/icef/seminars/conditions.ipynb conditions.ipynb]). Условные конструкции ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/if-else.ipynb конспект], [https://allatambov.github.io/icef/seminars/if-else.ipynb if-else.ipynb]). Pythontutor: [https://pythontutor.ru/lessons/ifelse/ условия].
 
* Цикл while ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/while.ipynb конспект], [https://allatambov.github.io/icef/seminars/while.ipynb while.ipynb]). Pythontutor: цикл [https://pythontutor.ru/lessons/while/ while]. Сравнение continue и pass ([https://www.geeksforgeeks.org/difference-between-continue-and-pass-statements-in-python/ статья]).
 
* Цикл while ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/while.ipynb конспект], [https://allatambov.github.io/icef/seminars/while.ipynb while.ipynb]). Pythontutor: цикл [https://pythontutor.ru/lessons/while/ while]. Сравнение continue и pass ([https://www.geeksforgeeks.org/difference-between-continue-and-pass-statements-in-python/ статья]).
* Семинар 3: условные конструкции и цикл while ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar03.ipynb задания], [https://allatambov.github.io/icef/seminars/icef-seminar03.ipynb icef-seminar03.ipynb]), решения (icef-seminar03-solution.ipynb). ''Семинар 3 пока не разбирали.''
+
* Семинар 3: условные конструкции и цикл while ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar03.ipynb задания], [https://allatambov.github.io/icef/seminars/icef-seminar03.ipynb icef-seminar03.ipynb]), решения ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar03-solutions.ipynb конспект], [https://allatambov.github.io/icef/seminars/icef-seminar03-solutions.ipynb icef-seminar03-solution.ipynb]).
  
 
'''Тема 5*. Структуры данных в Python: кортежи, множества, словари.'''
 
'''Тема 5*. Структуры данных в Python: кортежи, множества, словари.'''
Строка 53: Строка 55:
 
* Вспомогательные лекции: кортежи ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/tuples.ipynb конспект], [https://allatambov.github.io/icef/seminars/tuples.ipynb tuples.ipynb]), словари ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/dicts.ipynb конспект], [https://allatambov.github.io/icef/seminars/dicts.ipynb dicts.ipynb]), множества ([https://nbviewer.jupyter.org/github/PyBasics-19/py-basics-19/blob/master/lectures/sets.ipynb конспект]).
 
* Вспомогательные лекции: кортежи ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/tuples.ipynb конспект], [https://allatambov.github.io/icef/seminars/tuples.ipynb tuples.ipynb]), словари ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/dicts.ipynb конспект], [https://allatambov.github.io/icef/seminars/dicts.ipynb dicts.ipynb]), множества ([https://nbviewer.jupyter.org/github/PyBasics-19/py-basics-19/blob/master/lectures/sets.ipynb конспект]).
 
* Примеры задач на словари с решениями ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/pydj/seminars/seminar5-solutions.ipynb конспект], [https://allatambov.github.io/pydj/seminars/seminar5-solutions.ipynb файл]).
 
* Примеры задач на словари с решениями ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/pydj/seminars/seminar5-solutions.ipynb конспект], [https://allatambov.github.io/pydj/seminars/seminar5-solutions.ipynb файл]).
 +
 +
=== 3 марта [https://www.dropbox.com/sh/51rjvgbom7dfnox/AAD5JXtXLPKpNzeSshfNlgbma?dl=0 Видеозапись] ===
 +
 +
'''Тема 6. Функции в Python.'''
 +
 +
* Полная лекция по функциям ([https://nbviewer.jupyter.org/github/ischurov/pythonhse/blob/master/Lecture%204.ipynb конспект], автор И.В.Щуров), [https://allatambov.github.io/icef/seminars/03-03-functions.ipynb ipynb-файл] с занятия. Lambda-функции ([https://nbviewer.jupyter.org/github/allatambov/PyDat-0919/blob/master/lectures-seminars/5-files/lambda-functions.ipynb конспект], [https://allatambov.github.io/icef/seminars/lambda-functions.ipynb файл]).
 +
* Семинар 4: функции ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar04.ipynb задания], [https://allatambov.github.io/icef/seminars/icef-seminar04.ipynb icef-seminar04.ipynb]), решения (конспект, icef-seminar04-solutions.ipynb).
 +
* Pythontutor: [https://pythontutor.ru/lessons/functions/ функции и рекурсия].
 +
 +
=== 10 марта [https://www.dropbox.com/sh/vy3hcd2jhl7ggew/AABmWz6rFJmkf8CZPujwj3rJa?dl=0 Видеозапись] ===
 +
 +
'''Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.'''
 +
 +
* Данные для работы:  [https://allatambov.github.io/pydj/seminars/firtree.csv firtree.csv].
 +
* Работа с файлами ([конспект], [файл]). Массивы NumPy ([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 файл]), часть 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 файл]).
 +
* Официальные тьюториалы NumPy ([https://docs.scipy.org/doc/numpy/user/quickstart.html ссылка]). Официальные тьюториалы Pandas ([https://pandas.pydata.org/pandas-docs/stable/getting_started/intro_tutorials/index.html ссылка]).
 +
 +
=== 17 марта [https://www.dropbox.com/sh/kwotrr1vle04ulp/AABG4393h3uZK7LUnb4tB5Ica?dl=0 Видеозапись] ===
 +
 +
'''Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.'''
 +
 +
* Работа с датафреймами pandas: часть 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 файл]).
 +
* Семинар 5: группировка и агрегирование ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar05.ipynb задания], [http://allatambov.github.io/icef/seminars/icef-seminar05.ipynb icef-seminar05.ipynb], [https://raw.githubusercontent.com/allatambov/allatambov.github.io/master/icef/data-27257-2020-02-03.json json]), решения ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar05-solutions.ipynb конспект], [http://allatambov.github.io/icef/seminars/icef-seminar05-solutions.ipynb файл]).
 +
* Дополнительно: более сложный пример с группировкой и агрегированием ([https://nbviewer.jupyter.org/github/PyBasics-19/py-basics-19/blob/master/lectures/pandas-part2.ipynb конспект], файл [https://raw.githubusercontent.com/allatambov/PyDat-0919/master/lectures-seminars/7-pandas/elect.csv elect.csv]).
 +
 +
=== 24 марта [https://www.dropbox.com/sh/es5w3gwwy9kxern/AADP78BpqOZ-Fx-Wcd7AMp8qa?dl=0 Видеозапись] ===
 +
 +
'''Тема 8. Визуализация и разведывательный анализ данных.'''
 +
 +
* Данные для работы: [https://allatambov.github.io/pydj/seminars/Chile.csv Chile.csv], [https://allatambov.github.io/rprog/data/wgi_fh.csv wgi_fh.csv].
 +
* Визуализация с библиотекой 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 файл]).
 +
* Семинар 6: графики и виджеты ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar06.ipynb задания], [http://allatambov.github.io/icef/seminars/icef-seminar06.ipynb icef-seminar06.ipynb]), решения ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar06-solutions.ipynb конспект], [http://allatambov.github.io/icef/seminars/icef-seminar06-solutions.ipynb файл]).
 +
* Официальная [https://seaborn.pydata.org/ документация] библиотеки seaborn.
 +
 +
=== 7 апреля [https://www.dropbox.com/sh/arkkoktalnt1svj/AACx0EnPRghyeWspRITtZ1FZa?dl=0 Видеозапись] ===
 +
 +
'''Тема 9. Парсинг HTML-файлов и управление браузером с Selenium.'''
 +
 +
* Парсинг HTML с BeautifulSoup ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-html.ipynb icef-html.ipynb]).
 +
* Ссылка для скачивания драйверов selenium для [https://chromedriver.chromium.org/downloads Chrome] и [https://github.com/mozilla/geckodriver/releases Firefox], [https://allatambov.github.io/icef/instr-wb.pdf инструкция] по решению проблем на Mac.
 +
 +
=== 23 апреля [Лекция] [Консультация] ===
 +
 +
'''Тема 10. Управление браузером с Selenium. Работа с API.'''
 +
 +
* Управление браузером с Selenium ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-selenium.ipynb icef-selenium.ipynb]), еще [https://nbviewer.jupyter.org/github/PyBasics-19/py-basics-19/blob/master/lectures/selenium-books.ipynb пример] с Selenium.
 +
* Работа с API mos.ru ([https://nbviewer.jupyter.org/github/allatambov/misc/blob/master/mos-API.ipynb mos-API.ipynb]), документация [https://apidata.mos.ru/ здесь].
 +
* Работа с API ВКонтакте ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/lect-vk-api.ipynb lect-vk-api.ipynb], [https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/vk-add.ipynb vk-add.ipynb]), получение [https://allatambov.github.io/pypolit/vk-auth.pdf доступа].
  
 
==Дополнительные материалы==
 
==Дополнительные материалы==
Строка 70: Строка 121:
 
'''Статистика и анализ данных в Python'''
 
'''Статистика и анализ данных в Python'''
  
[https://github.com/allatambov/CognTech/tree/master/statistics Материалы] по статистическим тестам и линейным регрессиям в Python
+
[https://github.com/allatambov/CognTech/tree/master/statistics Материалы] по статистическим тестам и линейным регрессиям в Python.
  
 
==Домашние задания и online==
 
==Домашние задания и online==
Строка 84: Строка 135:
 
| Домашнее задание 1 || [https://github.com/allatambov/allatambov.github.io/blob/master/icef/hw/hw01.ipynb задание], [https://allatambov.github.io/icef/hw/hw01.ipynb hw01.ipynb], сдавать на [https://www.dropbox.com/request/Kui4y6IAGB0Z99wq6chs Dropbox] || 28 февраля 23:59
 
| Домашнее задание 1 || [https://github.com/allatambov/allatambov.github.io/blob/master/icef/hw/hw01.ipynb задание], [https://allatambov.github.io/icef/hw/hw01.ipynb hw01.ipynb], сдавать на [https://www.dropbox.com/request/Kui4y6IAGB0Z99wq6chs Dropbox] || 28 февраля 23:59
 
|-
 
|-
| Online 3 || DataCamp: глава [https://learn.datacamp.com/courses/data-types-for-data-science-in-python Dictionaries - the root of Python] || 3 марта 18:10
+
| Online 3 || DataCamp: глава [https://learn.datacamp.com/courses/data-types-for-data-science-in-python Dictionaries - the root of Python] || 5 марта 23:59
 
|-
 
|-
 
| Online 4 || DataCamp: глава [https://learn.datacamp.com/courses/python-data-science-toolbox-part-1 Default arguments, variable-length arguments and scope] || 10 марта 18:10
 
| Online 4 || DataCamp: глава [https://learn.datacamp.com/courses/python-data-science-toolbox-part-1 Default arguments, variable-length arguments and scope] || 10 марта 18:10
 
|-
 
|-
| Домашнее задание 2 || [https://github.com/allatambov/allatambov.github.io/blob/master/icef/hw/hw02.ipynb задание], [https://allatambov.github.io/icef/hw/hw02.ipynb hw02.ipynb], сдавать на [https://www.dropbox.com/request/l1PoIsT0SIcbdaGA311c Dropbox] || 11 марта 23:59
+
| Домашнее задание 2 || [https://github.com/allatambov/allatambov.github.io/blob/master/icef/hw/hw02.ipynb задание], [https://allatambov.github.io/icef/hw/hw02.ipynb hw02.ipynb], сдавать на [https://www.dropbox.com/request/l1PoIsT0SIcbdaGA311c Dropbox] || 15 марта 23:59
 +
|-
 +
| Online 5 || DataCamp: глава [https://learn.datacamp.com/courses/intro-to-python-for-data-science NumPy] || 18 марта 18:10
 +
|-
 +
| Домашнее задание 3 || [https://github.com/allatambov/allatambov.github.io/blob/master/icef/hw/hw03.ipynb задание], [https://allatambov.github.io/icef/hw/hw03.ipynb hw03.ipynb], сдавать на [https://www.dropbox.com/request/Gqy3UvdNYUYkXOTpxiNN Dropbox] || 30 апреля 23:59
 +
|-
 +
| Online 6 || DataCamp: глава [https://learn.datacamp.com/courses/manipulating-dataframes-with-pandas Advanced indexing] || 7 мая 23:59
 
|-
 
|-
 +
| Online 7 || DataCamp: глава [https://learn.datacamp.com/courses/manipulating-dataframes-with-pandas Rearranging and reshaping data] || 7 мая 23:59
 
|}
 
|}
 +
 +
== Проект ==
 +
 +
===Описание проекта===
 +
 +
* [https://allatambov.github.io/icef/icef-project.pdf Описание] проекта и критерии оценивания.
 +
* Проект необходимо загрузить на Dropbox до 25 мая 23:59 по ссылке ниже, дедлайн жёсткий. Файл с кодом, файл с документацией и вспомогательные файлы (при наличии) лучше загружать в виде zip-архива.
 +
 +
===Полезные материалы===
 +
 +
Исполняемые файлы: создание и запуск файла с расширением .py ([https://www.dropbox.com/s/f0aem22hz8k2f5n/py-files.mov?dl=0 видео]).
 +
 +
Дизайн и интерактив:
 +
 +
* [https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Styling.html Оформление] виджетов Jupyter Notebook.
 +
* [https://dash.plot.ly/ Документация] библиотеки dash для интерактивных дэшбордов.
 +
* Обзор работы с dash ([https://www.dropbox.com/s/afp0mgi0ipoluwl/dash-1.mov?dl=0 видео]), файл [https://gist.github.com/allatambov/9057d18b80c7f0698bd73d02d3e32d09 dash1.py].
 +
* Редактирование шаблонного кода для виджета с графиками ([https://www.dropbox.com/s/a1sfz1hskvrvw3h/dash-2.mov?dl=0 видео]), обновлённый файл [https://gist.github.com/allatambov/b566977abfe3c20d227e6e531b04ca6d dash1.py].
 +
* Dashboard со своими данными ([https://www.dropbox.com/s/hvvchvfuyx86w8y/dash-3.mov?dl=0 видео]), файл [https://gist.github.com/allatambov/043ddefcc76566f4c739fa5c7b2502fc dash2.py].
 +
* Dashboard со своими данными и меню для пользователя ([https://www.dropbox.com/s/1141kkumncugj3y/dash-4.mov?dl=0 видео]), файл [https://gist.github.com/allatambov/cdecca50d511024ae10e685081303cea dash3.py].
 +
* Создание окон и кнопок с [https://likegeeks.com/python-gui-examples-tkinter-tutorial/ tkinter].
 +
 +
Географические карты:
 +
 +
* [https://towardsdatascience.com/mapping-with-matplotlib-pandas-geopandas-and-basemap-in-python-d11b57ab5dac Раскраска] карт в Python, shp-файл можно скачать на [https://gadm.org/download_country_v3.html Global Administrative Areas], данные по России – на [http://gisgeo.org/data.html GISGeo].
 +
* [https://github.com/googlemaps/google-maps-services-python GoogleMaps] и Python, [https://medium.com/future-vision/google-maps-in-python-part-2-393f96196eaf тьюториал] по Google Maps.
 +
* [https://pypi.org/project/yandex-maps/ Яндекс-карты] и Python.

Версия 02:48, 21 апреля 2021

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

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

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

Правила игры

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

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

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

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

10 февраля Видеозапись

Тема 1. Введение в Python и Jupyter Notebook

Тема 2. Типы данных в Python. Ввод и вывод.

17 февраля Видеозапись

Тема 3. Списки и цикл for. Методы на строках.

24 февраля Видеозапись

Тема 4. Проверка условий и условные конструкции. Цикл while.

Тема 5*. Структуры данных в Python: кортежи, множества, словари.

3 марта Видеозапись

Тема 6. Функции в Python.

10 марта Видеозапись

Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.

17 марта Видеозапись

Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.

24 марта Видеозапись

Тема 8. Визуализация и разведывательный анализ данных.

7 апреля Видеозапись

Тема 9. Парсинг HTML-файлов и управление браузером с Selenium.

23 апреля [Лекция] [Консультация]

Тема 10. Управление браузером с Selenium. Работа с API.

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

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

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

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

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

Объекты и классы в Python

Конспект по классам, материалы по классам от W3schools.

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

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

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

Домашнее задание Ссылка Дедлайн
Online 1 DataCamp: глава Python Lists 17 февраля 18:10
Online 2 DataCamp: глава Fundamental data types 24 февраля 18:10
Домашнее задание 1 задание, hw01.ipynb, сдавать на Dropbox 28 февраля 23:59
Online 3 DataCamp: глава Dictionaries - the root of Python 5 марта 23:59
Online 4 DataCamp: глава Default arguments, variable-length arguments and scope 10 марта 18:10
Домашнее задание 2 задание, hw02.ipynb, сдавать на Dropbox 15 марта 23:59
Online 5 DataCamp: глава NumPy 18 марта 18:10
Домашнее задание 3 задание, hw03.ipynb, сдавать на Dropbox 30 апреля 23:59
Online 6 DataCamp: глава Advanced indexing 7 мая 23:59
Online 7 DataCamp: глава Rearranging and reshaping data 7 мая 23:59

Проект

Описание проекта

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

Полезные материалы

Исполняемые файлы: создание и запуск файла с расширением .py (видео).

Дизайн и интерактив:

  • Оформление виджетов Jupyter Notebook.
  • Документация библиотеки dash для интерактивных дэшбордов.
  • Обзор работы с dash (видео), файл dash1.py.
  • Редактирование шаблонного кода для виджета с графиками (видео), обновлённый файл dash1.py.
  • Dashboard со своими данными (видео), файл dash2.py.
  • Dashboard со своими данными и меню для пользователя (видео), файл dash3.py.
  • Создание окон и кнопок с tkinter.

Географические карты: