ready-gogo
一、方法一
1、数据源 
2、需要的库包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
 
#为了正常显示中文
plt.rcParams[\'font.sans-serif\']=[\'SimHei\']
plt.rcParams[\'axes.unicode_minus\']=False
#安装命令如下
3、导入数据
df = pd.read_csv(r"E:\dataanalysis\novel-corona-virus-2019-dataset-master\2019_nCoV_data.csv",parse_dates=[\'Last Update\'])
df.head()
4、查看
df.info() 数据类型
数值类型的数据有:Sno  Confirmed Deaths Recovered
df.describe() 数据描述
列数据描述
 
5、增加3个列
dayofweek 星期   day 天  hour 小时
df[\'dayofweek\'] = df[\'Last Update\'].dt.dayofweek  # add dow column 星期几
df[\'day\'] = df[\'Last Update\'].dt.day
#df[\'month\'] = df[\'Last Update\'].dt.month
df[\'hour\'] = df[\'Last Update\'].dt.hour
df.head()
6、分析哪些国家被新型冠状病毒影响
df[\'Country\'].unique()
目前为止公有27个国家被感染
len(df[\'Country\'].unique())
7、数据清洗
发现Country列中中国名字没有统一,China和Mainland China同时存在
df[\'Country\']=df[\'Country\'].replace(\'Mainland China\',\'China\')  #22号后的China被Mainland China替代了
 
8、查看具体某个国家数据
印度只有一例事件
df[df[\'Country\']==\'India\']
中国很多
df[df[\'Country\']==\'China\']
中国共有多少起感染事件
len(df[df[\'Country\']==\'China\'])
9、查看疫情一共统计了多少天的数据
df.day.unique()
10、发生疫情首日(也就是22日)都哪些国家确诊了多少病例
df_first_report = df[df[\'day\'] == df.day.min()].groupby(\'Country\')[[\'Confirmed\']].sum().reset_index()
df_first_report
11、画条形图
sns.barplot(x=\'Country\',y=\'Confirmed\',data=df_first_report)
12、目前为止每个国家确诊的病例
mm=df.groupby(\'Country\')[[\'Confirmed\']].sum()  #各个国家一共确诊的总数量
mm
13、目前各个国家病例的确诊、死亡、康复的总人数,同时重置索引
df.groupby(\'Country\')[[\'Confirmed\',\'Deaths\',\'Recovered\']].sum().reset_index()
 
14、目前为止,每个国家各省的确诊、死亡、康复人数汇总
df_by_state = df.groupby([\'Country\',\'Province/State\'])[\'Confirmed\',\'Deaths\',\'Recovered\'].sum() 
15、按每天进行汇总,每天全球确诊人数
df.groupby(\'day\').sum()[\'Confirmed\'].plot(title="全球每日确诊总人数")  #全球每日确诊人数
mm=df.groupby(\'day\').sum()[\'Confirmed\']
mm
16、中国每日确诊人数
df[df[\'Country\'] == \'China\'].groupby(\'day\').sum()[\'Confirmed\'].plot(title="中国每日确诊人数")
df[df[\'Country\'] == \'China\'].groupby(\'day\').sum()[\'Confirmed\']
17、随着时间推移,全球确诊人数有一个显著提升
sns.barplot(x=\'day\',y=\'Confirmed\',data=df)
Seaborn会对\'day\'列中的数值进行归类后按照estimator参数的方法(默认为平均值)计算相应的值,计算出来的值就作为条形图所显示的值
 
18、有病例的国家的确诊趋势
plt.figure(figsize=(10,8))
sns.barplot(x=\'Confirmed\',y=\'Country\',ci=0,data=df,orient="h")
plt.tight_layout()
19、对各个国家的确诊数量进行聚合
hh=df[\'Confirmed\'].groupby(df[\'Country\']).sum()
hh
20、各国康复病人的时间线
pd.pivot_table(df,values=\'Recovered\',columns=\'Country\',index=\'day\').fillna(0).plot(figsize=(16,8))
21、各省每天被确诊数量
 
#data    DataFrame    pd.pivot_table使用,设定需要操作的 DataFrame
# values    column     #被计算的数据项  设定需要被聚合操作的列
#index 行分组键 用于分组的列名或其他分组键,作为结果DataFrame的行索引
# columns 列分组键 用于分组的列名或其他分组键,作为结果DataFrame的列索引
pd.pivot_table(df,values=\'Confirmed\',columns=\'Province/State\',index=\'day\').fillna(0).plot(figsize=(16,8))
22、按确诊人数进行排序对前十的各国进行排序
df.groupby(\'Country\')[\'Confirmed\'].sum().sort_values(ascending=False)[0:10]
23、各省死亡人数前五名
df.groupby(\'Province/State\')[\'Deaths\'].sum().sort_values(ascending=False)[:5]
24、中国死亡率和康复率
df_china = df[df[\'Country\'].str.contains(\'china\', case = False)]
(df_china[\'Deaths\'].sum()/df_china[\'Confirmed\'].sum()) *100
二、方法二
1、引入包
 utils是一个小型python函数和类的集合
import pandas as pd
import matplotlib.pyplot as plt
import utils   # some convenient functions
%load_ext autoreload
%autoreload 2
2、载入数据
data =pd.read_csv(r"E:\dataanalysis\DXY-COVID-19-Data-master\DXY-COVID-19-Data-master\csv\DXYArea.csv",parse_dates=[\'updateTime\'])
3、查看数据
数据列中是否有控制NAN
data.isnull().any()
行中存在空值的项
data[data.isnull().T.any()]
4、检索
查找一个省的数据
data[data[\'provinceName\'] == \'广东省\'].head()
查找一个市的数据
data[data[\'cityName\'] == \'武汉\'].head()
5、新增加一列
data[\'year_month_day\'] = data[\'updateTime\'].apply(lambda x : x.strftime(\'%Y-%m-%d\'))
data
删除某列
data.drop([\'year_month\'],axis=1,inplace=True)
 
6、检索单日数据
data[data[\'year_month_day\']==\'2020-01-27\'].head()
7全国每日确诊的人数
data.groupby(\'year_month_day\').sum()[\'province_confirmedCount\'].plot(title="全国每日确诊总人数",figsize=(16,8))
8、各省确诊人数
plt.figure(figsize=(20, 12))
sns.barplot(x=\'province_confirmedCount\',y=\'provinceName\',ci=0,data=data)

分类:

技术点:

相关文章: