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

Материал из MathINFO
Перейти к навигации Перейти к поиску
 
(не показаны 23 промежуточные версии этого же участника)
Строка 64: Строка 64:
 
* Pythontutor: [https://pythontutor.ru/lessons/functions/ функции и рекурсия].
 
* Pythontutor: [https://pythontutor.ru/lessons/functions/ функции и рекурсия].
  
=== 10 марта [Видеозапись] ===
+
=== 10 марта [https://www.dropbox.com/sh/vy3hcd2jhl7ggew/AABmWz6rFJmkf8CZPujwj3rJa?dl=0 Видеозапись] ===
  
* Данные для работы:  [https://allatambov.github.io/pydj/seminars/firtree.csv firtree.csv], [https://allatambov.github.io/icef/seminars/data-27257-2020-02-03.json data-27257-2020-02-03.json].
+
'''Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.'''
* Работа с файлами (конспект, файл). Массивы NumPy (конспект, файл).
+
 
* Работа с датафреймами pandas: часть 1 (конспект, файл), часть 2 (конспект, файл), часть 3 (конспект, файл).  
+
* Данные для работы:  [https://allatambov.github.io/pydj/seminars/firtree.csv firtree.csv].
* Семинар 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])
+
* Работа с файлами ([конспект], [файл]). Массивы 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. [https://www.dropbox.com/s/xeu9f9jhksvucic/icef-part2-sm.mov?dl=0 Видео].
 +
* Работа с API mos.ru ([https://nbviewer.jupyter.org/github/allatambov/misc/blob/master/mos-API.ipynb mos-API.ipynb]), документация [https://apidata.mos.ru/ здесь]. [https://www.dropbox.com/s/b7qmgqmmtsy6ihc/icef27-04-1-sm.mov?dl=0 Видео].
 +
* Работа с 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 доступа], [https://www.dropbox.com/s/b7qmgqmmtsy6ihc/icef27-04-1-sm.mov?dl=0 видео].
  
 
==Дополнительные материалы==
 
==Дополнительные материалы==
Строка 107: Строка 141:
 
| Домашнее задание 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
 
| Домашнее задание 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://allatambov.github.io/pydj/seminars/polit.csv polit.csv], сдавать на [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 до 28 мая 23:59 (4 курс и старше) и до 7 июня 23:59 (другие курсы) по [https://www.dropbox.com/request/4yZpNgn6eoxF0skjcFmY ссылке], дедлайн жёсткий. Файл с кодом, файл с документацией и вспомогательные файлы (при наличии) лучше загружать в виде 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.

Текущая версия на 15:38, 28 мая 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, polit.csv, сдавать на Dropbox 30 апреля 23:59
Online 6 DataCamp: глава Advanced indexing 7 мая 23:59
Online 7 DataCamp: глава Rearranging and reshaping data 7 мая 23:59

Проект

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

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

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

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

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

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

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