Каталог статей
набор данных
Источником данных для этой статьи является 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>