Программирование для дата-журналистики: различия между версиями

Материалы по математике, 2017-18 учебный год
Перейти к навигации Перейти к поиску
(Новая страница: «Это страничка курсов «Введение в программирование» и «Программирование» на магистерск...»)
 
 
Строка 3: Строка 3:
 
Автор курса: Щуров И.В.
 
Автор курса: Щуров И.В.
  
__TOC__
+
==Софт==
 
== Софт ==
 
 
Мы используем Python 3 и оболочку Jupyter (ранее известный как IPython Notebook). Чтобы их установить, проще всего скачать пакет [http://continuum.io/downloads Anaconda]. Обратите внимание: вам нужна версия с Python 3.x.
 
Мы используем Python 3 и оболочку Jupyter (ранее известный как IPython Notebook). Чтобы их установить, проще всего скачать пакет [http://continuum.io/downloads Anaconda]. Обратите внимание: вам нужна версия с Python 3.x.
  
Строка 11: Строка 9:
  
 
* Под Windows: в меню «Пуск» пункт «Anaconda», в нём подпункт «IPython Notebook».
 
* Под Windows: в меню «Пуск» пункт «Anaconda», в нём подпункт «IPython Notebook».
 +
 
* Под Mac OS X: приложение Anaconda Launcher, в нём пункт ipython-notebook.
 
* Под Mac OS X: приложение Anaconda Launcher, в нём пункт ipython-notebook.
  
После запуска IPython Notebook у вас откроется окно браузера (и лучше пусть это будет не Internet Explorer, под ним IPython Notebook работает с некоторым скриптом, а иногда не работает) со списком файлов. В нём надо выбрать ''New → Python 3''. Откроется новая вкладка браузера, в ней будет запущен пустой notebook, состоящий из отдельных ячеек (cells). В ячейку с кодом можно вписать код и нажать Shift+Enter — он выполнится и вам покажут тут же результат.
+
После запуска IPython Notebook у вас откроется окно браузера (и лучше пусть это будет не Internet Explorer, под ним IPython Notebook работает с некоторым скриптом, а иногда не работает) со списком файлов. В нём надо выбрать New → Python 3. Откроется новая вкладка браузера, в ней будет запущен пустой notebook, состоящий из отдельных ячеек (cells). В ячейку с кодом можно вписать код и нажать Shift+Enter — он выполнится и вам покажут тут же результат.
  
== Материалы ==
+
==Материалы==
 +
===Как использовать===
 +
Мы выкладываем материалы курса в виде ipynb-файлов. По ссылкам выше вы можете просмотреть эти файлы. Если вы хотите открыть этот файл у себя, то вам необходимо скачать его (нажав на иконку в правом верхнем углу страницы с лекцией) и положить в каталог, из которого Jupyter открывает ноутбуки: например, воспользовавшись кнопкой Upload в самом Jupyter (на экране со списком файлов). Также этот каталог можно найти по строчке <code>Serving notebooks from local directory: /home/user/IPython</code>, появляющейся в чёрненьком окошке при запуске Jupyter; здесь <code>/home/user/IPython</code> — искомый путь.
  
=== Как использовать ===
+
===Основы программирования===
[[Файл:Nbviewer download icon.png|thumb|right|Чтобы скачать ipynb-файл, нужно кликнуть на иконку в красном кружке правой кнопкой и выбрать «сохранить файл как» или аналогичный пункт меню]]
+
{| class="wikitable"
Мы выкладываем материалы курса в виде ipynb-файлов. По ссылкам выше вы можете просмотреть эти файлы. Если вы хотите открыть этот файл у себя, то вам необходимо скачать его (нажав на иконку в правом верхнем углу страницы с лекцией) и положить в каталог, из которого Jupyter открывает ноутбуки: например, воспользовавшись кнопкой ''Upload'' в самом Jupyter (на экране со списком файлов). Также этот каталог можно найти по строчке <code>Serving notebooks from local directory: /home/user/IPython</code>, появляющейся в чёрненьком окошке при запуске Jupyter; здесь <code>/home/user/IPython</code> — искомый путь.
+
!  неделя
 +
!  тема
 +
!  конспект
 +
!  доп. материалы  
 +
!  видео
 +
!  задачи
  
[[Файл:Jupyter-Upload.png|thumb|right|Чтобы загрузить файл в IPython Notebook, можно нажать на кнопку ''Upload'']]
 
 
==== Основы программирования ====
 
{|class='wikitable'
 
! неделя !! тема !! конспект !! доп. материалы || видео !! задачи
 
 
|-
 
|-
| 1  
+
| 1<br>
| Первое знакомство.
+
| Первое знакомство.<br>
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%201.ipynb ipynb]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%201.ipynb ipynb]<br>
| {{PT}}: [http://pythontutor.ru/lessons/inout_and_arithmetic_operations/ арифметические операции], [http://pythontutor.ru/lessons/int_and_float/ целые и вещественные числа]
+
| PT: [http://pythontutor.ru/lessons/inout_and_arithmetic_operations/ арифметические операции], [http://pythontutor.ru/lessons/int_and_float/ целые и вещественные числа]<br>
| [http://www.youtube.com/watch?v=5Y5tKPKhurA видео]
+
| [http://www.youtube.com/watch?v=5Y5tKPKhurA видео]<br>
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps01/ps01.ipynb ps01]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps01/ps01.ipynb ps01]<br>
 
|-
 
|-
| 2
+
| 2<br>
| Списки и цикл <code>for</code>.
+
| Списки и цикл <code>for</code>.<br>
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%202.ipynb ipynb]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%202.ipynb ipynb]<br>
| {{PT}}: [http://pythontutor.ru/lessons/for_loop/ цикл for], [http://pythontutor.ru/lessons/lists/ списки]
+
| PT: [http://pythontutor.ru/lessons/for_loop/ цикл for], [http://pythontutor.ru/lessons/lists/ списки]<br>
| [https://www.youtube.com/watch?v=kBu3g-ITjY4 видео]  
+
| [https://www.youtube.com/watch?v=kBu3g-ITjY4 видео]<br>
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps02/ps02.ipynb ps02]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps02/ps02.ipynb ps02]<br>
 
|-
 
|-
| 3
+
| 3<br>
| Ещё о списках и циклах
+
| Ещё о списках и циклах<br>
| [http://python.math-hse.info:8080/github/ischurov/djprog2017/blob/master/lecture03.ipynb ipynb]
+
| [http://python.math-hse.info:8080/github/ischurov/djprog2017/blob/master/lecture03.ipynb ipynb]<br>
|
+
| <br>
|
+
| <br>
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps03/ps03.ipynb ps03]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps03/ps03.ipynb ps03]<br>
 
|-
 
|-
| 4
+
| 4<br>
| Конструкция <code>if</code> и проверка условий. Списковые включения.
+
| Конструкция <code>if</code> и проверка условий. Списковые включения.<br>
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%203.ipynb#%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D0%B9 проверка условий] [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb#Списковые-включения-(list-comprehensions) list comprehensions]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%203.ipynb#%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D0%B9 проверка условий] [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb#Списковые-включения-(list-comprehensions) list comprehensions]<br>
| {{PT}}: [http://pythontutor.ru/lessons/lists/#section_2 split и join], [http://pythontutor.ru/lessons/ifelse/ if], [http://pythontutor.ru/lessons/while/ while]
+
| PT: [http://pythontutor.ru/lessons/lists/#section_2 split и join], [http://pythontutor.ru/lessons/ifelse/ if], [http://pythontutor.ru/lessons/while/ while]<br>
| [http://www.youtube.com/watch?v=uzgaCV8KZA0 видео]  
+
| [http://www.youtube.com/watch?v=uzgaCV8KZA0 видео]<br>
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps04/ps04.ipynb ps04]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps04/ps04.ipynb ps04]<br>
 
|-
 
|-
| 5
+
| 5<br>
| Функции
+
| Функции<br>
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%204.ipynb ipynb]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%204.ipynb ipynb]<br>
| {{PT}}: [http://pythontutor.ru/lessons/functions/ функции]
+
| PT: [http://pythontutor.ru/lessons/functions/ функции]<br>
| [http://www.youtube.com/watch?v=NYrYSFyCg4w видео]  
+
| [http://www.youtube.com/watch?v=NYrYSFyCg4w видео]<br>
| [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/dj2017/ps05/ps05.ipynb ps05]
+
| [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/dj2017/ps05/ps05.ipynb ps05]<br>
 
|-
 
|-
| 6
+
| 6<br>
| Словари
+
| Словари<br>
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb ipynb]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb ipynb]<br>
| {{PT}} [http://pythontutor.ru/lessons/dicts словари]
+
| PT [http://pythontutor.ru/lessons/dicts словари]<br>
| [http://www.youtube.com/watch?v=z8bu_b5BboI видео]
+
| [http://www.youtube.com/watch?v=z8bu_b5BboI видео]<br>
| [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/dj2017/ps06/ps06.ipynb ps06]
+
| [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/dj2017/ps06/ps06.ipynb ps06]<br>
 
|}
 
|}
 +
===Программирование: Python===
 +
{| class="wikitable"
 +
!  неделя
 +
!  тема
 +
!  конспект
 +
!  доп. материалы
 +
!  задачи
  
==== Программирование ====
 
{|class='wikitable'
 
! неделя !! тема !! конспект !! доп. материалы !! задачи
 
 
|-
 
|-
| 7
+
| 7<br>
| Обсуждение задач экзамена. Сортировка  
+
| Обсуждение задач экзамена. Сортировка<br>
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%206.ipynb#Сортировка ipynb]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%206.ipynb#Сортировка ipynb]<br>
| [https://docs.python.org/3/howto/sorting.html О сортировке] (англ.)
+
| [https://docs.python.org/3/howto/sorting.html О сортировке] (англ.)<br>
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps07/ps07.ipynb ps07]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps07/ps07.ipynb ps07]<br>
 +
|-
 +
|  8<br>
 +
|  Особенности работы с изменяемыми типами данных: <code>copy</code> и <code>deepcopy</code>. Файловый ввод-вывод<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%207.ipynb ipynb]<br>
 +
|  [https://docs.python.org/3/tutorial/inputoutput.html Ввод-вывод в Python 3] (англ.), [https://www.youtube.com/watch?v=KaWGNPgUOHo видео]<br>
 +
|  [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps08/ps08.ipynb ps08]<br>
 +
|-
 +
|  9<br>
 +
|  Форматирование строк. Хитрости с вещественными числами. Исключения.<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/dj-prog/blob/master/Lesson%203.ipynb#Исключения Исключения]<br>
 +
|  [https://pyformat.info Шпаргалка по форматированию строк] (англ., не обсуждаются f-strings)<br>
 +
|  [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps09/ps09.ipynb ps09]<br>
 +
|-
 +
|  10<br>
 +
|  Функции как способ структурирования программы<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/djprog2017/blob/master/process-elections.ipynb Задачи]<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/dj-prog/blob/master/Lesson%202.ipynb Конспект семинара прошлого года]<br>
 +
|  [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps10/ps10.ipynb ps10]<br>
 +
|-
 +
|  11<br>
 +
|  JSON API<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb Лекции]<br>
 +
| <br>
 +
|  [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps11/ps11.ipynb ps11]<br>
 
|-
 
|-
| 8
+
| 12<br>
| Особенности работы с изменяемыми типами данных: <code>copy</code> и <code>deepcopy</code>. Файловый ввод-вывод
+
| Классы и объектно-ориентированное программирование<br>
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%207.ipynb ipynb]
+
| <br>
| [https://docs.python.org/3/tutorial/inputoutput.html Ввод-вывод в Python 3] (англ.), [https://www.youtube.com/watch?v=KaWGNPgUOHo видео]
+
| [https://docs.python.org/3/tutorial/classes.html Официальная документация]<br>
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps08/ps08.ipynb ps08]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps12/ps12.ipynb ps12]<br>
 
|-
 
|-
| 9
+
| 13-14<br>
| Форматирование строк. Хитрости с вещественными числами. Исключения.
+
| Веб-скреппинг<br>
| [http://python.math-hse.info:8080/github/ischurov/dj-prog/blob/master/Lesson%203.ipynb#Исключения Исключения]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%208.ipynb базовый скреппинг], [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb robobrowser и selenium]<br>
| [https://pyformat.info Шпаргалка по форматированию строк] (англ., не обсуждаются f-strings)
+
|  Оригинальная документация (англ.): [http://docs.python-requests.org/en/latest/ requests] [http://www.crummy.com/software/BeautifulSoup/bs4/doc/ BeautifulSoup], [http://www.youtube.com/watch?v=3nPksaHTMGI видео], [http://robobrowser.readthedocs.org/en/latest/ RoboBrowser], [http://selenium-python.readthedocs.org/ неофициальная документация] по Python-Selenium (её проще читать, чем официальную), [http://www.youtube.com/watch?v=tC618tbA5Yk видео]<br>
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps09/ps09.ipynb ps09]
+
| <br>
 
|-
 
|-
| 10
+
| 15<br>
| Функции как способ структурирования программы
+
| Генераторы. Наследование.<br>
| [http://python.math-hse.info:8080/github/ischurov/djprog2017/blob/master/process-elections.ipynb Задачи]
+
| <br>
| [http://python.math-hse.info:8080/github/ischurov/dj-prog/blob/master/Lesson%202.ipynb Конспект семинара прошлого года]
+
| <br>
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps10/ps10.ipynb ps10]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps13/ps13.ipynb ps13]<br>
 
|}
 
|}
 +
===JavaScript===
 +
* [https://ischurov.github.io/pythonvjs/ Python.v.JS]: сравнение Python и JavaScript.
 +
 +
* [http://python.math-hse.info:8080/github/ischurov/dj-prog/blob/master/javascript.ipynb Сырой конспект первого занятия]
 +
 +
* [http://learn.javascript.ru learn.javascript.ru]: хороший электронный учебник.
 +
 +
* [https://github.com/getify/You-Dont-Know-JS You Don't Know JavaScript]: серия книг для тех, кто хочет разобраться, как оно действительно там всё устроено.
 +
 +
* [http://jsbin.com/tejaqev/ коровы и быки]
 +
 +
* [https://jsbin.com/dakuman/ пример с plotly]
 +
**
 +
**  [http://math-info.hse.ru/2017-18/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BB%D1%8F_%D0%B4%D0%B0%D1%82%D0%B0-%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8/%D0%94%D0%97_%E2%84%9615 ДЗ №15]
 +
 +
===Итоговый проект===
 +
* [http://math-info.hse.ru/2017-18/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BB%D1%8F_%D0%B4%D0%B0%D1%82%D0%B0-%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8/%D0%98%D1%82%D0%BE%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82 Итоговый проект]

Текущая версия на 14:11, 8 февраля 2020

Это страничка курсов «Введение в программирование» и «Программирование» на магистерской программе «Журналистика данных».

Автор курса: Щуров И.В.

Софт

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

После установки 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 — он выполнится и вам покажут тут же результат.

Материалы

Как использовать

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

Основы программирования

неделя тема конспект доп. материалы видео задачи
1
Первое знакомство.
ipynb
PT: арифметические операции, целые и вещественные числа
видео
ps01
2
Списки и цикл for.
ipynb
PT: цикл for, списки
видео
ps02
3
Ещё о списках и циклах
ipynb


ps03
4
Конструкция if и проверка условий. Списковые включения.
проверка условий list comprehensions
PT: split и join, if, while
видео
ps04
5
Функции
ipynb
PT: функции
видео
ps05
6
Словари
ipynb
PT словари
видео
ps06

Программирование: Python

неделя тема конспект доп. материалы задачи
7
Обсуждение задач экзамена. Сортировка
ipynb
О сортировке (англ.)
ps07
8
Особенности работы с изменяемыми типами данных: copy и deepcopy. Файловый ввод-вывод
ipynb
Ввод-вывод в Python 3 (англ.), видео
ps08
9
Форматирование строк. Хитрости с вещественными числами. Исключения.
Исключения
Шпаргалка по форматированию строк (англ., не обсуждаются f-strings)
ps09
10
Функции как способ структурирования программы
Задачи
Конспект семинара прошлого года
ps10
11
JSON API
Лекции

ps11
12
Классы и объектно-ориентированное программирование

Официальная документация
ps12
13-14
Веб-скреппинг
базовый скреппинг, robobrowser и selenium
Оригинальная документация (англ.): requests BeautifulSoup, видео, RoboBrowser, неофициальная документация по Python-Selenium (её проще читать, чем официальную), видео

15
Генераторы. Наследование.


ps13

JavaScript

  • You Don't Know JavaScript: серия книг для тех, кто хочет разобраться, как оно действительно там всё устроено.

Итоговый проект