Advertisement

新冠疫情可视化

阅读量:
复制代码
 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)

还没有任何评论哟~