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

Материал из MathINFO
Перейти к навигации Перейти к поиску
 
(не показаны 43 промежуточные версии этого же участника)
Строка 55: Строка 55:
  
 
* [https://www.dropbox.com/scl/fo/oygbnqh4xboihlehvel9f/h?dl=0&rlkey=q7m7yck0ep8bi5a0v84uh7o5m Видеозапись] занятия, [https://www.dropbox.com/scl/fo/m385kro1mysmblp6texel/h?dl=0&rlkey=g6q9730tk85c4uexdrdp47ip3 сырые] ipynb-файлы с занятия.
 
* [https://www.dropbox.com/scl/fo/oygbnqh4xboihlehvel9f/h?dl=0&rlkey=q7m7yck0ep8bi5a0v84uh7o5m Видеозапись] занятия, [https://www.dropbox.com/scl/fo/m385kro1mysmblp6texel/h?dl=0&rlkey=g6q9730tk85c4uexdrdp47ip3 сырые] ipynb-файлы с занятия.
* Альтернативы циклу for (читать, ipynb). Кортежи и функция zip() ([https://github.com/allatambov/PyICEF-2023/blob/main/tuples-zip.ipynb читать], [ipynb]).
+
* Альтернативы циклу for (читать, ipynb). Кортежи и функция zip() ([https://github.com/allatambov/PyICEF-2023/blob/main/tuples-zip.ipynb читать], [https://www.dropbox.com/s/rjbxjwrnsraucec/tuples-zip.ipynb?dl=0 ipynb]).
 
* Методы на строках ([https://github.com/allatambov/PyICEF-2023/blob/main/str-methods.ipynb читать], [https://www.dropbox.com/s/cefimocpfa3d91y/str-methods.ipynb?dl=0 ipynb]). Чтение и запись txt-файлов ([https://github.com/allatambov/PyICEF-2023/blob/main/txt-work.ipynb читать], [https://www.dropbox.com/s/he1xhc1gtg5gaq4/txt-work.ipynb?dl=0 ipynb]), файл [https://www.dropbox.com/s/6m331ceu62sgtsn/intro.txt?dl=0 intro.txt].
 
* Методы на строках ([https://github.com/allatambov/PyICEF-2023/blob/main/str-methods.ipynb читать], [https://www.dropbox.com/s/cefimocpfa3d91y/str-methods.ipynb?dl=0 ipynb]). Чтение и запись txt-файлов ([https://github.com/allatambov/PyICEF-2023/blob/main/txt-work.ipynb читать], [https://www.dropbox.com/s/he1xhc1gtg5gaq4/txt-work.ipynb?dl=0 ipynb]), файл [https://www.dropbox.com/s/6m331ceu62sgtsn/intro.txt?dl=0 intro.txt].
 
* Практикум 3 ([https://github.com/allatambov/PyICEF-2023/blob/main/icef-problems03.ipynb читать], [https://www.dropbox.com/s/vsp4umzi1febvmu/icef-problems03.ipynb?dl=0 ipynb]), решения задач ([https://nbviewer.org/github/allatambov/PyICEF-2023/blob/main/icef-problems03-solutions.ipynb читать], [https://www.dropbox.com/s/g5yzc0ruvyhfs5i/icef-problems03-solutions.ipynb?dl=0 ipynb]).
 
* Практикум 3 ([https://github.com/allatambov/PyICEF-2023/blob/main/icef-problems03.ipynb читать], [https://www.dropbox.com/s/vsp4umzi1febvmu/icef-problems03.ipynb?dl=0 ipynb]), решения задач ([https://nbviewer.org/github/allatambov/PyICEF-2023/blob/main/icef-problems03-solutions.ipynb читать], [https://www.dropbox.com/s/g5yzc0ruvyhfs5i/icef-problems03-solutions.ipynb?dl=0 ipynb]).
Строка 84: Строка 84:
 
* Lambda-функции ([https://github.com/allatambov/PyICEF-2023/blob/main/lambda-functions.ipynb читать], [https://www.dropbox.com/s/03h3pn0dnl4voc7/lambda-functions.ipynb?dl=0 ipynb]).
 
* Lambda-функции ([https://github.com/allatambov/PyICEF-2023/blob/main/lambda-functions.ipynb читать], [https://www.dropbox.com/s/03h3pn0dnl4voc7/lambda-functions.ipynb?dl=0 ipynb]).
 
* Практикум 6 ([https://github.com/allatambov/PyICEF-2023/blob/main/icef-problems06.ipynb читать], [https://www.dropbox.com/s/6czpgdiz1nxqojg/icef-problems06.ipynb?dl=0 ipynb]), решения практикума ([https://github.com/allatambov/PyICEF-2023/blob/main/icef-problems06-solutions.ipynb читать], [https://www.dropbox.com/s/n0wbufph0jtey8u/icef-problems06-solutions.ipynb?dl=0 ipynb]).
 
* Практикум 6 ([https://github.com/allatambov/PyICEF-2023/blob/main/icef-problems06.ipynb читать], [https://www.dropbox.com/s/6czpgdiz1nxqojg/icef-problems06.ipynb?dl=0 ipynb]), решения практикума ([https://github.com/allatambov/PyICEF-2023/blob/main/icef-problems06-solutions.ipynb читать], [https://www.dropbox.com/s/n0wbufph0jtey8u/icef-problems06-solutions.ipynb?dl=0 ipynb]).
 +
* Массивы и датафреймы pandas ([https://github.com/allatambov/PyICEF-2023/blob/main/arrays-pandas.ipynb читать], [https://www.dropbox.com/s/5pcwbisrppj1dh6/arrays-pandas.ipynb?dl=0 скачать]).
 +
 +
Дополнительно:
 +
 +
* Pythontutor: [https://pythontutor.ru/lessons/functions/ функции]
 +
* Создание модулей и библиотек в Python: [https://packaging.python.org/en/latest/tutorials/packaging-projects/ документация]
 +
 +
===Занятие 07. Введение в HTML. Парсинг с BeautifulSoup (3 и 5 апреля) ===
 +
 +
* [https://www.dropbox.com/scl/fo/ulplzct3c1iotjrs8pcn6/h?dl=0&rlkey=y2ochayttkxtim8kfrcdlvp7b Видеозапись] занятия, сырые [https://www.dropbox.com/scl/fo/o986mce03wens19xhgt25/h?dl=0&rlkey=mpaq0l9kh1lp84vip2d063891 ipynb-файлы] с занятия.
 +
* Знакомство с HTML ([https://www.dropbox.com/s/fzx9vp5iaaosy5c/Intro_HTML.pdf?dl=0 слайды]).
 +
* Практикум по парсингу HTML с BeautifulSoup ([https://github.com/allatambov/PyICEF-2023/blob/main/icef-problems07.ipynb читать], [https://www.dropbox.com/s/r690gk70kk2v3x2/icef-problems07.ipynb?dl=0 ipynb]), решения ([https://github.com/allatambov/PyICEF-2023/blob/main/icef-problems07-solutions.ipynb читать], [https://www.dropbox.com/s/ehg7e4g4hovpxfp/icef-problems07-solutions.ipynb?dl=0 ipynb]).
 +
 +
Дополнительно:
 +
 +
* [https://www.w3schools.com/html/default.asp Тьюториал] по HTML от W3schools.
 +
* Сайт [https://codepen.io/ codepen.io] для фронт-энд разработчиков.
 +
 +
===Занятие 08. Примеры парсинга с BeautifulSoup и Pandas (11 и 13 апреля) ===
 +
 +
* [https://www.dropbox.com/scl/fo/tllkrlnes9d9tcu3ofbu4/h?dl=0&rlkey=1ewjiyd8ouec5rrjv6lj7vmku Видеозапись] занятия, сырые [https://www.dropbox.com/scl/fo/j027kenao67isvhexxvwv/h?dl=0&rlkey=a1un6qo4j8adat7118hdizu9e ipynb-файлы] с занятия.
 +
* Практикум по сбору информации в «псевдотабличном» виде ([https://github.com/allatambov/PyICEF-2023/blob/main/practice-bs.ipynb читать], [https://www.dropbox.com/s/lquggk4bnc5r4vs/practice-bs.ipynb?dl=0 ipynb]).
 +
* Обработка таблиц внутри HTML с BeautifulSoup и pandas ([https://github.com/allatambov/PyICEF-2023/blob/main/bs-pandas.ipynb читать], [https://www.dropbox.com/s/xp7eft7m8yiqej0/bs-pandas.ipynb?dl=0 ipynb]).
 +
 +
===Занятие 09. Примеры парсинга с Selenium (20 апреля) ===
 +
 +
* [https://www.dropbox.com/s/hq4z16wzizehejs/CLASS09.mp4?dl=0 Видеозапись] занятия, сырой [https://www.dropbox.com/s/gkygabdb2opllt9/CLASS09.ipynb?dl=0 ipynb] с занятия.
 +
* [https://github.com/allatambov/WebScrape23/blob/main/selenium.pdf Инструкция] по установке драйверов для Chrome, [https://chromedriver.chromium.org/downloads ссылка] на драйвера.
 +
* Краткое введение в регулярные выражения ([https://nbviewer.org/github/allatambov/PyICEF-2023/blob/main/re-short.ipynb читать], [https://www.dropbox.com/s/3u5st1emsh5cbrq/re-short.ipynb?dl=0 скачать]), применение ''re'' для обработки JSON-строк в HTML ([https://nbviewer.org/github/allatambov/PyICEF-2023/blob/main/parsing-handling-incorrect-json.ipynb читать]).
 +
* Практикум по управлению браузером с Selenium на примере Кинопоиска ([https://nbviewer.org/github/allatambov/PyICEF-2023/blob/main/selenium-kino.ipynb читать], [https://www.dropbox.com/s/nyqy8tavs3pcso4/selenium-kino.ipynb?dl=0 скачать]).
 +
* Практикум по управлению браузером с Selenium: пример динамической страницы ([https://nbviewer.org/github/allatambov/PyICEF-2023/blob/main/OEC_collect.ipynb читать], [https://www.dropbox.com/s/194hh0a1h9jqrrn/OEC_collect.ipynb?dl=0 скачать]).
 +
* Ссылки для работы: [https://sso.passport.yandex.ru/push?retpath=https%3A%2F%2Fwww.kinopoisk.ru%2F%2Fapi%2Fprofile-pending%2F%3Fretpath%3Dhttps%253A%252F%252Fwww.kinopoisk.ru%252F&uuid=f0e989dd-d612-4911-b8eb-f087d5a4a64a kinopoisk], [https://oec.world/en/profile/country/nor?depthSelector1=HS4Depth&yearSelector1=2000 oec].
 +
 +
Дополнительно:
 +
 +
* Неофициальная [https://selenium-python.readthedocs.io/ документация] библиотеки Selenium.
 +
* Практикум по управлению браузером с Selenium на примере ВКонтакте ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice06-solutions.ipynb читать], [https://www.dropbox.com/s/iog89xvy3kiwpzk/psy-practice06-solutions.ipynb?dl=0 ipynb]).
 +
* Практикум по управлению браузером с Selenium: XPATH и скачивание файлов ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice08-solutions.ipynb читать], [https://www.dropbox.com/s/tm0k4tdg4e23iyo/psy-practice08-solutions.ipynb?dl=0 скачать]).
 +
* Практикум по управлению браузером с Selenium на примере Twitter: TBA
 +
 +
===Занятие 10. Библиотека pandas, приложения Streamlit  (27 апреля) ===
 +
 +
* [https://www.dropbox.com/s/prj5p6atlbeiclh/CLASS10.mp4?dl=0 Видеозапись] занятия.
 +
* Базовые операции с датафреймами pandas ([читать], [https://www.dropbox.com/s/5hjbc0ydffx2re9/pandas-intro.ipynb?dl=0 ipynb]), файл [https://www.dropbox.com/s/yoyqsrwcedf196s/Salaries.csv?dl=0 Salaries.csv], загрузить данные можно также по [https://raw.githubusercontent.com/allatambov/PyICEF-2023/main/Salaries.csv ссылке].
 +
* [https://streamlit.io/ Проект] Streamlit: основные [https://docs.streamlit.io/library/cheatsheet функции], [https://docs.streamlit.io/library/api-reference/data данные], [https://docs.streamlit.io/library/api-reference/charts графики], [https://docs.streamlit.io/library/api-reference/layout структурирование] страницы, [https://docs.streamlit.io/library/api-reference/widgets меню] для ввода.
 +
* Инструкция по работе со streamlit ([https://nbviewer.org/github/allatambov/PyICEF-2023/blob/main/instruct-streamlit.ipynb читать], [https://www.dropbox.com/s/u969waqtuuhvpsl/instruct-streamlit.ipynb?dl=0 ipynb]), файл myapp.py ([https://github.com/allatambov/PyICEF-2023/blob/main/myapp.py читать], [https://www.dropbox.com/s/m3q02boidf1w9i9/myapp.py?dl=0 скачать]), более интересная [https://allatambov-steamlit-salaries-myapp-upd-4zgu9x.streamlit.app/ версия] приложения.
 +
* [https://carpentries-incubator.github.io/python-interactive-data-visualizations/08-publish-your-app/index.html Инструкция] по публикации приложения (сначала создать аккаунт и репозиторий на Github).
  
 
== Домашние задания ==
 
== Домашние задания ==
  
 
* Домашние задания сдаются через систему [http://python.math-hse.info/admin/login/?next=%2F python.math-info], [https://www.dropbox.com/s/5o3id5s0hrmi6zt/system-intro.mp4?dl=0 видео-инструкция] по работе с системой.
 
* Домашние задания сдаются через систему [http://python.math-hse.info/admin/login/?next=%2F python.math-info], [https://www.dropbox.com/s/5o3id5s0hrmi6zt/system-intro.mp4?dl=0 видео-инструкция] по работе с системой.
 +
* Домашнее задание №8 бонусное, необязательное, его можно сдать, если хочется повысить оценку за домашние задания. Если вы не сдаете ДЗ№8, оценка считается как среднее по семи обязательным заданиям. Если сдаете ДЗ№8, оценку за него можно перенести на любое несданное задание или задание с самой низкой оценкой.
  
 
{| class="wikitable"
 
{| class="wikitable"
Строка 101: Строка 149:
 
| [https://nbviewer.org/url/python.math-hse.info/static/assignments_release/pyicef23/icef-hw04/icef-hw04.ipynb Домашнее задание 4], [https://www.dropbox.com/s/ocj71ro3ln48iaj/pesem.txt?dl=0 pesem.txt]|| 05.04 23:59
 
| [https://nbviewer.org/url/python.math-hse.info/static/assignments_release/pyicef23/icef-hw04/icef-hw04.ipynb Домашнее задание 4], [https://www.dropbox.com/s/ocj71ro3ln48iaj/pesem.txt?dl=0 pesem.txt]|| 05.04 23:59
 
|-
 
|-
| Домашнее задание 5 ||  
+
| [https://nbviewer.org/url/python.math-hse.info/static/assignments_release/pyicef23/icef-hw05/icef-hw05.ipynb Домашнее задание 5] || 12.04 23:59
 
|-
 
|-
| Домашнее задание 6 ||  
+
| [https://nbviewer.org/github/allatambov/PyICEF-2023/blob/main/icef-hw06.ipynb Домашнее задание 6], файл [https://www.dropbox.com/s/opliav0yc57tbnl/icef-hw06.ipynb?dl=0 ipynb] || 20.04 23:59
 
|-
 
|-
| Домашнее задание 7 ||  
+
| [https://nbviewer.org/url/python.math-hse.info/static/assignments_release/pyicef23/icef-hw07/icef-hw07.ipynb Домашнее задание 7], файл [https://www.dropbox.com/s/2ra64n5doihtw23/polit.csv?dl=0 polit.csv] || 04.05 23:59
 
|-
 
|-
| Домашнее задание 8 ||  
+
| [https://github.com/allatambov/PyICEF-2023/blob/main/pyicef-hw08.ipynb Домашнее задание 8*], файл [https://www.dropbox.com/s/wfmx1zspnpl2sqf/pyicef-hw08.ipynb?dl=0 ipynb] || 15.05 23:59
 
|-
 
|-
 
|}
 
|}
 +
 +
== Проект ==
 +
 +
* Описание проекта и критерии оценивания ([https://allatambov.github.io/icef/icef-project.pdf файл]).
 +
* Дедлайн: 19 мая 23:59.
 +
* Проект может быть выполнен как на русском, так и на английском языке, индивидуально или в группах не более 3 человек.
 +
* Чтобы получить высокие баллы за проект (оценки 9-10), в проекте необходимо использовать продвинутые инструменты/библиотеки, не обсуждаемые подробно в рамках курса.

Текущая версия на 01:30, 6 мая 2023

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

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

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

Правила игры

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

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

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

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

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

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

Занятие 01. Вычисления и переменные. Типы данных. Ввод и вывод. (14 и 16 февраля)

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

  • Вычисления с заданной точностью с модулем decimal, официальная документация decimal.
  • Вычисления с обыкновенными дробями с модулем fractions, официальная документация fractions.
  • Символьные вычисления с sympy: часть 1 (sympy-1.ipynb), часть 2 (sympy-2.ipynb), официальная документация sympy.
  • Стандарты оформления кода Python: PEP8, проверка соответствия кода стандартам: PEP8 online check.

Занятие 02. Списки и цикл for. Методы .split() и .join() (21 и 27 февраля)

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

Занятие 03. Методы на строках. Чтение и запись txt-файлов. (28 февраля и 2 марта)

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

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

Занятие 04. Условные конструкции и цикл while. (7 и 9 марта)

Занятие 05. Множества и словари. Знакомство с API (14 и 16 марта)

Занятие 06. Функции. Массивы и датафреймы pandas (21 и 23 марта)

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

Занятие 07. Введение в HTML. Парсинг с BeautifulSoup (3 и 5 апреля)

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

Занятие 08. Примеры парсинга с BeautifulSoup и Pandas (11 и 13 апреля)

Занятие 09. Примеры парсинга с Selenium (20 апреля)

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

  • Неофициальная документация библиотеки Selenium.
  • Практикум по управлению браузером с Selenium на примере ВКонтакте (читать, ipynb).
  • Практикум по управлению браузером с Selenium: XPATH и скачивание файлов (читать, скачать).
  • Практикум по управлению браузером с Selenium на примере Twitter: TBA

Занятие 10. Библиотека pandas, приложения Streamlit (27 апреля)

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

  • Домашние задания сдаются через систему python.math-info, видео-инструкция по работе с системой.
  • Домашнее задание №8 бонусное, необязательное, его можно сдать, если хочется повысить оценку за домашние задания. Если вы не сдаете ДЗ№8, оценка считается как среднее по семи обязательным заданиям. Если сдаете ДЗ№8, оценку за него можно перенести на любое несданное задание или задание с самой низкой оценкой.
Домашнее задание Дедлайн
Домашнее задание 1 27.02 23:59
Домашнее задание 2 09.03 23:59
Домашнее задание 3 16.03 23:59
Домашнее задание 4, pesem.txt 05.04 23:59
Домашнее задание 5 12.04 23:59
Домашнее задание 6, файл ipynb 20.04 23:59
Домашнее задание 7, файл polit.csv 04.05 23:59
Домашнее задание 8*, файл ipynb 15.05 23:59

Проект

  • Описание проекта и критерии оценивания (файл).
  • Дедлайн: 19 мая 23:59.
  • Проект может быть выполнен как на русском, так и на английском языке, индивидуально или в группах не более 3 человек.
  • Чтобы получить высокие баллы за проект (оценки 9-10), в проекте необходимо использовать продвинутые инструменты/библиотеки, не обсуждаемые подробно в рамках курса.