冰砚炽
咸鱼中的咸鱼
冰糖开发日志

新型冠状病毒确诊人数数据可视化

获取数据

最近在 Github 上找到了是使用 Python 编写的爬取 “ 丁香园 ” 的实时爬虫。但获取到历史数据就需要用到这位开发者提供的数据仓库:

数据处理

我们这次可视化是要做各省的数据可视化,所以就需要各省的数据。数据仓库中也提供了 “ 地区数据 DXYArea.csv ”。分析之后会发现这份数据需要对数据进行两个处理:

合并各市级城市数据

数据仓库当中为我们提供的数据比较详细,包含了市级的数据,我原本考虑是做相加,但后来发现其实数据当中也包含了所在省的确认人数,因此我们只需要删除市级的数据即可。

provinceNamecityNameprovince_confirmedCountprovince_suspectedCountprovince_curedCountprovince_deadCountcity_confirmedCountcity_suspectedCountcity_curedCountcity_deadCountupdateTime
贵州省贵阳64081120402020/2/5 18:16:12
贵州省毕节64081110002020/2/5 18:16:12
贵州省六盘水6408190012020/2/5 18:16:12

可以用 Python 来实现删去除省级以外的内容,顺便实现一下时间倒序(从最远时间到最近时间):

# By Bing_Yanchi
import csv

data = []
after = []

# 读取数据
def read():
	with open('DXYArea.csv',encoding='utf-8') as f:
		f_csv = csv.reader(f)
		for row in f_csv:
			del row[9],row[8],row[7],row[6]
			del row[5],row[4],row[3],row[1]
			data.append(row)
# 合并数据
def merge():
	for i in range(len(data)):
		if i > 0 :
			if data[i][0] != data[i-1][0]:
				if data[i][2] != data[i-1][2]:
					data[i][2] = data[i][2][:-4]
					after.append(data[i])
# 添加表头
def reverse():
	after.reverse()
	after.insert(0,['name','value','date'])
# 写出数据
def write():
	with open('data.csv','w',newline='',encoding='utf-8') as f:
		f_csv = csv.writer(f)
		for row in after:
			f_csv.writerow(row)
read()
merge()
reverse()
write()

将更新数据转换为累计数据

数据仓库为我们提供的数据是某个省市数据变更后的储存记录,并不是每个时刻每个省份的数据,因此要再次对数据做更细的处理:

# By Bing_Yanchi
import csv

time = []
final = []
province = ['北京市','广东省','山东省','江苏省','河南省','上海市','河北省','浙江省','陕西省','湖南省','重庆市','福建省','天津市','云南省','四川省','广西壮族自治区','安徽省','海南省','江西省','湖北省','山西省','辽宁省','黑龙江','内蒙古自治区','贵州省','甘肃省','青海省','新疆维吾尔自治区','西藏区','吉林省','宁夏回族自治区']
value = {}
mid = []

# 生成字典
def init():
	for i in range(len(province)):
		value[province[i]] = '0'

# 获取时间列表
def get_time():
	with open('data.csv',encoding='utf-8') as f:
		f_csv = csv.reader(f)
		for row in f_csv:
			time.append(row[2])
		del time[0]

# 主程序
def main():
	with open('data.csv',encoding='utf-8') as f:
		f_csv = csv.reader(f)
		for row in f_csv:
			if row[2] != 'date':
				value[row[0]] = row[1]
				for a in range(len(province)):
					final.append([province[a],value[province[a]],row[2]])
	final.insert(0,['name','value','date'])

# 写出数据
def write():
	with open('data_new.csv','w',newline='',encoding='utf-8') as f:
		f_csv = csv.writer(f)
		for row in final:
			f_csv.writerow(row)

init()
main()
write()

代码开源

没有标签
首页      编程      Python      新型冠状病毒确诊人数数据可视化
Avatar photo

冰砚炽

文章作者

咸鱼中的咸鱼

发表回复

textsms
account_circle
email

冰糖开发日志

新型冠状病毒确诊人数数据可视化
获取数据 最近在 Github 上找到了是使用 Python 编写的爬取 “ 丁香园 ” 的实时爬虫。但获取到历史数据就需要用到这位开发者提供的数据仓库: 数据处理 我们这次可视化是要做…
扫描二维码继续阅读
2020-03-12