Питон в реальной жизни

9 ноября. Модуль json

JSON - это текстовый формат обмена данными. Условно можно представить, чо это формат, в котором бывают:

Подробнее можно почитать, например, в википедии (но не факт, что от этого станет понятнее).

Давайте для примера посмотрим на json-файл с информацией о нашей школе (откроется в новом окне, скорее всего вам браузер его покажет довольно красиво, а не просто как текстовый файл).

Мы будем использовать модуль json (он входит в стандартную поставку python), и из него нам понадобится две функции: для ввода данных и для записи. В примерах ниже я сразу покажу, как считывать данные из json-файла, и как их записать:

import json
with open(INPUTFILENAME, encoding="utf-8") as fin:
    data = json.loads(fin.read())

with open(RESULTFILENAME, "w", encoding="utf-8") as fout:
    print(json.dumps(data), file=fout)
INPUTFILENAME и RESULTFILENAME - здесь должно быть указано имя файла. Параметр encoding="utf-8" нужен, если ваш файл в кодировке utf-8 (де-факто сегодня это стандарт для кодировки файлов, который стоит использовать). При этом на Портале открытых данных города Москвы по крайней мере некоторые dataset'ы выложены в кодировке ANSI-1251, для работы с ними нужно указывать encoding="cp1251" При записи полезно указать еще два параметра: То есть блок записи должен выглядеть как-то так:
with open(RESULTFILENAME, "w", encoding="utf-8") as fout:
    print(json.dumps(data, ensure_ascii=False, indent=4), file=fout)

Упражнения

Победители и призеры олимпиад

Давайте посмотрим на набор данных Победители и призеры олимпиад. Сделайте следующее:

Московские школы

Посмотрите на датасет Образовательные учреждения города Москвы.

Общественное питание

Посмотрите на датасет Общественное питание в Москве

Давайте попробуем посмотреть, как пандемия повлияла на ресторанный бизнес.

"Я знаю пять имен девочек, я знаю пять имен мальчиков"

30 ноября. Рисование на карте

Скачайте архив. Запустите программу example.py (остальные файлы и директория templates при этом тоже нужны). Она создаст файл example.html - откройте его в браузере. Почитайте текст программы и попробуйте что-нибудь поменять, запустите программу заново, и обновите открытый html-файл в браузере.

Выполните какие-нибудь из упражнений:

7 декабря. Еще данные и визуализация

ДТП с пострадавшими

Внимание! В этом датасете приведены реальные данные про ДТП с пострадавшими и погибшими. Подумайте заранее, готовы ли вы (и хотите ли вообще) работать с такого рода данными.

Вам дан датасет про ДТП с пострадавшими в Москве и Московской области за 2020 год:

В этом файле данные записаны в кодировке utf-8, но каждая строка является отдельным json-ом, описывающим одно ДТП. Это дает возможность обрабатывать данные, не загружая их в память целиком. Пример кода для работы с данными:

with open(FILENAME, encoding="utf-8") as fin:
    for curline in fin:
        data = json.loads(curline)
        обработать данные из переменной data прежде, чем считать в эту переменную следующую строчку

Упражнения:

Автобусные маршруты Москвы

Посмотрите на датасет про автобусные маршруты (скачанные данные за 22 ноября 2021). Упражнения:

Города

В случайном месте Интернета я нашел API, которое, в частности, умеет выдавать список каких-то городов. Вот описание на сайте, где я скачал данные. А вот и сами данные. Упражнения: