Разница между страницами «Наука о данных/Весенний проект» и «Науки о данных»

Материал из MathINFO
< Наука о данных(Различия между страницами)
Перейти к навигации Перейти к поиску
Метка: новое перенаправление
 
 
Строка 1: Строка 1:
#перенаправление [[Науки о данных/Весенний проект]]
+
Курс ведёт Илья Щуров.
 +
 
 +
 
 +
==Инструменты==
 +
===Python===
 +
Мы используем Python версии 3 и оболочку Jupyter (ранее известную как IPython Notebook). Чтобы их установить, проще всего скачать пакет [http://anaconda.com/downloads Anaconda]]. Обратите внимание: вам нужна версия с Python 3.x (в настоящее время — Python 3.7).
 +
 
 +
После установки Anaconda у вас появится:
 +
 
 +
* Под Windows: в меню «Пуск» пункт «Anaconda», в нём подпункт «IPython Notebook».
 +
 
 +
* Под Mac OS X: приложение Anaconda Launcher, в нём пункт ipython-notebook.
 +
 
 +
После запуска IPython Notebook у вас откроется окно браузера (и лучше пусть это будет не Internet Explorer, под ним IPython Notebook работает с некоторым скрипом, а иногда не работает) со списком файлов. В нём надо выбрать New → Python 3. Откроется новая вкладка браузера, в ней будет запущен пустой notebook, состоящий из отдельных ячеек (cells). В ячейку с кодом можно вписать код и нажать Shift+Enter — он выполнится и вам покажут тут же результат.
 +
 
 +
Для установки дополнительных пакетов вам необходимо открыть консоль (это может быть Anaconda Prompt под Windows или стандартный «Терминал» под Mac OS или Linux) и набрать команду <code>conda install <название пакета></code> или <code>pip install <название пакета></code> (например, <code>conda install seaborn</code>).
 +
 
 +
Вы также можете использовать [https://colab.research.google.com Google Colaboratory]] (но интерфейс там будет немножко отличаться от интерфейса Jupyter).
 +
 
 +
===Работа с ipynb-файлами===
 +
Мы выкладываем материалы курса в виде ipynb-файлов. По ссылкам ниже вы можете просмотреть эти файлы. Если вы хотите открыть этот файл у себя, то вам необходимо скачать его (нажав на иконку в правом верхнем углу страницы с лекцией) и положить в каталог, из которого Jupyter открывает ноутбуки: например, воспользовавшись кнопкой Upload в самом Jupyter (на экране со списком файлов). Также этот каталог можно найти по строчке <code>Serving notebooks from local directory: /home/user/IPython</code>, появляющейся в чёрненьком окошке при запуске Jupyter; здесь <code>/home/user/IPython</code> — искомый путь.
 +
 
 +
==Материалы==
 +
===Занятие 1: Первое знакомство===
 +
* Первое знакомство: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%201.ipynb конспект], [http://www.youtube.com/watch?v=5Y5tKPKhurA видео].
 +
** Дополнение: PT [http://pythontutor.ru/lessons/inout_and_arithmetic_operations/ арифметические операции], [http://pythontutor.ru/lessons/int_and_float/ целые и вещественные числа].
 +
 
 +
===Занятие 2: Списки и цикл <code>for</code>===
 +
* Списки: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%202.ipynb конспект], [https://www.youtube.com/watch?v=kBu3g-ITjY4 видео].
 +
 
 +
* <code>.split</code> и <code>.join</code>, алгоритмы с циклами: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%203.ipynb#Лекция-№3:-Ввод-вывод-списков-и-проверка-условий конспект] (до раздела «Проверка условий»), [http://www.youtube.com/watch?v=uzgaCV8KZA0 видео]
 +
** Дополнение: PT [http://pythontutor.ru/lessons/lists/ списки].
 +
 
 +
* [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps01/ps01.ipynb ДЗ№1]
 +
 
 +
===Занятие 3: Ввод-вывод списков, проверка условий, цикл <code>while</code>===
 +
* Ввод-вывод списков, проверка условий, цикл <code>while</code>: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%203.ipynb конспект], [http://www.youtube.com/watch?v=uzgaCV8KZA0 видео]
 +
** Дополнение: PT [http://pythontutor.ru/lessons/lists/#section_2 split и join], [http://pythontutor.ru/lessons/ifelse/ if], [http://pythontutor.ru/lessons/while/ while]
 +
 
 +
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps02/ps02.ipynb ДЗ№2]
 +
 
 +
===Занятие 4: Функции===
 +
* Функции: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%204.ipynb конспект], [https://www.youtube.com/watch?v=NYrYSFyCg4w видео].
 +
** Дополнение: PT [http://pythontutor.ru/lessons/functions/ функции].
 +
 
 +
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps03/ps03.ipynb ДЗ№3].
 +
 
 +
===Занятие 5: Списковые включения, <code>zip</code>, двумерные массивы и словари===
 +
* Списковые включения (list comprehensions): [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb#%D0%A1%D0%BF%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D1%8B%D0%B5-%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-(list-comprehensions) конспект], [https://www.youtube.com/watch?v=z8bu_b5BboI&feature=youtu.be&t=24m59s видео].
 +
 
 +
* Словари: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb конспект], [http://www.youtube.com/watch?v=z8bu_b5BboI видео].
 +
 
 +
* Множества: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%207.ipynb#%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0 конспект]
 +
** Дополнение: PT [http://pythontutor.ru/lessons/lists/#section_3 списковые включения], [http://pythontutor.ru/lessons/2d_arrays/ двумерные массивы], [http://pythontutor.ru/lessons/dicts/ словари].
 +
 
 +
===Занятие 6: Сортировка===
 +
* Сортировка: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%206.ipynb#%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0 конспект], [https://www.youtube.com/watch?v=1w0NG-pfcsg&feature=youtu.be&t=9m17s видео].
 +
** Дополнение: [https://docs.python.org/3/howto/sorting.html Sorting howto] (англ.)
 +
 
 +
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps04/ps04.ipynb ДЗ№4].
 +
 
 +
===Занятие 7: Работа с файлами===
 +
* [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%207.ipynb#%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D1%8B%D0%B9-%D0%B2%D0%B2%D0%BE%D0%B4-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4 конспект].
 +
** Дополнение: [https://docs.python.org/3/tutorial/inputoutput.html Официальная документация](англ.)
 +
 
 +
===Занятие 8: Numpy и картинки===
 +
* [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2011.ipynb конспект], [http://www.youtube.com/watch?v=A84rlgoVnMY видео].
 +
 
 +
* [https://docs.scipy.org/doc/numpy-dev/user/quickstart.html numpy quickstart], [http://matplotlib.org/users/pyplot_tutorial.html pyplot tutorial], [http://matplotlib.org/gallery.html matplotlib gallery].
 +
 
 +
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps05/ps05.ipynb ДЗ№5].
 +
 
 +
===Занятие 9: Введение в Pandas===
 +
* pandas и датафреймы: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2012.ipynb конспект по базовым возможностям pandas], [http://www.youtube.com/watch?v=ENKfnIEXyKw видео]
 +
** Дополнительно: [http://pandas.pydata.org/pandas-docs/stable/10min.html 10-минутное введение (обзор возможностей)], [http://pandas.pydata.org/pandas-docs/stable/tutorials.html#pandas-cookbook pandas-cookbook], [http://pandas.pydata.org/pandas-docs/stable/indexing.html индексация и выбор данных (подробно)]
 +
 
 +
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps06/ps06.ipynb ДЗ№6]
 +
 
 +
===Занятие 10: примеры использования pandas===
 +
* [http://nbviewer.math-hse.info/url/math-info.hse.ru/f/2018-19/nes-ds/lecture-pandas2.ipynb ipynb-файл с занятия]
 +
 
 +
===Занятие 11: продвинутые возможности pandas===
 +
* [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2013.ipynb Погода и мультииндексы]
 +
 
 +
* [http://nbviewer.math-hse.info/url/math-info.hse.ru/f/2018-19/nes-ds/lecture-pandas-pivot-join-weather.ipynb pivot-melt, merge-join] (сырой ipynb с занятия)
 +
 
 +
===Занятие 12: ещё о pandas===
 +
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/pandas-datareader-pics.ipynb Чтение данных из World Bank, мультииндексы и картинки]
 +
 
 +
* [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps07/ps07.ipynb ДЗ№7]
 +
 
 +
===Занятия 13 и 14: веб-скреппинг===
 +
* Извлечение данных из веб-страниц с помощью BeautifulSoup и requests: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%208.ipynb конспект], [http://www.youtube.com/watch?v=3nPksaHTMGI видео]
 +
** Оригинальная документация (англ.): [http://docs.python-requests.org/en/latest/ requests] [http://www.crummy.com/software/BeautifulSoup/bs4/doc/ BeautifulSoup].
 +
 
 +
* [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps08/ps08.ipynb ДЗ№8]
 +
 
 +
===Занятие 15: продвинутый скреппинг: RoboBrowser и Selenium===
 +
* Извлечение данных с помощью RoboBrowser: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb#Эмуляция-действий-с-браузером конспект],
 +
** Оригинальная документация (англ.): [http://robobrowser.readthedocs.org/en/latest/ RoboBrowser]
 +
 
 +
* Selenium: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb#Selenium конспект], [http://selenium-python.readthedocs.org/ неофициальная документация] по Python-Selenium (её проще читать, чем официальную),
 +
 
 +
* [https://www.youtube.com/watch?v=tC618tbA5Yk&feature=youtu.be&t=11m10s видео].
 +
 
 +
===Занятие 16: REST API: XML/JSON===
 +
* Работа с открытыми API с помощью XML. [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%209.ipynb конспект] [http://www.youtube.com/watch?v=5aelkl2HAow видео].
 +
** Документация по API MediaWiki (движка Википедии): [https://www.mediawiki.org/wiki/API:Main_page основная на английском], [https://www.mediawiki.org/wiki/API:Main_page/ru на русском], [https://en.wikipedia.org/w/api.php автогенерированная на английском], [https://ru.wikipedia.org/w/api.php на русском].
 +
 
 +
* JSON и API. [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb конспект], [http://www.youtube.com/watch?v=tC618tbA5Yk видео]
 +
** [https://ischurov.github.io/jupyter-json.html Интерактивное исследование JSON в Jupyter]
 +
 
 +
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps09/ps09.ipynb ДЗ №9]
 +
 
 +
===Занятие 17: немного о математике и визуализациях===
 +
* SymPy & Plotly [http://math-info.hse.ru/f/2018-19/nes-ds/sympy-and-plotly.html сырой конспект с занятия] ([http://math-info.hse.ru/f/2018-19/nes-ds/sympy-and-plotly.ipynb исходник])
 +
 
 +
* [https://docs.sympy.org/latest/index.html SymPy] (символьные вычисления в Python): официальная документация
 +
 
 +
* [https://plot.ly/python/ plot.ly] (для Python)
 +
 
 +
===Занятие 18: ещё немного о математике о визуализациях===
 +
* scipy (функции для решения математических задач) & plotly.express (быстрая визуализация данных в plot.ly) [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/optimize-and-plotly-express.ipynb сырой конспект с занятия]
 +
 
 +
* [https://scipy-lectures.org scipy-lectures]: тьюториалы по scipy.
 +
 
 +
* [https://nbviewer.jupyter.org/github/plotly/plotly_express/blob/master/walkthrough.ipynb plotly.express]: примеры использования.
 +
 
 +
==Часть 2==
 +
===Занятие 19: введение в R===
 +
* [https://cloud.r-project.org скачать R] [https://www.rstudio.com/products/rstudio/download/ скачать RStudio] (Desktop, Open Source License), [https://rstudio.cloud rstudio.cloud] (можно ничего не скачивать).
 +
 
 +
* [https://swcarpentry.github.io/r-novice-inflammation/13-supp-data-structures/ структуры данных],  [https://www.datamentor.io/r-programming/data-frame/ dataframe], [https://swcarpentry.github.io/r-novice-inflammation/15-supp-loops-in-depth/index.html циклы] [https://swcarpentry.github.io/r-novice-inflammation/02-func-R/index.html функции], [http://github.com/rstudio/cheatsheets/raw/master/base-r.pdf шпаргалка по базовому R].
 +
 
 +
* Что было на занятии: [http://math-info.hse.ru/f/2018-19/nes-ds/rhistory.txt история команд], [http://math-info.hse.ru/f/2018-19/nes-ds/notebook.nb.html R Notebook]
 +
 
 +
===Занятие 20: tidyverse===
 +
* Установка tidyverse: <code>install.packages("tidyverse")</code>. Возможно, вам придётся установить переменную окружения [https://code.adonline.id.au/changing-the-default-library-folder-path-in-r/ R_LIB_USER], чтобы она указывала на какой-нибудь каталог, в который вы имеете право записывать файлы (туда будут устанавливаться библиотеки).
 +
 
 +
* [https://cran.r-project.org/web/packages/dplyr/vignettes/dplyr.html введение в dplyr].
 +
 
 +
* [https://r4ds.had.co.nz/tidy-data.html tidyr] (заблокировано в РФ): <code>gather</code> и <code>spread</code>.
 +
 
 +
* [https://datacarpentry.org/dc_zurich/R-ecology/04-dplyr группировка и агрегирование].
 +
 
 +
===Занятие 21: ggplot2===
 +
* Что было на занятиях: [http://math-info.hse.ru/f/2018-19/nes-ds/r-ggplot2.html R Notebook].
 +
 
 +
* [https://r4ds.had.co.nz/data-visualisation.html введение в ggplot2] (заблокировано в РФ), [https://www.r-graph-gallery.com галерея визуализаций в R], [http://www.ggplot2-exts.org/gallery/ галерея дополнений к ggplot2].
 +
 
 +
===Занятие 22: регулярные выражения===
 +
* [https://habr.com/ru/post/349860/ Подробный текст про регулярки]
 +
 
 +
* [https://regex101.com regex101] — визуальный отладчик регулярных выражений.
 +
 
 +
===Занятия 23-25: SQL===
 +
* конспекты занятий: [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/sql.ipynb раз], [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/sql2.ipynb два], [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/sql3.ipynb три].
 +
 
 +
* [https://www.w3schools.com/sql/ SQL Tutorial] (W3Schools) — я в основном следовал этому тьюториалу.
 +
 
 +
* [https://blog.jooq.org/2016/03/17/10-easy-steps-to-a-complete-understanding-of-sql/ Полезная статья] для понимания SQL.
 +
 
 +
* Библиотека [https://docs.python.org/3/library/sqlite3.html sqlite3] в Python.
 +
 
 +
* [http://www.sqlitetutorial.net SQLite Tutorial]
 +
 
 +
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps11/ps11.ipynb ДЗ№11]
 +
 
 +
===Занятие 26: объектно-ориентированное программирование===
 +
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/oop.ipynb конспект занятия]
 +
 
 +
===Занятие 27: SQLAlchemy===
 +
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/sqlalchemy.ipynb конспект занятия]
 +
 
 +
===Занятие 28: элементы обработки естественного языка===
 +
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/nlp.ipynb конспект занятия]
 +
 
 +
==Проекты==
 +
===Весенний проект===
 +
* [[/Весенний проект]] (срок сдачи: 15 апреля, 23:00)
 +
 
 +
Примеры хороших работ:
 +
 
 +
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/spring-projects/anna-schetkina.ipynb PhD Guide Project], автор Анна Щёткина.
 +
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/spring-projects/anna-sevostyanova.ipynb IMDB Project], автор Анна Щёткина.
 +
 
 +
===Летний проект===
 +
* [[/Летний проект]] (срок сдачи: 12 июня, 23:00)
 +
 
 +
==Данные==
 +
* [http://math-info.hse.ru/f/2018-19/spb-python/movie_metadata.csv imdb-5000] (источник: [https://www.kaggle.com/carolzhangdc/imdb-5000-movie-dataset https://www.kaggle.com/carolzhangdc/imdb-5000-movie-dataset])
 +
 
 +
* [http://math-info.hse.ru/f/2018-19/nes-ds/gradebook.sqlite gradebook.sqlite]

Версия 22:42, 3 мая 2020

Курс ведёт Илья Щуров.


Содержание

Инструменты

Python

Мы используем Python версии 3 и оболочку Jupyter (ранее известную как IPython Notebook). Чтобы их установить, проще всего скачать пакет Anaconda]. Обратите внимание: вам нужна версия с Python 3.x (в настоящее время — Python 3.7).

После установки Anaconda у вас появится:

  • Под Windows: в меню «Пуск» пункт «Anaconda», в нём подпункт «IPython Notebook».
  • Под Mac OS X: приложение Anaconda Launcher, в нём пункт ipython-notebook.

После запуска IPython Notebook у вас откроется окно браузера (и лучше пусть это будет не Internet Explorer, под ним IPython Notebook работает с некоторым скрипом, а иногда не работает) со списком файлов. В нём надо выбрать New → Python 3. Откроется новая вкладка браузера, в ней будет запущен пустой notebook, состоящий из отдельных ячеек (cells). В ячейку с кодом можно вписать код и нажать Shift+Enter — он выполнится и вам покажут тут же результат.

Для установки дополнительных пакетов вам необходимо открыть консоль (это может быть Anaconda Prompt под Windows или стандартный «Терминал» под Mac OS или Linux) и набрать команду conda install <название пакета> или pip install <название пакета> (например, conda install seaborn).

Вы также можете использовать Google Colaboratory] (но интерфейс там будет немножко отличаться от интерфейса Jupyter).

Работа с ipynb-файлами

Мы выкладываем материалы курса в виде ipynb-файлов. По ссылкам ниже вы можете просмотреть эти файлы. Если вы хотите открыть этот файл у себя, то вам необходимо скачать его (нажав на иконку в правом верхнем углу страницы с лекцией) и положить в каталог, из которого Jupyter открывает ноутбуки: например, воспользовавшись кнопкой Upload в самом Jupyter (на экране со списком файлов). Также этот каталог можно найти по строчке Serving notebooks from local directory: /home/user/IPython, появляющейся в чёрненьком окошке при запуске Jupyter; здесь /home/user/IPython — искомый путь.

Материалы

Занятие 1: Первое знакомство

Занятие 2: Списки и цикл for

Занятие 3: Ввод-вывод списков, проверка условий, цикл while

Занятие 4: Функции

Занятие 5: Списковые включения, zip, двумерные массивы и словари

Занятие 6: Сортировка

Занятие 7: Работа с файлами

Занятие 8: Numpy и картинки

Занятие 9: Введение в Pandas

Занятие 10: примеры использования pandas

Занятие 11: продвинутые возможности pandas

Занятие 12: ещё о pandas

Занятия 13 и 14: веб-скреппинг

Занятие 15: продвинутый скреппинг: RoboBrowser и Selenium

  • Извлечение данных с помощью RoboBrowser: конспект,
    • Оригинальная документация (англ.): RoboBrowser

Занятие 16: REST API: XML/JSON

Занятие 17: немного о математике и визуализациях

  • SymPy (символьные вычисления в Python): официальная документация

Занятие 18: ещё немного о математике о визуализациях

Часть 2

Занятие 19: введение в R

Занятие 20: tidyverse

  • Установка tidyverse: install.packages("tidyverse"). Возможно, вам придётся установить переменную окружения R_LIB_USER, чтобы она указывала на какой-нибудь каталог, в который вы имеете право записывать файлы (туда будут устанавливаться библиотеки).
  • tidyr (заблокировано в РФ): gather и spread.

Занятие 21: ggplot2

  • Что было на занятиях: R Notebook.

Занятие 22: регулярные выражения

  • regex101 — визуальный отладчик регулярных выражений.

Занятия 23-25: SQL

  • SQL Tutorial (W3Schools) — я в основном следовал этому тьюториалу.
  • Библиотека sqlite3 в Python.

Занятие 26: объектно-ориентированное программирование

Занятие 27: SQLAlchemy

Занятие 28: элементы обработки естественного языка

Проекты

Весенний проект

Примеры хороших работ:

Летний проект

Данные