2021新型冠状病毒(COVID-19/2019-nCoV)疫情分析
新型冠状病毒(COVID-19/2019-nCoV)疫情分析
spiritLHL
重要说明
帮同一个选修课的学妹码的结课作业,这是我个人完善后的版本(她的还有很多错漏)
分析文档:完成度:代码质量 3:5:2
其中分析文档是指你数据分析的过程中,对各问题分析的思路、对结果的解释、说明(要求言简意赅,不要为写而写)
ps:你自己写的代码远胜一切之代笔,无关美丑,只问今日比昨日更长进!加油!
源文档
源文档详见:博客相关资源-新冠疫情数据分析文件
温馨提示:
疫情尚肆虐,请积极防护,保护自己
由于数据过多,查看数据尽量使用head()或tail(),以免程序长时间无响应
=======================
本项目数据来源于丁香园。本项目主要目的是通过对疫情历史数据的分析研究,以更好的了解疫情与疫情的发展态势,为抗击疫情之决策提供数据支持。
一. 提出问题
从全国范围,你所在省市,国外疫情等三个方面主要研究以下几个问题:
(一)全国累计确诊/疑似/治愈/死亡情况随时间变化趋势如何?
(二)你所在的省市情况如何?
(三)全球疫情总体态势如何?
(四)结合你的分析结果,对未来半年的疫情趋势给出你的判断,对个人和社会在抗击疫情方面有何建议?
二. 理解数据
原始数据集:AreaInfo.csv,导入相关包及读取数据,并赋值为 areas
|
|
|
|
查看与统计数据,以对数据有一个大致了解
|
|
continentName | continentEnglishName | countryName | countryEnglishName | provinceName | provinceEnglishName | province_zipCode | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | updateTime | cityName | cityEnglishName | city_zipCode | city_confirmedCount | city_suspectedCount | city_curedCount | city_deadCount | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 亚洲 | Asia | 中国 | China | 澳门 | Macau | 820000 | 47 | 9.0 | 46 | 0 | 2021-01-22 23:40:08 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 北美洲 | North America | 美国 | United States of America | 美国 | United States of America | 971002 | 24632468 | 0.0 | 10845438 | 410378 | 2021-01-22 23:40:08 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | 南美洲 | South America | 巴西 | Brazil | 巴西 | Brazil | 973003 | 8699814 | 0.0 | 7580741 | 214228 | 2021-01-22 23:40:08 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
3 | 欧洲 | Europe | 比利时 | Belgium | 比利时 | Belgium | 961001 | 686827 | 0.0 | 19239 | 20620 | 2021-01-22 23:40:08 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4 | 欧洲 | Europe | 俄罗斯 | Russia | 俄罗斯 | Russia | 964006 | 3677352 | 0.0 | 3081536 | 68412 | 2021-01-22 23:40:08 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
相关字段含义介绍:
小提示:
国外数据的provinceName并非是省名,而是用其国家名标注,即数据不再细分到省。
中国数据的provinceName中也有’中国’这样的记录,代表当日全国各省之合计。善用之,对全国情况进行分析时就方便多了。
continentName介绍了哪些大洲参与统计;中国数据中有的给出了省名,有的是用“中国”标注,代表当日全国各省之合计;国外数据的provinceName并非是省名,而是用其国家名标注,即数据不再细分到省 province_suspectedCount一栏中有过多的缺失值,需填补或舍弃;数据中没有详细给到城市数据。
三. 数据清洗
(一)基本数据处理
数据清洗主要包括:选取子集,缺失数据处理、数据格式转换、异常值数据处理等。
提示:因数据皆赖各国上报,情势危杂之际,难免瞒报漏报,故存在较多缺失值,可以将其补全或舍弃,参见"Pandas之缺失值的处理.ipynb"
国内疫情数据选取(最终选取的数据命名为china)
-
选取国内疫情数据
-
对于更新时间(updateTime)列,需将其转换为日期类型并提取出年-月-日,并查看处理结果。(提示:dt.date)
-
因数据每天按小时更新,一天之内有很多重复数据,请去重并只保留一天之内最新的数据。
提示:df.drop_duplicates(subset=[‘provinceName’, ‘updateTime’], keep=‘first’, inplace=False)
其中df是你选择的国内疫情数据的DataFrame
- 去除不在此次研究范围内的列,只留下[‘continentName’,‘countryName’,‘provinceName’,‘province_confirmedCount’,‘province_suspectedCount’,‘province_curedCount’,‘province_deadCount’,‘updateTime’]这几列,并以’updateTime’为行索引。
提示:两种方法都可以:(1)选取这几列 或 (2)去除其余的列
|
|
continentName | countryName | provinceName | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | |
---|---|---|---|---|---|---|---|
updateTime | |||||||
2021-01-22 | 亚洲 | 中国 | 中国 | 99667 | 0.0 | 92275 | 4810 |
2021-01-21 | 亚洲 | 中国 | 中国 | 99513 | 0.0 | 92198 | 4809 |
|
|
查看数据信息,是否有缺失数据/数据类型是否正确。若有缺失值,可以将其补全或舍弃,参见**“Pandas之缺失值的处理.ipynb”**
|
|
continentName | countryName | provinceName | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | |
---|---|---|---|---|---|---|---|
updateTime | |||||||
2021-01-22 | 亚洲 | 中国 | 中国 | 99667 | 0.0 | 92275 | 4810 |
2021-01-21 | 亚洲 | 中国 | 中国 | 99513 | 0.0 | 92198 | 4809 |
2021-01-20 | 亚洲 | 中国 | 中国 | 99285 | 0.0 | 92130 | 4808 |
2021-01-19 | 亚洲 | 中国 | 中国 | 99094 | 0.0 | 92071 | 4806 |
2021-01-18 | 亚洲 | 中国 | 中国 | 98922 | 0.0 | 91994 | 4805 |
你所在省市疫情数据选取(最终选取的数据命名为myhome)
此步也可在后面用到的再做
-
选取所在省市疫情数据(细化到市;若是直辖市,细化到区)
-
对于更新时间(updateTime)列,需将其转换为日期类型并提取出年-月-日,并查看处理结果。(提示:dt.date)
-
因数据每天按小时更新,一天之内有很多重复数据,请去重并只保留一天之内最新的数据,并以’updateTime’为行索引。
提示:df.drop_duplicates(subset=[‘cityName’, ‘updateTime’], keep=‘first’, inplace=False)
- 去除不在此次研究范围内的列
提示:df.drop([‘continentName’,‘continentEnglishName’,‘countryName’,‘countryEnglishName’,‘provinceEnglishName’,
‘province_zipCode’,‘cityEnglishName’,‘updateTime’,‘city_zipCode’],axis=1,inplace=True)
其中df是你选择的省市疫情数据的DataFrame
|
|
provinceName | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | cityName | city_confirmedCount | city_suspectedCount | city_curedCount | city_deadCount | |
---|---|---|---|---|---|---|---|---|---|---|
updateTime | ||||||||||
2021-01-22 | 河北省 | 1252 | 0.0 | 405 | 7 | 石家庄 | 843.0 | 0.0 | 54.0 | 1.0 |
2021-01-21 | 河北省 | 1245 | 0.0 | 395 | 7 | 石家庄 | 842.0 | 0.0 | 54.0 | 1.0 |
查看数据信息,是否有缺失数据/数据类型是否正确。若有缺失值,可以将其补全或舍弃,参见**“Pandas之缺失值的处理.ipynb”**
|
|
D:\Anaconda\envs\python32\lib\site-packages\ipykernel_launcher.py:3: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
This is separate from the ipykernel package so we can avoid doing imports until
provinceName | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | cityName | city_confirmedCount | city_suspectedCount | city_curedCount | city_deadCount | |
---|---|---|---|---|---|---|---|---|---|---|
updateTime | ||||||||||
2020-01-27 | 河北省 | 18 | 0.0 | 0 | 1 | 石家庄 | 7.0 | 0.0 | 0.0 | 0.0 |
2020-01-26 | 河北省 | 13 | 0.0 | 0 | 1 | 石家庄 | 5.0 | 0.0 | 0.0 | 0.0 |
2020-01-25 | 河北省 | 8 | 0.0 | 0 | 1 | 石家庄 | 4.0 | 0.0 | 0.0 | 0.0 |
2020-01-24 | 河北省 | 2 | 0.0 | 0 | 1 | 石家庄 | 1.0 | 0.0 | 0.0 | 0.0 |
2020-01-22 | 河北省 | 1 | 0.0 | 0 | 0 | NaN | NaN | NaN | NaN | NaN |
全球疫情数据选取(最终选取的数据命名为world)
此步也可在后面用到的再做
- 选取国外疫情数据
提示:选取国外疫情数据(countryName!=‘中国’)
-
对于更新时间(updateTime)列,需将其转换为日期类型并提取出年-月-日,并查看处理结果。(提示:dt.date)
-
因数据每天按小时更新,一天之内有很多重复数据,请去重并只保留一天之内最新的数据。
提示:df.drop_duplicates(subset=[‘provinceName’, ‘updateTime’], keep=‘first’, inplace=False)
其中df是你选择的国内疫情数据的DataFrame
- 去除不在此次研究范围内的列,只留下[‘continentName’,‘countryName’,‘provinceName’,‘province_confirmedCount’,‘province_suspectedCount’,‘province_curedCount’,‘province_deadCount’,‘updateTime’]这几列,并以’updateTime’为行索引。
提示:两种方法都可以:(1)选取这几列 或 (2)去除其余的列
- 得到全球数据
提示:用 concat 函数将前面的china与国外数据按「轴」连接得到全球数据。
|
|
updateTime | continentName | continentEnglishName | countryName | countryEnglishName | provinceName | provinceEnglishName | province_zipCode | province_confirmedCount | province_suspectedCount | ... | city_curedCount | city_deadCount | updateTime | continentName | countryName | provinceName | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2021-01-22 | 北美洲 | North America | 美国 | United States of America | 美国 | United States of America | 971002 | 24632468 | 0.0 | ... | NaN | NaN | 2021-01-22 | 亚洲 | 中国 | 中国 | 99667.0 | 0.0 | 92275.0 | 4810.0 |
1 | 2021-01-22 | 南美洲 | South America | 巴西 | Brazil | 巴西 | Brazil | 973003 | 8699814 | 0.0 | ... | NaN | NaN | 2021-01-21 | 亚洲 | 中国 | 中国 | 99513.0 | 0.0 | 92198.0 | 4809.0 |
2 | 2021-01-22 | 欧洲 | Europe | 比利时 | Belgium | 比利时 | Belgium | 961001 | 686827 | 0.0 | ... | NaN | NaN | 2021-01-20 | 亚洲 | 中国 | 中国 | 99285.0 | 0.0 | 92130.0 | 4808.0 |
3 | 2021-01-22 | 欧洲 | Europe | 俄罗斯 | Russia | 俄罗斯 | Russia | 964006 | 3677352 | 0.0 | ... | NaN | NaN | 2021-01-19 | 亚洲 | 中国 | 中国 | 99094.0 | 0.0 | 92071.0 | 4806.0 |
4 | 2021-01-22 | 欧洲 | Europe | 塞尔维亚 | Republic of Serbia | 塞尔维亚 | Republic of Serbia | 965013 | 436121 | 0.0 | ... | NaN | NaN | 2021-01-18 | 亚洲 | 中国 | 中国 | 98922.0 | 0.0 | 91994.0 | 4805.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
301542 | 2020-01-27 | NaN | NaN | 马来西亚 | Malaysia | 马来西亚 | Malaysia | 952007 | 3 | 0.0 | ... | NaN | NaN | NaT | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301543 | 2020-01-27 | NaN | NaN | 法国 | France | 法国 | France | 961002 | 3 | 0.0 | ... | NaN | NaN | NaT | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301544 | 2020-01-27 | NaN | NaN | 越南 | Vietnam | 越南 | Vietnam | 952011 | 2 | 0.0 | ... | NaN | NaN | NaT | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301545 | 2020-01-27 | NaN | NaN | 尼泊尔 | Nepal | 尼泊尔 | Nepal | 953005 | 1 | 0.0 | ... | NaN | NaN | NaT | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301546 | 2020-01-27 | NaN | NaN | 加拿大 | Canada | 加拿大 | Canada | 971001 | 1 | 0.0 | ... | NaN | NaN | NaT | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301547 rows × 27 columns
查看数据信息,是否有缺失数据/数据类型是否正确。
提示:因数据皆赖各国上报,情势危杂之际,难免瞒报漏报,故存在较多缺失值,可以将其补全或舍弃,参见**“Pandas之缺失值的处理.ipynb”**
|
|
updateTime | continentName | continentEnglishName | countryName | countryEnglishName | provinceName | provinceEnglishName | province_zipCode | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | cityName | cityEnglishName | city_zipCode | city_confirmedCount | city_suspectedCount | city_curedCount | city_deadCount | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2021-01-22 | 北美洲 | North America | 美国 | United States of America | 美国 | United States of America | 971002 | 24632468 | 0.0 | 10845438 | 410378 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 2021-01-22 | 南美洲 | South America | 巴西 | Brazil | 巴西 | Brazil | 973003 | 8699814 | 0.0 | 7580741 | 214228 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | 2021-01-22 | 欧洲 | Europe | 比利时 | Belgium | 比利时 | Belgium | 961001 | 686827 | 0.0 | 19239 | 20620 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
3 | 2021-01-22 | 欧洲 | Europe | 俄罗斯 | Russia | 俄罗斯 | Russia | 964006 | 3677352 | 0.0 | 3081536 | 68412 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4 | 2021-01-22 | 欧洲 | Europe | 塞尔维亚 | Republic of Serbia | 塞尔维亚 | Republic of Serbia | 965013 | 436121 | 0.0 | 50185 | 5263 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
四. 数据分析及可视化
在进行数据分析及可视化时,依据每个问题选取所需变量并新建DataFrame再进行分析和可视化展示,这样数据不易乱且条理更清晰。
基础分析
基础分析,只允许使用numpy、pandas和matplotlib库。
可以在一张图上多个坐标系展示也可以在多张图上展示
请根据分析目的选择图形的类型(折线图、饼图、直方图和散点图等等),实在没有主意可以到百度疫情地图或其他疫情分析的站点激发激发灵感。
(一)全国累计确诊/治愈/死亡情况随时间变化趋势如何?
|
|
|
|
province_confirmedCount | |
---|---|
updatetime | |
2021-01-22 | 99667 |
2021-01-21 | 99513 |
2021-01-20 | 99285 |
2021-01-19 | 99094 |
2021-01-18 | 98922 |
|
|
第二幅图为
第三幅图为
(二)你所在的省市情况如何?
|
|
provinceName | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | cityName | city_confirmedCount | city_suspectedCount | city_curedCount | city_deadCount | |
---|---|---|---|---|---|---|---|---|---|---|
updateTime | ||||||||||
2021-01-22 | 河北省 | 1252 | 0.0 | 405 | 7 | 石家庄 | 843.0 | 0.0 | 54.0 | 1.0 |
2021-01-21 | 河北省 | 1245 | 0.0 | 395 | 7 | 石家庄 | 842.0 | 0.0 | 54.0 | 1.0 |
2021-01-20 | 河北省 | 1222 | 0.0 | 384 | 7 | 石家庄 | 813.0 | 0.0 | 45.0 | 1.0 |
2021-01-19 | 河北省 | 1198 | 0.0 | 383 | 7 | 石家庄 | 801.0 | 0.0 | 45.0 | 1.0 |
2021-01-18 | 河北省 | 1171 | 0.0 | 379 | 7 | 石家庄 | 774.0 | 0.0 | 41.0 | 1.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2020-01-27 | 河北省 | 18 | 0.0 | 0 | 1 | 石家庄 | 7.0 | 0.0 | 0.0 | 0.0 |
2020-01-26 | 河北省 | 13 | 0.0 | 0 | 1 | 石家庄 | 5.0 | 0.0 | 0.0 | 0.0 |
2020-01-25 | 河北省 | 8 | 0.0 | 0 | 1 | 石家庄 | 4.0 | 0.0 | 0.0 | 0.0 |
2020-01-24 | 河北省 | 2 | 0.0 | 0 | 1 | 石家庄 | 1.0 | 0.0 | 0.0 | 0.0 |
2020-01-22 | 河北省 | 1 | 0.0 | 0 | 0 | NaN | NaN | NaN | NaN | NaN |
134 rows × 10 columns
|
|
(三)全球疫情态势如何?
-
全球 TOP10 国家的疫情情况如何?
-
各大洲情况对比?
-
选一个你感兴趣的大洲,分析各国疫情之间的联系、分布、对比和构成情况。
提示:注意数据透视、分组和整合知识的运用
|
|
updateTime | continentName | continentEnglishName | countryName | countryEnglishName | provinceName | provinceEnglishName | province_zipCode | province_confirmedCount | province_suspectedCount | province_curedCount | province_deadCount | cityName | cityEnglishName | city_zipCode | city_confirmedCount | city_suspectedCount | city_curedCount | city_deadCount | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2021-01-22 | 北美洲 | North America | 美国 | United States of America | 美国 | United States of America | 971002 | 24632468 | 0.0 | 10845438 | 410378 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 2021-01-22 | 南美洲 | South America | 巴西 | Brazil | 巴西 | Brazil | 973003 | 8699814 | 0.0 | 7580741 | 214228 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | 2021-01-22 | 欧洲 | Europe | 比利时 | Belgium | 比利时 | Belgium | 961001 | 686827 | 0.0 | 19239 | 20620 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
3 | 2021-01-22 | 欧洲 | Europe | 俄罗斯 | Russia | 俄罗斯 | Russia | 964006 | 3677352 | 0.0 | 3081536 | 68412 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4 | 2021-01-22 | 欧洲 | Europe | 塞尔维亚 | Republic of Serbia | 塞尔维亚 | Republic of Serbia | 965013 | 436121 | 0.0 | 50185 | 5263 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
301542 | 2020-01-27 | NaN | NaN | 马来西亚 | Malaysia | 马来西亚 | Malaysia | 952007 | 3 | 0.0 | 0 | 0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301543 | 2020-01-27 | NaN | NaN | 法国 | France | 法国 | France | 961002 | 3 | 0.0 | 0 | 0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301544 | 2020-01-27 | NaN | NaN | 越南 | Vietnam | 越南 | Vietnam | 952011 | 2 | 0.0 | 0 | 0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301545 | 2020-01-27 | NaN | NaN | 尼泊尔 | Nepal | 尼泊尔 | Nepal | 953005 | 1 | 0.0 | 0 | 0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301546 | 2020-01-27 | NaN | NaN | 加拿大 | Canada | 加拿大 | Canada | 971001 | 1 | 0.0 | 0 | 0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
301547 rows × 19 columns
|
|