Найти тему
Your Life

Пишем скрипт для получения данных по Covid-19

Я решил не плодить в интернете статьи с обзорами ситуации по Covid-19, но часто не могу найти в интернете удобные графики, поэтому родился этот пост.

В этой статье мы напишем скрипт для получения данных с сайта coronavirus-monitor.ru и представления их в удобном для анализа виде.

Я постарался дать такое описание скрипту, чтобы с его использованием справился даже человек не знакомый с программированием вовсе. Но если у кого-то всё-таки возникнут вопросы, их можно задать в комментариях.

Когда выбрал задачу не по профессии
Когда выбрал задачу не по профессии

Код различных вариаций скрипта можно скачать здесь.

Скрипт написан языке Python. Чтобы его запустить, потребуется установить Python с официального сайта.

Затем, нужно запустить командную строку на своём компьютере и запустить последовательно команды pip install requests, pip install json, pip install matplotlib, дожидаясь установки каждого из этих компонентов. Так выглядит процесс установки необходимых для работы скрипта библиотек.

Затем необходимо нажать Пуск и найти установленный на первом этапе компонент IDLE (Python). В открывшемся окне нажимаем File->New File. В новое открывшееся окно помещаем код скрипта. Запустить его можно клавишей F5 (на вопрос "сохранить ли файл перед запуском - нажимаем сохранить и выбираем удобное место").

Теперь к самому скрипту. Следующий код выводит график с количеством выявленных заражений по субъектам РФ. Я разбил его на части, чтобы было удобнее понимать. Первая часть выглядит так:

import requests
import json
import matplotlib.pyplot as plt

В ней мы импортируем необходимые библиотеки для работы скрипта. (requests - для получения данных с интернет-ресурса, json - для работы с форматом представления данных json, matplotlib - для построения графиков). Далее мы получаем данные с интернет-ресурса и помещаем их в переменную alldata:

alldata = requests.get('https://coronavirus-monitor.ru/jquery-lite-9.js?a=12')

После чего заменяем в полученных данных выражение 'window.dataFromServer =' на пустое значение с помощью метода replace, а также обрезаем все лишние пробелы в начале и в конце файла методом strip.

C помощью json.loads преобразуем json формат в словарь Python и переходим по ключам словаря последовательно в непосредственно место, где находятся необходимые нам данные.

Создаём пустые списки citiess, confirmedd, ya, xa. Их мы будем наполнять в позже.

data = alldata.text.replace('window.dataFromServer = ', '').strip()
subjects = json.loads(data)['russianSubjects']['data']['subjects']
citiess = []
confirmedd = []
ya = []
xa = []

Следующий цикл for пробегает по всем субъектам РФ и записывает в списки citiess и confirmedd названия субъектов РФ и количество заражённых в них.

for subject in subjects:
cities = subject['en']
deaths = subject['deaths']
cured = subject['cured']
confirmed = subject['confirmed']
citiess.append(cities)
confirmedd.append(confirmed)

Записываем в listcities список формата [(количество заражений, название субъекта РФ), ( количество заражений, название субъекта РФ) ...], а затем сортируем этот список по количеству выписанных.

listcities = list(zip(confirmedd, citiess))
listcities.sort(key=lambda x: x[0])

Обрезаем города, где количество подтверждённых случаев заражения равно нулю, и снова записываем два списка: ya с количеством подтверждённых случаев заражения и xa с названиями соответствующих субъектов РФ.

listcities = [x for x in listcities if x[0]]
[ya.append(n[0]) for n in listcities]
[xa.append(n[1]) for n in listcities]

Далее, если это необходимо, можно обрезать количество выводимых на графике субъектов РФ. Например, выведем топ 10 субъектов по количеству заражённых.

ya = ya[-10:]
xa = xa[-10:]

И нарисуем сам график!

plt.bar(xa, ya)
plt.title('Количество выявленных заражений Covid-19 в субъектах России')
plt.xlabel('Наименование субъекта')
plt.ylabel('Количество заражений')
plt.xticks(rotation=90, horizontalalignment='left', fontsize=12)
plt.show()


Он будет выглядеть так:

Вид графика, выводимого программой
Вид графика, выводимого программой

Этот код нетрудно исправить для вывода графиков по количеству летальных исходов, выписанных пациентов, по расчёту смертности, летальности, для вывода всего этого не для субъектов РФ, а для стран мира.

Если вы хотите увидеть разбор какого-то ещё скрипта по Вашим пожеланиям, напишите об этом в комментариях!

Понравилась статья? Не забудь поставить лайк и подписаться.