跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

通过爱数科下载大型COVID-19疫情数据集分析世界上的新冠病毒状况 - Beardless

精选回复

发布于

一、选题背景

选题目的和想要达到的目标:人们对疫情的关注程度却普遍下降,特别是对全世界的疫情很多人更是一无所知。所以我分析了世界上的新冠病毒状况。想要将世界上的疫情情况可视化,以简单易懂的方式展现在大家面前。并以此来提醒所有人疫情并没有结束,大家仍然要做好防范疫情传播的措施,希望大家通过我的分析了解到疫情还在持续,不要为国家拖后腿。

经济层面:分析疫情情况,对挽救经济的措施的施行提供便利。

技术层面:通过一个学期的学习将数据集变为简单易懂的图形。

数据来源方面:爱数科具有大量可分析数据,简单方便,且内容涵盖较广。

二、大数据分析设计方案

1.本数据集的数据内容与数据特征分析

本数据集是通过爱数科下载的大型COVID-19疫情数据集,该数据集包含从2/24/2020到6/29/2021的最新新冠疫情世界状态数据,非常适合探索性数据分析,有接近十万行数据可供使用,且为表格数据。

2.数据分析的课程设计方案概述

①通过爱数科下载大型COVID-19疫情数据集。#来源网址 http://idatascience.cn/dataset-detail?table_id=100017

②导入库和数据集,对COVID-19数据集数据分析及基于全球地图数据可视化,保存于电脑;为了能够更加直观地看到各国家疫情数据差异,做表查看;进行数据清洗,查看各地区疫情最严重一天。以及各种统计分析并将他们进行可视化处理

三、数据分析步骤

 1.数据源

#来源网址 http://idatascience.cn/dataset-detail?table_id=100017

2.数据清洗

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 import pandas as pd
 4 
 5 # 忽略警告信息
 6 import warnings
 7 warnings.filterwarnings('ignore')
 8 
 9 # 设置中文字体 kesci 专用代码
10 plt.rcParams['font.sans-serif'].insert(0, 'Microsoft YaHei')
11 
12 df=pd.read_csv('C:/Users/ASUS/大型COVID-19疫情数据集.csv')
13 df.head()

5qsa1plmj223742.png

 

 

②为了能够更加直观地看到各国家疫情数据差异,做表查看。

 1 df=pd.read_csv('C:/Users/ASUS/大型COVID-19疫情数据集.csv')
 2 new_df=pd.DataFrame({'国家编号':df['iso_code'].unique(),
 3                      '次数':[0]*len(df['iso_code'].unique())})
 4 groupy_area=df.groupby(by='iso_code').count()
 5 new_df['次数']=groupy_area.values
 6 # 按“数量”一列从大到小排列
 7 new_df.sort_values(by=['次数'],ascending=False)
 8 #new_df
 9 # 定义函数,用来计算国家编号出现次数 
10 def all_house(arr):
11     arr=np.array(arr)
12     key=np.unique(arr)
13     result={}
14     for k in key:
15         mask=(arr==k)
16         arr_new=arr[mask]
17         v=arr_new.size
18         result[k]=v
19     return result
20 # 获取国家编号数据
21 house_array=df['iso_code']
22 house_info=all_house(house_array)
23 house_info
24 # 使用字典推导式
25 house_type=dict((key,value) for key,value in house_info.items() if value>50)
26 show_houses=pd.DataFrame({'国家编号':[x for x in house_type.keys()],
27                          '次数':[x for x in house_type.values()]})
28 print(show_houses)

gybcufa3t443743.png

 

 

 ③进行数据清洗,查看各地区疫情最严重一天

1 import numpy as np
2 import pandas as pd
3 import matplotlib.pyplot as plt
4 import seaborn as sns
5 #按省份统计确诊人数
6 df=pd.read_csv('C:/Users/ASUS/大型COVID-19疫情数据集.csv')
7 
8 diqu = df.groupby(by='location').agg('max')
9 diqu

eje1f1jmqwl3744.png

 

 

3.大数据分析过程及采用的算法

1 import matplotlib.pyplot as plt
2 import seaborn as sns
3 # 数据准备
4 # iris = sns.load_dataset('iris')
5 iris =pd.read_csv('C:/Users/ASUS/大型COVID-19疫情数据集.csv')
6 # 用Seaborn画成对关系
7 sns.pairplot(iris)
8 plt.show()

dk32voa5rnj3745.png

 

 

 ②

 1 from pyecharts import options as opts
 2 from pyecharts.charts import Map
 3 data=pd.read_csv('C:/Users/ASUS/大型COVID-19疫情数据集.csv')
 4 world_map = Map(init_opts=opts.InitOpts(width="1800px", height="700px", 
 5             bg_color="#ADD8E6", page_title="世界疫情地图",theme='white'))
 6 world_map.add("确诊病例",[list(z) for z in zip(data["location"],data["total_cases"] )],
 7             is_map_symbol_show=False,maptype="world",
 8             label_opts=opts.LabelOpts(is_show=False),
 9             itemstyle_opts=opts.ItemStyleOpts(color="rgb(98,120,140)"))
10 world_map.set_global_opts(title_opts = opts.TitleOpts(title='全世界新冠确诊人数'),
11             legend_opts=opts.LegendOpts(is_show=False),
12             visualmap_opts=opts.VisualMapOpts(max_=10000000, is_piecewise=True,
13                 pieces=[{"max": 10000000, "min": 1000001, "label": ">1000000", "color": "#8A0808"},
14                         {"max": 1000000, "min": 100001, "label": "1000000-100001", "color": "#B40404"},
15                         {"max": 100000, "min": 10001, "label": "100000-10001", "color": "#DF0101"},
16                         {"max": 10000, "min": 1001, "label": "10000-1001", "color": "#F78181"},
17                         {"max": 1000, "min": 100, "label": "1000-100", "color": "#F5A9A9"},
18                         {"max": 100, "min": 0, "label": "<100", "color": "#fababa"},]
19                     )  
20             )
21 #保存地图      
22 world_map.render('世界新冠疫情地图.html')

esayxcfeffo3746.png

 

 

4.数据可视化

①各国家疫情数据差异可视化处理查看各过疫情数据量

 1 #对上表可视化处理查看各国家疫情数据量
 2 fig,ax = plt.subplots()
 3 fig.set_size_inches(10,100)
 4 xq = df['iso_code'].value_counts().sort_values()
 5 index = list(xq.index)
 6 value = list(xq.values)
 7 qx = pd.DataFrame({'iso_code':index,'国家编号':value})
 8 qx.plot.barh(x='iso_code',y='国家编号',ax=ax,color='blue',fontsize=12)
 9 plt.legend(loc='right')
10 for a,b in zip(value,np.arange(0,14,1)):
11     plt.text(a+0.5,b,a,fontsize=12)
12 plt.show()

z3spcfi2kjc3747.png

 

 

 is4dmsh11rq3748.png

 

 

 ②总病例随时间变化可视化

 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 fig = plt.figure(figsize=(100,50))
 4 # 数据准备
 5 x = df['date']
 6 y = df['total_cases']
 7 # 用Matplotlib画散点图
 8 plt.xticks(rotation=270)
 9 plt.scatter(x, y,marker='x')
10 plt.show()
11 plt.tight_layout()

1x5vjsgrir03749.png

 

 ③查看各大洲的疫情数据占比

from pylab import *
df=pd.read_csv('C:/Users/ASUS/大型COVID-19疫情数据集.csv')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
df = (df['continent'].value_counts())[:16].to_frame()
plt.figure(figsize=(15,15))
plt.pie(df['continent'], labels=df.index.values, autopct='%.1f%%')
plt.title('各大洲的疫情数据占比',fontsize=20)

from pylab import *
df=pd.read_csv('C:/Users/ASUS/大型COVID-19疫情数据集.csv')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
df = (df['location'].value_counts())[:16].to_frame()
plt.figure(figsize=(15,15))
plt.pie(df['location'], labels=df.index.values, autopct='%.1f%%')
plt.title('各国家的疫情数据占比',fontsize=20)

1qahuryvjw33750.png

 

 y3m5zwkmj213751.png

 

 ④各国家新增病例可视化

 1 import matplotlib.pyplot as plt
 2 import seaborn as sns
 3 # 数据准备
 4 x =diqu['iso_code']
 5 y = diqu['new_cases']
 6 # 用Matplotlib画条形图
 7 fig = plt.figure(figsize=(100,50))
 8 plt.xticks(rotation=270)
 9 plt.bar(x, y)
10 plt.show()
11 # 用Seaborn画条形图
12 fig = plt.figure(figsize=(100,50))
13 plt.xticks(rotation=270)
14 sns.barplot(x, y)
15 plt.show()

0fzcoyk4kyb3752.png

 

 lmtaabbqjc23753.png

 

 ⑤查看总患病人和死亡和再生人数关系

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 from mpl_toolkits. mplot3d import Axes3D
 4 fig = plt.figure()
 5 ax = Axes3D(fig,auto_add_to_figure=False)
 6 fig.add_axes(ax)
 7 x = gj['total_cases']
 8 y = gj['total_deaths']
 9 z = gj['reproduction_rate']
10 ax. scatter(x, y, z)
11 ax.set_xlabel('总病例')
12 ax.set_ylabel( '总死亡')
13 ax.set_zlabel('再生指数')
14 plt.show()

h5o5av4a0yk3754.png

 

 ⑥查看国家首都gdp和人口数和接种疫苗人数关系

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 from mpl_toolkits. mplot3d import Axes3D
 4 fig = plt.figure()
 5 ax = Axes3D(fig,auto_add_to_figure=False)
 6 fig.add_axes(ax)
 7 x = gj['gdp_per_capita']
 8 y = gj['population']
 9 z = gj['people_fully_vaccinated']
10 ax. scatter(x, y, z)
11 ax.set_xlabel('首都GDP')
12 ax.set_ylabel( '人口数')
13 ax.set_zlabel('疫苗完全接种人数')
14 plt.show()

xdv5ink53ld3755.png

 

 五、附完整程序源代码

  1 #通过爱数科下载大型COVID-19疫情数据集
  2 #来源网址 http://idatascience.cn/dataset-detail?table_id=100017
  3 #本数据集包含该数据集包含从2/24/2020到6/29/2021的最新新冠疫情世界状态数据。该数据集可用于分析世界上的新冠病毒状况。
  4 #----------------------------------------------------------------
  5 #导入库,导入数据集
  6 import matplotlib.pyplot as plt
  7 import numpy as np
  8 import pandas as pd
  9 df=pd.read_csv('C:/Users/bb/python-jupyter noteboook/大型COVID-19疫情数据集.csv')
 10 df.head()
 11 
 12 #----------------------------------------------------------------
 13 
 14 #探索COVID-19数据集中的多个成对双变量的分布
 15 import matplotlib.pyplot as plt
 16 import seaborn as sns
 17 # 数据准备
 18 # iris = sns.load_dataset('iris')
 19 iris =pd.read_csv('C:/Users/bb/python-jupyter noteboook/大型COVID-19疫情数据集.csv')
 20 # 用Seaborn画成对关系
 21 sns.pairplot(iris)
 22 plt.show()
 23 
 24 #----------------------------------------------------------------
 25 
 26 #对COVID-19数据集数据分析及基于全球地图数据可视化,保存于电脑
 27 from pyecharts import options as opts
 28 from pyecharts.charts import Map
 29 data=pd.read_csv('C:/Users/bb/python-jupyter noteboook/大型COVID-19疫情数据集.csv')
 30 world_map = Map(init_opts=opts.InitOpts(width="1800px", height="700px", 
 31             bg_color="#ADD8E6", page_title="世界疫情地图",theme='white'))
 32 world_map.add("确诊病例",[list(z) for z in zip(data["location"],data["total_cases"] )],
 33             is_map_symbol_show=False,maptype="world",
 34             label_opts=opts.LabelOpts(is_show=False),
 35             itemstyle_opts=opts.ItemStyleOpts(color="rgb(98,120,140)"))
 36 world_map.set_global_opts(title_opts = opts.TitleOpts(title='全世界新冠确诊人数'),
 37             legend_opts=opts.LegendOpts(is_show=False),
 38             visualmap_opts=opts.VisualMapOpts(max_=10000000, is_piecewise=True,
 39                 pieces=[{"max": 10000000, "min": 1000001, "label": ">1000000", "color": "#8A0808"},
 40                         {"max": 1000000, "min": 100001, "label": "1000000-100001", "color": "#B40404"},
 41                         {"max": 100000, "min": 10001, "label": "100000-10001", "color": "#DF0101"},
 42                         {"max": 10000, "min": 1001, "label": "10000-1001", "color": "#F78181"},
 43                         {"max": 1000, "min": 100, "label": "1000-100", "color": "#F5A9A9"},
 44                         {"max": 100, "min": 0, "label": "<100", "color": "#fababa"},]
 45                     )  
 46             )
 47 #保存地图      
 48 world_map.render('世界新冠疫情地图.html')
 49 
 50 #----------------------------------------------------------------
 51 #
 52 #为了能够更加直观地看到各国家疫情数据差异,做表查看。
 53 df=pd.read_csv('C:/Users/bb/python-jupyter noteboook/大型COVID-19疫情数据集.csv')
 54 new_df=pd.DataFrame({'国家编号':df['iso_code'].unique(),
 55                      '次数':[0]*len(df['iso_code'].unique())})
 56 groupy_area=df.groupby(by='iso_code').count()
 57 new_df['次数']=groupy_area.values
 58 # 按“数量”一列从大到小排列
 59 new_df.sort_values(by=['次数'],ascending=False)
 60 #new_df
 61 # 定义函数,用来计算国家编号出现次数 
 62 def all_house(arr):
 63     arr=np.array(arr)
 64     key=np.unique(arr)
 65     result={}
 66     for k in key:
 67         mask=(arr==k)
 68         arr_new=arr[mask]
 69         v=arr_new.size
 70         result[k]=v
 71     return result
 72 # 获取国家编号数据
 73 house_array=df['iso_code']
 74 house_info=all_house(house_array)
 75 house_info
 76 # 使用字典推导式
 77 house_type=dict((key,value) for key,value in house_info.items() if value>50)
 78 show_houses=pd.DataFrame({'国家编号':[x for x in house_type.keys()],
 79                          '次数':[x for x in house_type.values()]})
 80 print(show_houses)
 81 
 82 
 83 #对上表可视化处理查看各国家疫情数据量
 84 fig,ax = plt.subplots()
 85 fig.set_size_inches(10,100)
 86 xq = df['iso_code'].value_counts().sort_values()
 87 index = list(xq.index)
 88 value = list(xq.values)
 89 qx = pd.DataFrame({'iso_code':index,'国家编号':value})
 90 qx.plot.barh(x='iso_code',y='国家编号',ax=ax,color='blue',fontsize=12)
 91 plt.legend(loc='right')
 92 for a,b in zip(value,np.arange(0,14,1)):
 93     plt.text(a+0.5,b,a,fontsize=12)
 94 plt.show()
 95 
 96 #----------------------------------------------------------------
 97 
 98 #总病例随时间变化可视化
 99 import pandas as pd
100 import matplotlib.pyplot as plt
101 fig = plt.figure(figsize=(100,50))
102 # 数据准备
103 x = df['date']
104 y = df['total_cases']
105 # 用Matplotlib画散点图
106 plt.xticks(rotation=270)
107 plt.scatter(x, y,marker='x')
108 plt.show()
109 plt.tight_layout()
110 
111 #----------------------------------------------------------------
112 
113 #查看各大洲的疫情数据占比
114 from pylab import *
115 df=pd.read_csv('C:/Users/bb/python-jupyter noteboook/大型COVID-19疫情数据集.csv')
116 mpl.rcParams['font.sans-serif'] = ['SimHei']
117 mpl.rcParams['axes.unicode_minus'] = False
118 df = (df['continent'].value_counts())[:16].to_frame()
119 plt.figure(figsize=(15,15))
120 plt.pie(df['continent'], labels=df.index.values, autopct='%.1f%%')
121 plt.title('各大洲的疫情数据占比',fontsize=20)
122 
123 from pylab import *
124 df=pd.read_csv('C:/Users/bb/python-jupyter noteboook/大型COVID-19疫情数据集.csv')
125 mpl.rcParams['font.sans-serif'] = ['SimHei']
126 mpl.rcParams['axes.unicode_minus'] = False
127 df = (df['location'].value_counts())[:16].to_frame()
128 plt.figure(figsize=(15,15))
129 plt.pie(df['location'], labels=df.index.values, autopct='%.1f%%')
130 plt.title('各国家的疫情数据占比',fontsize=20)
131 
132 
133 #----------------------------------------------------------------
134 #进行数据清洗,查看各地区疫情最严重一天
135 import numpy as np
136 import pandas as pd
137 import matplotlib.pyplot as plt
138 import seaborn as sns
139 #按省份统计确诊人数
140 df=pd.read_csv('C:/Users/bb/python-jupyter noteboook/大型COVID-19疫情数据集.csv')
141 
142 diqu = df.groupby(by='location').agg('max')
143 #print(diqu)
144 
145 import matplotlib.pyplot as plt
146 import seaborn as sns
147 # 数据准备
148 x =diqu['iso_code']
149 y = diqu['new_cases']
150 # 用Matplotlib画条形图
151 fig = plt.figure(figsize=(100,50))
152 plt.xticks(rotation=270)
153 plt.bar(x, y)
154 plt.show()
155 # 用Seaborn画条形图
156 fig = plt.figure(figsize=(100,50))
157 plt.xticks(rotation=270)
158 sns.barplot(x, y)
159 plt.show()
160 
161 #----------------------------------------------------------------
162 #进行数据清洗,查看各国家疫情数据总和
163 import numpy as np
164 import pandas as pd
165 import matplotlib.pyplot as plt
166 import seaborn as sns
167 #按国家统计确诊人数
168 df=pd.read_csv('C:/Users/bb/python-jupyter noteboook/大型COVID-19疫情数据集.csv')
169 
170 gj= df.groupby(by='location').agg('sum')
171 #print(gj)
172 
173 #查看总患病人和死亡和再生人数关系
174 import numpy as np
175 import matplotlib.pyplot as plt
176 from mpl_toolkits. mplot3d import Axes3D
177 fig = plt.figure()
178 ax = Axes3D(fig,auto_add_to_figure=False)
179 fig.add_axes(ax)
180 x = gj['total_cases']
181 y = gj['total_deaths']
182 z = gj['reproduction_rate']
183 ax. scatter(x, y, z)
184 ax.set_xlabel('总病例')
185 ax.set_ylabel( '总死亡')
186 ax.set_zlabel('再生指数')
187 plt.show()
188 
189 #查看国家首都gdp和人口数和接种疫苗人数关系
190 import numpy as np
191 import matplotlib.pyplot as plt
192 from mpl_toolkits. mplot3d import Axes3D
193 fig = plt.figure()
194 ax = Axes3D(fig,auto_add_to_figure=False)
195 fig.add_axes(ax)
196 x = gj['gdp_per_capita']
197 y = gj['population']
198 z = gj['people_fully_vaccinated']
199 ax. scatter(x, y, z)
200 ax.set_xlabel('首都GDP')
201 ax.set_ylabel( '人口数')
202 ax.set_zlabel('疫苗完全接种人数')
203 plt.show()

四、总结

1.通过对数据分析和挖掘,得到哪些有益的结论?是否达到预期的目标?

首先我对这次的分析其实挺满意的,,跟自己预期的一样,虽然花费时间较长,可却很值得。再者通过对数据的分析和挖掘我发现非洲疫情占比最多,澳洲疫情占比最少。同时个国家的疫情数据占比较为平均,并且总病例仍然在随着时间的增长而继续增长。总的来说,疫情仍然是我们不可小觑的东西,它每天都在传播着,所以我们应该严加防范。

2.自己在完成此设计过程中,得到哪些收获?以及要改进的建议?

通过此次数据集分析练习,我熟练并掌握了,数据清洗,数据归纳,可视化相关操作。同时本次程序设计任务完成时间较久,也是在一步一步学习熟悉python的知识,通过本次任务提高了对代码的掌握程度,并且在完成任务的过程中提高了实践能力,也是为以后编写代码打下一点基础。本来打算做爬虫设计 ,但因为有现成的数据集,因此放弃了爬虫设计的方案,所以想在假期时尝试一下爬取小说热榜。

 

 

 

 

 

 

 

 

 

 

 

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。