Python для сбора и анализа данных: различия между версиями
(не показана 21 промежуточная версия этого же участника) | |||
Строка 17: | Строка 17: | ||
== Материалы занятий == | == Материалы занятий == | ||
− | === 10 февраля | + | === 10 февраля === |
'''Тема 1. Введение в Python и Jupyter Notebook''' | '''Тема 1. Введение в Python и Jupyter Notebook''' | ||
Строка 33: | Строка 33: | ||
* Семинар 1: ввод-вывод и приведение типов ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar01.ipynb задания], [https://allatambov.github.io/icef/seminars/icef-seminar01.ipynb icef-seminar01.ipynb], решения ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar01-solutions.ipynb конспект], [https://allatambov.github.io/icef/seminars/icef-seminar01-solutions.ipynb icef-seminar01-solutions.ipynb]). | * Семинар 1: ввод-вывод и приведение типов ([https://nbviewer.jupyter.org/github/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar01.ipynb задания], [https://allatambov.github.io/icef/seminars/icef-seminar01.ipynb icef-seminar01.ipynb], решения ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar01-solutions.ipynb конспект], [https://allatambov.github.io/icef/seminars/icef-seminar01-solutions.ipynb icef-seminar01-solutions.ipynb]). | ||
− | === 17 февраля | + | === 17 февраля === |
'''Тема 3. Списки и цикл for. Методы на строках.''' | '''Тема 3. Списки и цикл for. Методы на строках.''' | ||
Строка 42: | Строка 42: | ||
* Семинар 2: списки и строки ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar02.ipynb задания], [https://allatambov.github.io/icef/seminars/icef-seminar02.ipynb icef-seminar02.ipynb]), решения ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar02-solutions.ipynb конспект], [https://allatambov.github.io/icef/seminars/icef-seminar02-solutions.ipynb icef-seminar02-solutions.ipynb]). | * Семинар 2: списки и строки ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar02.ipynb задания], [https://allatambov.github.io/icef/seminars/icef-seminar02.ipynb icef-seminar02.ipynb]), решения ([https://github.com/allatambov/allatambov.github.io/blob/master/icef/seminars/icef-seminar02-solutions.ipynb конспект], [https://allatambov.github.io/icef/seminars/icef-seminar02-solutions.ipynb icef-seminar02-solutions.ipynb]). | ||
− | === 24 февраля | + | === 24 февраля === |
'''Тема 4. Проверка условий и условные конструкции. Цикл while.''' | '''Тема 4. Проверка условий и условные конструкции. Цикл while.''' | ||
Строка 56: | Строка 56: | ||
* Примеры задач на словари с решениями ([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 марта | + | === 3 марта === |
'''Тема 6. Функции в Python.''' | '''Тема 6. Функции в Python.''' | ||
Строка 64: | Строка 64: | ||
* Pythontutor: [https://pythontutor.ru/lessons/functions/ функции и рекурсия]. | * Pythontutor: [https://pythontutor.ru/lessons/functions/ функции и рекурсия]. | ||
− | === 10 марта | + | === 10 марта === |
'''Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.''' | '''Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.''' | ||
Строка 71: | Строка 71: | ||
* Работа с файлами ([конспект], [файл]). Массивы 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 файл]). | * Работа с файлами ([конспект], [файл]). Массивы 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 файл]). | * Работа с датафреймами 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 марта === | |
− | |||
− | -- | + | '''Тема 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 марта === | ||
+ | |||
+ | '''Тема 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 апреля === | ||
+ | |||
+ | '''Тема 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 видео]. | ||
==Дополнительные материалы== | ==Дополнительные материалы== | ||
Строка 113: | Строка 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. |
Текущая версия на 03:00, 4 мая 2024
Это страница факультатива «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
- Инструкция по работе с Jupyter Notebook. Знакомство с Jupyter Notebook и Markdown (конспект, intro-jupyter.ipynb).
- Вычисления и переменные в Python (конспект, intro-variables.ipynb).
- Pythontutor: визуализатор кода, вычисления.
- Markdown и Jupyter: больше про Markdown, интерактивные виджеты в Jupyter.
- LaTeX: ShareLaTeX для желающих, документация на английском, материалы других курсов по LaTeX.
Тема 2. Типы данных в Python. Ввод и вывод.
- Типы переменных, ввод и вывод в Python (конспект, intro-types.ipynb). Pythontutor: ввод и вывод.
- Форматирование строк (конспект, str-formatting.ipynb).
- Семинар 1: ввод-вывод и приведение типов (задания, icef-seminar01.ipynb, решения (конспект, icef-seminar01-solutions.ipynb).
17 февраля
Тема 3. Списки и цикл for. Методы на строках.
- Списки и цикл for: введение (конспект, lists-1.ipynb). Списки: методы на списках. (конспект, lists-2.ipynb). Pythontutor: списки, цикл for.
- Генераторы списков и enumerate() (конспект, more-lists.ipynb).
- Методы на строках (ссылка). Pythontutor: строки. Методы .split() и .join() (конспект, split-join.ipynb).
- Семинар 2: списки и строки (задания, icef-seminar02.ipynb), решения (конспект, icef-seminar02-solutions.ipynb).
24 февраля
Тема 4. Проверка условий и условные конструкции. Цикл while.
- Проверка условий (конспект, conditions.ipynb). Условные конструкции (конспект, if-else.ipynb). Pythontutor: условия.
- Цикл while (конспект, while.ipynb). Pythontutor: цикл while. Сравнение continue и pass (статья).
- Семинар 3: условные конструкции и цикл while (задания, icef-seminar03.ipynb), решения (конспект, icef-seminar03-solution.ipynb).
Тема 5*. Структуры данных в Python: кортежи, множества, словари.
- Тема изучается на DataCamp (задания online 2 и online 3).
- Вспомогательные лекции: кортежи (конспект, tuples.ipynb), словари (конспект, dicts.ipynb), множества (конспект).
- Примеры задач на словари с решениями (конспект, файл).
3 марта
Тема 6. Функции в Python.
- Полная лекция по функциям (конспект, автор И.В.Щуров), ipynb-файл с занятия. Lambda-функции (конспект, файл).
- Семинар 4: функции (задания, icef-seminar04.ipynb), решения (конспект, icef-seminar04-solutions.ipynb).
- Pythontutor: функции и рекурсия.
10 марта
Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.
- Данные для работы: firtree.csv.
- Работа с файлами ([конспект], [файл]). Массивы NumPy (конспект, файл).
- Работа с датафреймами pandas: часть 1 (конспект, файл), часть 2 (конспект, файл).
- Официальные тьюториалы NumPy (ссылка). Официальные тьюториалы Pandas (ссылка).
17 марта
Тема 7. Работа с файлами. Массивы NumPy и датафреймы pandas.
- Работа с датафреймами pandas: часть 3 (конспект, файл).
- Семинар 5: группировка и агрегирование (задания, icef-seminar05.ipynb, json), решения (конспект, файл).
- Дополнительно: более сложный пример с группировкой и агрегированием (конспект, файл elect.csv).
24 марта
Тема 8. Визуализация и разведывательный анализ данных.
- Данные для работы: Chile.csv, wgi_fh.csv.
- Визуализация с библиотекой seaborn (конспект, файл).
- Семинар 6: графики и виджеты (задания, icef-seminar06.ipynb), решения (конспект, файл).
- Официальная документация библиотеки seaborn.
7 апреля
Тема 9. Парсинг HTML-файлов и управление браузером с Selenium.
- Парсинг HTML с BeautifulSoup (icef-html.ipynb).
- Ссылка для скачивания драйверов selenium для Chrome и Firefox, инструкция по решению проблем на Mac.
23 апреля
Тема 10. Управление браузером с Selenium. Работа с API.
- Управление браузером с Selenium (icef-selenium.ipynb), еще пример с Selenium. Видео.
- Работа с API mos.ru (mos-API.ipynb), документация здесь. Видео.
- Работа с API ВКонтакте (lect-vk-api.ipynb, vk-add.ipynb), получение доступа, видео.
Дополнительные материалы
Библиотека 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.
Географические карты:
- Раскраска карт в Python, shp-файл можно скачать на Global Administrative Areas, данные по России – на GISGeo.
- GoogleMaps и Python, тьюториал по Google Maps.
- Яндекс-карты и Python.