新冠疫情可视化
发布时间
阅读量:
阅读量
import pandas as pd
import matplotlib.pyplot as plt
import folium # 用来绘制地图,并在地图上打点,画圈,做颜色标记的工具类
import folium.plugins as plugins
import numpy as np
import datetime
# 导入数据
data=pd.read_csv(r'C:\Users\a\Desktop\2019ncov5600\2019_nCoV_data.csv')
data
# 查看数据信息
data.info()
# 数据清洗
# (1)删除无用列:Sno编号列没有用,要删去
data.drop(['Sno'],axis=1,inplace=True) # drop([]),默认情况下删除某一行;如果要删除某列,需要axis=1;参数inplace 默认情况下为False,表示保持原来的数据不变,True 则表示在原来的数据上改变
# (2)填充空白值:部分国家对应的地区为NAN,需要填充为空白字符串
data.fillna('',inplace=True)
# (3)删除无用行:部分国家/地区,受感染人数为0,也被列在表格中,需要删去
data.drop(data[data['Confirmed']==0].index.to_list(),axis=0,inplace=True) # index() 函数用于从列表中找出某个值第一个匹配项的索引位置
# (4)查看受影响的国家/地区的数量
countries = data['Country'].unique().tolist()
print(countries)
# (5)中国有China, Mainland China两个写法,需要统一;另外还有一些你懂的问题需要修正
data['Country'].replace({'Mainland China':'China','Hong Kong':'China','Macau':'China','Singapore':'China','Taiwan':'China'},inplace=True)
countries=data['Country'].unique().tolist()
print('迄今为止,受影响的国家/地区:',countries)
print('迄今为止,受影响的国家/地区个数:',len(countries))
# 取出最新数据
# (1)将Date转化为datetime格式,方便操作后面进行时间的比较
data['Date']=data['Date'].apply(pd.to_datetime)
data.head()
# (2)按国家+城市字段分组,方便进行时间上的筛选
grouped=data.groupby(['Country','Province/State'])
# (3)选出每个国家/城市最新的数据
latest=grouped['Date'].idxmax() # idxmax()计算获取到最大值索引值
data_latest=data.loc[latest] # loc函数主要通过行标签索引行数据
data_latest
# (4)筛选出国家对应的城市字符串为空,且该国家下的城市(包括空字符串)数量大于1的数据
useless=data_latest[
(data_latest['Province/State']=='') & (data_latest['Country'].apply(lambda x:data_latest['Country'].value_counts()[x])>1)
].index.to_list()
useless
# (5)删除这些数据
data_latest.drop(useless,inplace=True)
# 简单的可视化
# (1)查看各个国家总感染数
world_cases=data_latest.groupby('Country')['Confirmed','Deaths','Recovered'].sum().sort_values(by='Confirmed',ascending=False)
world_cases
# (2)可视化以上数据,因为中国的确诊数量太大,故不放在图片里
plt.figure(figsize=(12,8))
plt.barh(y=world_cases[1:].index,width=world_cases['Confirmed'][1:],color='lightcoral')
AI助手
全部评论 (0)
还没有任何评论哟~
