python高级应用程序课程设计_Python高级应用程序设计任务

一、主题式网络爬虫设计方案(15分)

1.主题式网络爬虫名称

《Python爬虫之国家统计局相关数据的爬取及分析》

2.主题式网络爬虫爬取的内容与数据特征分析

本次爬取内容为:国家统计局(http://www.stats.gov.cn/)中,改革开放以来GDP增长率、三大产业对GDP的贡献率以及三大产业对GDP增长的拉动。

数据特征分析:根据网页显示,可以直观地看出这些数据年年在变化,并且第三产业对GDP的贡献率呈上升趋势。三大产业对GDP增长的拉动=三大产业对GDP的贡献率×GDP增长率。

3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)

① 通过数据查询(http://data.stats.gov.cn/)页面,查询所要的数据,并找到数据所在的URL。

②利用Python爬取URL中的所有数据,并保存为xlsx文件(要用到requests、json、os库)。

③进行数据清洗、提取所需数据,整理好并保存为xlsx文件(要用到pandas、numpy、matplotlib库)。

④通过制图,对数据进行可视化分析,并得出结论。

技术难点:网页上的数据是动态的,单纯依靠bs4库没办法解决,要另寻他法。

二、主题页面的结构特征分析(15分)

1.主题页面的结构特征

2.Htmls页面解析

3.节点(标签)查找方法与遍历方法

(必要时画出节点树结构)

查看国家统计局的robots协议,发现是空白,那就可以大胆地进行数据爬取。搜索关键词“GDP”,显示的只有2018年和2017年两年的数据,而在网页的底部有这么一条说明“如果没有输入时间,对于月度指标,系统显示最近1个月的数据;对于季度指标,系统显示最近1个季度的数据;对于年度指标,系统显示最近2年的数据”,这就意味着,1978-2016年的数据要输入时间关键字,才能查询到数据。

查看网页HTML的源代码,并没有找到我们所要的指标名称和数据,那就说明这个网站的数据都是动态生成的,不能用搜索或遍历标签的方法来找到内容。通过寻求网络帮助,我们学习到两种获取动态数据的方法:第一种是通过Selenium模拟浏览器获取,第二种是从网页响应中找到JS脚本返回的JSON数据。这里我们使用了第二种,对数据进行JSON化。

①找到JS请求的数据接口(360浏览器可直接右击-审查元素,其他浏览器找到工具栏-开发人员工具,或者F12直接打开调试工具)

点击Network-XHR,里面有一个叫search.htm?s....的链接(如果选项卡里没有链接,刷新页面即可)

点击链接-Preview-展开result,里面有一串JSON数据,经过比对,正是我们所要的数据,接口链接就在Headers-General-Request URL

打开接口链接,查看内容是否一致。确定内容一致,对数据接口进行请求和获取响应。

链接内容为字典类型。所要内容在"result"键下,值为列表类型,列表里又包含多个字典,可通过字典的键名进行内容提取。

②比较近两年和之前年份的接口链接差异

搜索“GDP”可以搜索到近两年的相关数据,Request URL:http://data.stats.gov.cn/search.htm?s=GDP&m=searchdata&db=&p=0

搜索“2017GDP”可以搜索到2017年的相关数据,Request URL:http://data.stats.gov.cn/search.htm?s=2017GDP&m=searchdata&db=&p=0

“2017GDP”第二页数据,Request URL:http://data.stats.gov.cn/search.htm?s=2017GDP&m=searchdata&db=&p=1

对比可发现:搜索关键字不同,接口连接改变的是htm?s=后,&m=searchdata前的内容;页数不同,接口连接改变的是&p=后的数字

用requests.get()方法获取信息;用json.loads方法()将数据JSON化;用for循环,对链接进行遍历,以获取所有内容。

通用连接:http://data.stats.gov.cn/search.htm?s={0}{1}&m=searchdata&db=&p={2}

三、网络爬虫程序设计(60分)

爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。

1.数据爬取与采集

1 #导入库

2 importrequests3 importjson4 importos5 importpandas as pd6 importnumpy as np7 importmatplotlib.pyplot as plt8

9 #对数据接口进行http请求

10 defgetHTMLText(url):11 try:12 r = requests.get(url, timeout=30) #获取信息,请求超时时间为30秒

13 r.raise_for_status() #如果状态不是200,则引发异常

14 r.encoding = r.apparent_encoding #配置编码

15 return r.text #返回url对应的页面内容

16 except:17 return "产生异常"

18

19 #对数据JSON化,并提取我们想要的内容

20 deffilterHTMLText(lst,wbdata):21 try:22 data = json.loads(wbdata) #对HTTP响应的数据JSON化

23 newdata = data['result'] #索引到我们所要的位置

24 for i in newdata: #对索引出来的JSON数据进行遍历和提取

25 target = i['zb'] #提取“指标”内容

26 data_time = i['sj'] #提取“数据时间”内容

27 value = i['data'] #提取“数值”内容

28 attribute = i['db'] #提取“所属栏目”内容

29 lst.append([target,data_time,value,attribute]) #将数据存放到lst列表里

30 return lst #返回lst数据列表

31 except:32 return "产生异常"

33

34 #保存数据,生成xlsx格式文件

35 defsaveHTMLText(lst):36 try:37 headers = ['指标','数据时间','数值','所属栏目'] #设置columns名称

38 index = [i for i in range(1,len(lst)+1)] #设置index值

39 df = pd.DataFrame(lst,columns=headers,index=index) #将数据列表转换为DataFrame对象

40 if not os.path.exists('F:\\PycharmProject'): #判断磁盘里是否存在目标文件夹

41 os.makedirs('F:\\PycharmProject') #不存在,则创建该文件夹并且生成xlsx文件

42 df.to_excel('F:\\PycharmProject\\国家统计局数据.xlsx')43 else:44 df.to_excel('F:\\PycharmProject\\国家统计局数据.xlsx')45 print("保存成功") #返回“保存成功”的提示

46 except:47 print("保存失败") #返回“保存失败”的提示

48

49 #主程序

50 defmain():51 uList = [] #存储爬取到的数据

52 for YearIndex in range(1978,2017): #遍历1978-2016年的URL

53 for PageIndex in range(0,6): #遍历每一年前6页的URL

54 url = "http://data.stats.gov.cn/search.htm?s={0}{1}&m=searchdata&db=&p={2}".format(YearIndex,'GDP',PageIndex)55 html = getHTMLText(url) #调用getHTMLText函数

56 filterHTMLText(uList,html) #调用filterHTMLText函数

57 for PageIndex in range(0,6): #遍历2017-2018年前6页的数据

58 url = "http://data.stats.gov.cn/search.htm?s=GDP&m=searchdata&db=&p={0}".format(PageIndex)59 html =getHTMLText(url)60 filterHTMLText(uList,html)61 saveHTMLText(uList) #调用saveHTMLText函数

62

63 #程序执行时调用主程序main()

64 if __name__ == '__main__':65 main()

运行结果:

                   

2.对数据进行清洗和处理

1 #删除无效列

2 GDP_Data = pd.DataFrame(pd.read_excel('F:\\PycharmProject\\国家统计局数据.xlsx'))3 GDP_Data.drop(GDP_Data.columns[0],axis=1,inplace=True)4 GDP_Data.head(10)

运行结果:

1 #查找重复值

2 GDP_Data.duplicated()

运行结果:

1 #删除重复值

2 GDP_Data =GDP_Data.drop_duplicates()3 GDP_Data.head(10)

运行结果:

1 #统计‘数值’列空值的个数

2 GDP_Data['数值'].isnull().value_counts()

运行结果:

1 #删除‘数值’列中含有空值的行

2 GDP_Data.dropna(axis=0, how='any', inplace=True)3 GDP_Data['数值'].isnull().value_counts()

运行结果:

1 #查看描述信息

2 GDP_Data.describe()

运行结果:

1 #对数据按照“数据时间”进行升序排序

2 GDP_Data.sort_values(by=["数据时间"],inplace=True,ascending=[True])3 GDP_Data

运行结果:

1 #提取“国内生产总值增长(百分点)”数据

2 GDP_Incr = GDP_Data.loc[(GDP_Data['指标'].str.contains('国内生产总值增长\(百分点\)'))&(GDP_Data['所属栏目'] == '年度数据')]3 GDP_Incr

运行结果:

1 #补充“2018年国内生产总值增长(百分点)”的数据

2 New_Data = pd.DataFrame({'指标':'国内生产总值增长(百分点)','数据时间':'2018年','数值':6.6,'所属栏目':'年度数据'},index=[2443])3 GDP_Incr=GDP_Incr.append(New_Data,ignore_index=False) #将2018年的数据添加到最后一行

4 GDP_Incr

运行结果:

1 #提取“第一产业对GDP的贡献率”数据

2 Contribution_Fir=GDP_Data.loc[GDP_Data['指标'].str.contains('第一产业对GDP的贡献率')]3 Contribution_Fir

运行结果:

1 #提取“第二产业对GDP的贡献率”数据

2 Contribution_Sec=GDP_Data.loc[GDP_Data['指标'].str.contains('第二产业对GDP的贡献率')]3 Contribution_Sec

运行结果:

1 #提取“第三产业对GDP的贡献率”数据

2 Contribution_Thir=GDP_Data.loc[GDP_Data['指标'].str.contains('第三产业对GDP的贡献率')]3 Contribution_Thir

运行结果:

1 #提取“第一产业对国内生产总值增长的拉动”数据

2 Promote_Fir=GDP_Data.loc[GDP_Data['指标'].str.contains('第一产业对国内生产总值增长的拉动')]3 Promote_Fir

运行结果:

1 #提取“第二产业对国内生产总值增长的拉动”数据

2 Promote_Sec=GDP_Data.loc[GDP_Data['指标'].str.contains('第二产业对国内生产总值增长的拉动')]3 Promote_Sec

运行结果:

1 #提取“第三产业对国内生产总值增长的拉动”数据

2 Promote_Thir=GDP_Data.loc[GDP_Data['指标'].str.contains('第三产业对国内生产总值增长的拉动')]3 Promote_Thir

运行结果:

1 #合并三大产业贡献率和GDP增长率

2 Contribution = pd.DataFrame({'第一产业对GDP的贡献率':Contribution_Fir['数值'].tolist(),'第二产业对GDP的贡献率':Contribution_Sec['数值'].tolist(),'第三产业对GDP的贡献率':Contribution_Thir['数值'].tolist(),'国内生产总值增长(百分点)':GDP_Incr['数值'].tolist()},index=Contribution_Fir['数据时间'])3 Contribution_All = pd.DataFrame({'第一产业对GDP的贡献率':Contribution_Fir['数值'].tolist(),'第二产业对GDP的贡献率':Contribution_Sec['数值'].tolist(),'第三产业对GDP的贡献率':Contribution_Thir['数值'].tolist()},index=Contribution_Fir['数据时间'])4 Contribution.to_excel('F:\\PycharmProject\\三大产业对GDP的贡献率及GDP增长率.xlsx')5 Contribution

运行结果:

1 #合并三大产业对GDP增长的拉动

2 Promote = pd.DataFrame({'第一产业对国内生产总值增长的拉动(百分点)':Promote_Fir['数值'].tolist(),'第二产业对国内生产总值增长的拉动(百分点)':Promote_Sec['数值'].tolist(),'第三产业对国内生产总值增长的拉动(百分点)':Promote_Thir['数值'].tolist()},index=Promote_Fir['数据时间'])3 Promote.to_excel('F:\\PycharmProject\\三大产业对GDP增长的拉动.xlsx')4 Promote

运行结果:

3.文本分析(可选):jieba分词、wordcloud可视化

4.数据分析与可视化

(例如:数据柱形图、直方图、散点图、盒图、分布图、数据回归分析等)

1 #绘制1978年-2018年三大产业对GDP的贡献率及GDP增长率的折线图

2 plt.rcParams['font.sans-serif'] = ['KaiTi'] #指定默认字体

3 plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题

4 Contribution.plot(figsize=(20,10),linewidth=2.5,marker='o').set_title('1978年-2018年三大产业对GDP的贡献率及GDP增长率的折线图',size=25)5 plt.xticks(fontsize=20) #横坐标字体大小20像素

6 plt.yticks(fontsize=20) #横坐标字体大小20像素

7 plt.xlabel('时间',fontsize=20) #横坐标标题为“时间”,字体大小为20像素

8 plt.ylabel('数值(百分点)',fontsize=20) #纵坐标标题为“数值(百分点)”,字体大小为20像素

9 plt.legend(fontsize=20) #设置图例大小为20像素

10 plt.show()

运行结果:

1 #绘制1978年-2018年三大产业对GDP的贡献率及GDP增长率的水平组合柱状图

2 Contribution.plot(kind='barh',figsize=(20,50),linewidth=5).set_title('1978年-2018年三大产业对GDP的贡献率及GDP增长率的水平组合柱状图',size=25)3 plt.xticks(fontsize=20)4 plt.yticks(fontsize=20)5 plt.ylabel('时间',fontsize=20)6 plt.xlabel('数值(百分点)',fontsize=20)7 plt.legend(fontsize=20)8 plt.show()

运行结果:

1 #绘制1978年-2018年三大产业对GDP贡献率的盒图

2 plt.figure(figsize=(20,15))3 plt.xticks(fontsize=20)4 plt.yticks(fontsize=20)5 sns.boxplot(data=Contribution_All).set_title("1978年-2018年三大产业对GDP贡献率的盒图",size=25)6 plt.show()

运行结果:

1 #绘制1978年-2018年三大产业对GDP增长拉动的折线图

2 Promote.plot(figsize=(20,10),linewidth=2.5,marker='D',linestyle='-.').set_title('1978年-2018年三大产业对GDP增长拉动的折线图',size=25)3 plt.xticks(fontsize=20)4 plt.yticks(fontsize=20)5 plt.xlabel('时间',fontsize=20)6 plt.ylabel('数值(百分点)',fontsize=20)7 plt.legend(fontsize=20)8 plt.show()

运行结果:

1 #绘制1978年-2018年GDP增长百分点的小提琴图

2 plt.figure(figsize=(10,10))3 plt.xticks(fontsize=20)4 plt.yticks(fontsize=20)5 sns.violinplot(data=Contribution['国内生产总值增长(百分点)']).set_title('1978年-2018年GDP增长百分点的小提琴图',size=20)6 plt.show()

运行结果:

5.数据持久化

上述已将相关数据以xlsx格式存入本地磁盘,实现数据持久化。

6.附完整程序代码

1 #导入库

2 importrequests3 importjson4 importos5 importpandas as pd6 importnumpy as np7 importmatplotlib.pyplot as plt8

9 #对数据接口进行http请求

10 defgetHTMLText(url):11 try:12 r = requests.get(url, timeout=30) #获取信息,请求超时时间为30秒

13 r.raise_for_status() #如果状态不是200,则引发异常

14 r.encoding = r.apparent_encoding #配置编码

15 return r.text #返回url对应的页面内容

16 except:17 return "产生异常"

18

19 #对数据JSON化,并提取我们想要的内容

20 deffilterHTMLText(lst,wbdata):21 try:22 data = json.loads(wbdata) #对HTTP响应的数据JSON化

23 newdata = data['result'] #索引到我们所要的位置

24 for i in newdata: #对索引出来的JSON数据进行遍历和提取

25 target = i['zb'] #提取“指标”内容

26 data_time = i['sj'] #提取“数据时间”内容

27 value = i['data'] #提取“数值”内容

28 attribute = i['db'] #提取“所属栏目”内容

29 lst.append([target,data_time,value,attribute]) #将数据存放到lst列表里

30 return lst #返回lst数据列表

31 except:32 return "产生异常"

33

34 #保存数据,生成xlsx格式文件

35 defsaveHTMLText(lst):36 try:37 headers = ['指标','数据时间','数值','所属栏目'] #设置columns名称

38 index = [i for i in range(1,len(lst)+1)] #设置index值

39 df = pd.DataFrame(lst,columns=headers,index=index) #将数据列表转换为DataFrame对象

40 if not os.path.exists('F:\\PycharmProject'): #判断磁盘里是否存在目标文件夹

41 os.makedirs('F:\\PycharmProject') #不存在,则创建该文件夹并且生成xlsx文件

42 df.to_excel('F:\\PycharmProject\\国家统计局数据.xlsx')43 else:44 df.to_excel('F:\\PycharmProject\\国家统计局数据.xlsx')45 print("保存成功") #返回“保存成功”的提示

46 except:47 print("保存失败") #返回“保存失败”的提示

48

49 #主程序

50 defmain():51 uList = [] #存储爬取到的数据

52 for YearIndex in range(1978,2017): #遍历1978-2016年的URL

53 for PageIndex in range(0,6): #遍历每一年前6页的URL

54 url = "http://data.stats.gov.cn/search.htm?s={0}{1}&m=searchdata&db=&p={2}".format(YearIndex,'GDP',PageIndex)55 html = getHTMLText(url) #调用getHTMLText函数

56 filterHTMLText(uList,html) #调用filterHTMLText函数

57 for PageIndex in range(0,6): #遍历2017-2018年前6页的数据

58 url = "http://data.stats.gov.cn/search.htm?s=GDP&m=searchdata&db=&p={0}".format(PageIndex)59 html =getHTMLText(url)60 filterHTMLText(uList,html)61 saveHTMLText(uList) #调用saveHTMLText函数

62

63 #程序执行时调用主程序main()

64 if __name__ == '__main__':65 main()66

67 #删除无效列

68 GDP_Data = pd.DataFrame(pd.read_excel('F:\\PycharmProject\\国家统计局数据.xlsx'))69 GDP_Data.drop(GDP_Data.columns[0],axis=1,inplace=True)70 GDP_Data.head(10)71

72 #查找重复值

73 GDP_Data.duplicated()74

75 #删除重复值

76 GDP_Data =GDP_Data.drop_duplicates()77 GDP_Data.head(10)78

79 #统计‘数值’列空值的个数

80 GDP_Data['数值'].isnull().value_counts()81

82 #删除‘数值’列中含有空值的行

83 GDP_Data.dropna(axis=0, how='any', inplace=True)84 GDP_Data['数值'].isnull().value_counts()85

86 #查看描述信息

87 GDP_Data.describe()88

89 #对数据按照“数据时间”进行升序排序

90 GDP_Data.sort_values(by=["数据时间"],inplace=True,ascending=[True])91 GDP_Data92

93 #提取“国内生产总值增长(百分点)”数据

94 GDP_Incr = GDP_Data.loc[(GDP_Data['指标'].str.contains('国内生产总值增长\(百分点\)'))&(GDP_Data['所属栏目'] == '年度数据')]95 GDP_Incr96

97 #补充“2018年国内生产总值增长(百分点)”的数据

98 New_Data = pd.DataFrame({'指标':'国内生产总值增长(百分点)','数据时间':'2018年','数值':6.6,'所属栏目':'年度数据'},index=[2443])99 GDP_Incr=GDP_Incr.append(New_Data,ignore_index=False) #将2018年的数据添加到最后一行

100 GDP_Incr101

102 #提取“第一产业对GDP的贡献率”数据

103 Contribution_Fir=GDP_Data.loc[GDP_Data['指标'].str.contains('第一产业对GDP的贡献率')]104 Contribution_Fir105

106 #提取“第二产业对GDP的贡献率”数据

107 Contribution_Sec=GDP_Data.loc[GDP_Data['指标'].str.contains('第二产业对GDP的贡献率')]108 Contribution_Sec109

110 #提取“第三产业对GDP的贡献率”数据

111 Contribution_Thir=GDP_Data.loc[GDP_Data['指标'].str.contains('第三产业对GDP的贡献率')]112 Contribution_Thir113

114 #提取“第一产业对国内生产总值增长的拉动”数据

115 Promote_Fir=GDP_Data.loc[GDP_Data['指标'].str.contains('第一产业对国内生产总值增长的拉动')]116 Promote_Fir117

118 #提取“第二产业对国内生产总值增长的拉动”数据

119 Promote_Sec=GDP_Data.loc[GDP_Data['指标'].str.contains('第二产业对国内生产总值增长的拉动')]120 Promote_Sec121

122 #提取“第三产业对国内生产总值增长的拉动”数据

123 Promote_Thir=GDP_Data.loc[GDP_Data['指标'].str.contains('第三产业对国内生产总值增长的拉动')]124 Promote_Thir125

126 #合并三大产业贡献率和GDP增长率

127 Contribution = pd.DataFrame({'第一产业对GDP的贡献率':Contribution_Fir['数值'].tolist(),'第二产业对GDP的贡献率':Contribution_Sec['数值'].tolist(),'第三产业对GDP的贡献率':Contribution_Thir['数值'].tolist(),'国内生产总值增长(百分点)':GDP_Incr['数值'].tolist()},index=Contribution_Fir['数据时间'])128 Contribution_All = pd.DataFrame({'第一产业对GDP的贡献率':Contribution_Fir['数值'].tolist(),'第二产业对GDP的贡献率':Contribution_Sec['数值'].tolist(),'第三产业对GDP的贡献率':Contribution_Thir['数值'].tolist()},index=Contribution_Fir['数据时间'])129 Contribution.to_excel('F:\\PycharmProject\\三大产业对GDP的贡献率及GDP增长率.xlsx')130 Contribution131

132 #合并三大产业对GDP增长的拉动

133 Promote = pd.DataFrame({'第一产业对国内生产总值增长的拉动(百分点)':Promote_Fir['数值'].tolist(),'第二产业对国内生产总值增长的拉动(百分点)':Promote_Sec['数值'].tolist(),'第三产业对国内生产总值增长的拉动(百分点)':Promote_Thir['数值'].tolist()},index=Promote_Fir['数据时间'])134 Promote.to_excel('F:\\PycharmProject\\三大产业对GDP增长的拉动.xlsx')135 Promote136

137 #绘制1978年-2018年三大产业对GDP的贡献率及GDP增长率的折线图

138 plt.rcParams['font.sans-serif'] = ['KaiTi'] #指定默认字体

139 plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题

140 Contribution.plot(figsize=(20,10),linewidth=2.5,marker='o').set_title('1978年-2018年三大产业对GDP的贡献率及GDP增长率的折线图',size=25)141 plt.xticks(fontsize=20) #横坐标字体大小20像素

142 plt.yticks(fontsize=20) #横坐标字体大小20像素

143 plt.xlabel('时间',fontsize=20) #横坐标标题为“时间”,字体大小为20像素

144 plt.ylabel('数值(百分点)',fontsize=20) #纵坐标标题为“数值(百分点)”,字体大小为20像素

145 plt.legend(fontsize=20) #设置图例大小为20像素

146 plt.show()147

148 #绘制1978年-2018年三大产业对GDP的贡献率及GDP增长率的水平组合柱状图

149 Contribution.plot(kind='barh',figsize=(20,50),linewidth=5).set_title('1978年-2018年三大产业对GDP的贡献率及GDP增长率的水平组合柱状图',size=25)150 plt.xticks(fontsize=20)151 plt.yticks(fontsize=20)152 plt.ylabel('时间',fontsize=20)153 plt.xlabel('数值(百分点)',fontsize=20)154 plt.legend(fontsize=20)155 plt.show()156

157 #绘制1978年-2018年三大产业对GDP贡献率的盒图

158 plt.figure(figsize=(20,15))159 plt.xticks(fontsize=20)160 plt.yticks(fontsize=20)161 sns.boxplot(data=Contribution_All).set_title("1978年-2018年三大产业对GDP贡献率的盒图",size=25)162 plt.show()163

164 #绘制1978年-2018年三大产业对GDP增长拉动的折线图

165 Promote.plot(figsize=(20,10),linewidth=2.5,marker='D',linestyle='-.').set_title('1978年-2018年三大产业对GDP增长拉动的折线图',size=25)166 plt.xticks(fontsize=20)167 plt.yticks(fontsize=20)168 plt.xlabel('时间',fontsize=20)169 plt.ylabel('数值(百分点)',fontsize=20)170 plt.legend(fontsize=20)171 plt.show()172

173 #绘制1978年-2018年GDP增长百分点的小提琴图

174 plt.figure(figsize=(10,10))175 plt.xticks(fontsize=20)176 plt.yticks(fontsize=20)177 sns.violinplot(data=Contribution['国内生产总值增长(百分点)']).set_title('1978年-2018年GDP增长百分点的小提琴图',size=20)178 plt.show()

四、结论(10分)

1.经过对主题数据的分析与可视化,可以得到哪些结论?

由上面几幅图综合对比可知:

①自改革开放以来,我国第一产业(农业)、第二产业(工业)对GDP的贡献率总体呈下降趋势,第三产业(服务业)对GDP的贡献率总体呈上升趋势,我国正在经历由第二产业向第三产业转型的阶段。

②尽管第三产业的贡献率在2015年以后都超过了第二产业,但总的来说,1987年以来,我国经济增长主要依靠第二产业的拉动,其次是第三产业,最后是第一产业,说明目前国家发展还是离不开工业。

③2015年以来,第三产业的贡献率都超过了50%,这说明目前拉动中国经济增长最重要的是第三产业,但是和美国第三产业80%以上的贡献率相比,中国还有很大的上升空间。

④截止到2018年,第三产业对GDP的贡献率最高值<第二产业对GDP的贡献率最高值

⑤改革开放以来,我国GDP的增长百分点最多聚集在9%左右。

⑥2018年GDP的增长率为6.6%,是自1990年以来最低的增长率;2016年GDP的增长率为6.7%,是改革开放以来第一次连续6年下滑。

⑦1984年、1992年、2017年GDP增长率异常高,国家经济处于过热状态,1984年和1992年,三大产业对GDP增长的拉动也大幅提高,尤其是第二产业对GDP增长的拉动达到了最高值。

⑧40年来,第二产业对GDP增长的拉动,多数情况下高于第三产业;第一产业对GDP增长的拉动,多数情况低于第二、第三产业。

2.对本次程序设计任务完成的情况做一个简单的小结。

在做本次项目任务之前,有简单学习过Python爬虫基本知识,所以在整体框架结构的搭建上,还算比较容易。由于个人能力问题,整个程序编写的并不完美,但能实现基本功能。最大的困难就是,对动态数据的爬取,好在互联网的发达,将数据JSON化,让我们的问题能够迎刃而解。另外,在设计的过程中,我也发现了数据完整性的问题。虽说国家统计局的数据是最权威最准确的,但是不知道什么原因,2018年GDP的增长率为空,而我们在数据清理的时候,把含有空值的行给删去,导致最后GDP的增长率差了一个数据,所以只能根据公式进行计算,再将其添加进去。画图本来是想用Python可视化神器pyecharts,但是找遍了各种解决方案,就是没办法成功安装,最后这个想法也不了了之。我还学习到,导入seaborn库之后,如果想导入数据库的话,只能用他在线的存储库,来加载数据集,网址是https://github.com/mwaskom/seaborn-data,这个数据集比较适合用来做练习,所以我们选择了直接用seaborn库里的方法,直接生成想要的图表。

经过本次项目,我深深地认识到自己的知识漏洞,对于所学的知识掌握得不够扎实,需要在课后花更多的时间去学习巩固。而我们所学的也只是皮毛,还有更深层次的知识等着我们去挖掘。另外,还要不断地练习,如果只是单纯地看老师怎么写程序,自己却不实际操作,那么能力永远都不会提高。只有理论与实践相结合,才能一次又一次地提升自己的认识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值