[Python + Flask + Echarts] Упражнения по визуализации - Всемирные данные о вакцинации против COVID-19 (статистическая диаграмма использования типов вакцин)



набор данных

Источником данных для этой статьи является https://www.kaggle.com/gpreda/covid-world-vaccination-progress
Вставьте описание изображения сюда
Основная информация:
Страна - это страна, которая предоставляет информацию о вакцинации;
Национальный код ISO - Национальный код ISO;
Дата - Данные Введите дату; для некоторых дат у нас есть только ежедневные прививки, для других дней только (совокупное) общее количество;
общее количество прививок - это абсолютное значение
общего количества прививок в стране; общее количество людей вакцинированы - в соответствии с различными графиками иммунизации человек будет вакцинирован одной или несколькими (обычно 2) вакцинами; в определенный момент количество прививок может быть больше, чем количество людей;
общее количество людей, которые полностью прошли вакцинацию. вакцинировано - это получение всего набора в соответствии с планом иммунизации (обычно 2 раза). Количество вакцинированных людей; в определенный момент определенное количество людей может быть вакцинировано вакциной, а другая (меньшая) группа людей вакцинируют все вакцины в плане;
каждый день вакцинации (примитивная) -дль Specific ввода данных, количество прививок в дате / стране;
ежедневно вакцинация -для некоторых входных данных, количество прививок в дате / стране;
общее количество прививок / количество прививок на дату в стране и от общей численности населения Процентное соотношение между популяциями (в процентах) ;
общее количество вакцинированных людей на сто иммунизации населения, отношение общей численности населения к дате в стране (в процентах ) ; общее количество
вакцинированных людей на сотню - население полностью иммунизировано, общая численность населения достигает даты домашнего соотношения (в процентах);
количество вакцинаций в день-Количество вакцинаций
в день для этого дня и страны / региона; количество вакцинаций на миллион дней; -отношение (ppm) между количеством прививок в текущий день в стране и общей численностью населения;
вакцины, использованные в страна - номер, использованный в стране Общее количество вакцин (последнее);
название источника - источник информации (национальный компетентный орган, международная организация, местная организация и т. д.);
веб-сайт источника - веб- сайт источника информации;

Вернуться наверх


требовать

Вставьте описание изображения сюда

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

Основная идея:

  • Извлеките два действительных столбца страны и вакцины, используемые в стране.
  • Дедупликация извлеченных данных, потому что все, что нужно, - 国家->使用疫苗类型это данные формы пары ключ-значение.
  • Групповые и агрегатные типы вакцин
  • Фреймворк Flask передает данные
  • Визуализация рендеринга HTML

Вернуться наверх


Код

① Предварительная обработка данных Python

import pandas as pd
from flask import Flask,render_template

# 读取数据集
data = pd.read_csv("G:\Projects\pycharmeProject-C\Flask\dataset\country_vaccinations.csv")
data.columns = ['国家','国家代码','日期','疫苗接种总数','接种的总人数','已完全接种疫苗的总人数','每日疫苗接种(原始)','每日疫苗接种','截至该国日期为止的总疫苗接种量/接种人数与总人口之间的百分率(百分比)','总人数每百接种疫苗','人每百全接种总数','每百万日接种量','该国使用的疫苗','来源名称','来源网站']

# 填补缺失值
data.fillna(0,inplace=True)

# 统计各国使用的疫苗种类
data_use = data[['国家','该国使用的疫苗']].drop_duplicates()
# 统计不同疫苗的在不同国家的使用情况
count = data_use['该国使用的疫苗'].value_counts()
# counts = data_use.groupby('该国使用的疫苗').agg(count=('该国使用的疫苗','count')).reset_index()

list = count.reset_index().values.tolist()

② Фреймворк Flask передает данные

# 可视化
app = Flask(__name__)
@app.route("/")
def index():
    sheets = list
    return render_template("country_vaccinations02.html",sheet = sheets)
if __name__ == '__main__':
    app.run(debug=True)

③ рендеринг HTML

<!DOCTYPE html>
<html lang="en" style="height:100%">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="height:100%">
<div style="height:100%" id="container"></div>
<script type="text/javascript" src="../static/echarts.min.js"></script>
<script type="text/javascript">
    var dom = document.getElementById("container");
    var myChart = echarts.init(dom);

    var data = [{
     
     % for item in sheet %}'{
     
     { item.0 }}',{
     
     % endfor %}];
    var data1 = [{
     
     % for item in sheet %}{
     
     {
     
      item.1 }},{
     
     % endfor %}];

    var option = null;
    option = {
     
     
        title:{
     
     
           text:'不同类型疫苗使用占比图',
        },
        tooltip:{
     
     
           trigger:'item',
           formatter:'{a}</br>{b}:{c}({d}%)'
        },
        legend:{
     
     
           show:true,
           left:'5%',
           top:'5%',
           orient:'vertical'
        },
        series:[
           {
     
     
               name:'疫苗使用情况',
               type:'pie',
               roseType:'area',
               radius:['10%','50%'],
               center:['50%','50%'],
               data:[
                   {
     
     name:data[0],value:[data1[0]]},
                   {
     
     name:data[1],value:[data1[1]]},
                   {
     
     name:data[2],value:[data1[2]]},
                   {
     
     name:data[3],value:[data1[3]]},
                   {
     
     name:data[4],value:[data1[4]]},
                   {
     
     name:data[5],value:[data1[5]]},
                   {
     
     name:data[6],value:[data1[6]]},
                   {
     
     name:data[7],value:[data1[7]]},
                   {
     
     name:data[8],value:[data1[8]]},
               ],
               emphasis: {
     
     
                    itemStyle: {
     
     
                        shadowBlur: 10,
                        shadowOffsetX: 0,
                        shadowColor: 'rgba(0, 0, 0, 0.5)'
                    }
               }
           }
        ]
    };
    if (option && typeof option == "object"){
     
     
       myChart.setOption(option);
    }
</script>
</body>
</html>

Вернуться наверх


Визуальный дисплей

Вставьте описание изображения сюда

Вернуться наверх


рекомендация

отblog.csdn.net/qq_45797116/article/details/113415122