时间序列数据可视化
一、实验目的
通过实验,使学生能够掌握时变数据的可视化方法,并利用合适的图表可视化和分析时变数据的特征。
二、实验要求
通过Python中的常用图表函数调用,可视化给定的时变数据集,分析数据集的特征。
三、实验数据
数据是在世界各地的确诊COVID-19病例的累计数量,以及由此导致的死亡人数。
四、实验内容
1.确定可视化任务目标(绘制各国新冠累计确诊人数随时间的变化,以及中国累计死亡人数的日历图)
2.数据处理与变换(数据预处理,提取可视化需要的重要数据属性)
3.可视化映射与交互(标记和视觉通道的设计。折线图和日历图)
4.计算机编码实现可视化方案(利用python 的pandas扩展库读取数据,matplotlib扩展库进行可视化)
import pandas as pd
pd.read_csv(‘train.csv’)
5.利用数据可视化的功能,进行可视化分析
五、实验步骤
1.可视化设计
a)任务目标
绘制各国新冠累计确诊人数随时间的变化,以及中国累计死亡人数的日历图
b)数据预处理(所使用属性)
中国2020-01-22到2020-03-31每天确诊人数和累计死亡人数
c)可视化编码
用python
2.计算机编码实现
//中国新冠累计确诊人数随时间的变化
import datetime
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import rc
data = pd.read_csv('train.csv')
Country_Region = list(data['Country_Region'])
ConfirmedCases = list(data['ConfirmedCases'])
begin = datetime.date(2020, 1, 22)
end = datetime.date(2020, 3, 31)
final = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(len(final)):
final[i] = sum(ConfirmedCases[3430 + i:5741:70])
data_1 = [(str(begin + datetime.timedelta(days=i)))
for i in range((end - begin).days + 1)]
font = {'family': 'MicroSoft YaHei',
'weight': 'bold',
'size': '12'}
rc("font", **font)
plt.plot(data_1, final,label='确诊人数')
plt.xticks(data_1[::7], rotation=45)
plt.title("2020年中国新冠累计确诊人数随时间的变化")
plt.legend()
plt.show()
//中国累计死亡人数的日历图
import datetime
# 导入pyecharts绘制日历图的包
from pyecharts import options as opts
from pyecharts.charts import Calendar
import pandas as pd
import random
data = pd.read_csv('train.csv')
Country_Region = list(data['Country_Region'])
Fatalities = list(data['Fatalities'])
Province_State = list(data['Province_State'])
begin = datetime.date(2020, 1, 22)
end = datetime.date(2020, 3, 31)
final = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(len(final)):
final[i] = sum(Fatalities[3430 + i:5741:70])
data_1 = [(str(begin + datetime.timedelta(days=i)), final[i])
for i in range((end - begin).days + 1)]
c = (
Calendar()
.add("",
data_1,
calendar_opts=opts.CalendarOpts(
range_="2020",
daylabel_opts=opts.CalendarDayLabelOpts(name_map="cn"),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map="cn"), )
)
.set_global_opts(
title_opts=opts.TitleOpts(title="2020年新冠疫情中国死亡人数"),
visualmap_opts=opts.VisualMapOpts(
max_=300,
min_=0,
orient="horizontal",
pos_top="230px", pos_left="100px",
),
)
)
c.render_notebook()
3.数据可视化效果与分析推理