1999年——2019年十年国家人口比率分析

一、选题背景

       新中国成立前期,由于国际局势紧张和斗争带来的影响,我国鼓励生育,后来由于人口的过快增长给社会经济发展带来了严重影响,我国从1970年开始实施计划生育,人口自然增长率开始下降,到现代由于老龄化危机和人口增长跟不上经济发展需求,中国逐步放开二胎政策(全面二胎)。由此可以看出,人口问题是影响我国经济发展的重要因素之一,因此有必要研究在新形势下自然增长率的情况。在进入新世纪以来,我国人口形势发生了重大变化。习同志指出:“当前,我国人口结构呈现明显的高龄少子特征,适龄人口生育意愿明显降低,妇女总和生育率明显低于更替水平。”这是对新时代人口发展特征的深刻概括。我们必须正视新情况、分析新问题、应对新挑战。所以本次课程设计根据相关统计数据分析我国1999年-2019年10年来的自然人口增长率。

二.主题式网络爬虫设计方案

1.主题式网络爬虫名称:国家数据网不同年份的人口比率

2.主题式网络爬虫爬取的内容:人口出生率死亡率及自然增长率

3.设计方案概述:

实现思路:爬取网站内容,之后分析提取需要的数据,进行数据清洗,之后数据可视化,并计算不同比率的相关系数

技术难点:因为用的是json分析,所以需要通过查找的方式获取数据,以及后面的3D模型图需要将整数转成浮点数

三、主题页面的结构特征分析

1.主题页面的结构与特征分析:打开开发者工具,通过逐个查找找到需要数据的所在位置,发现所需要的数据都在<tbody>

下的<tr>中

2.  http://data.stats.gov.cn/easyquery.htm?m=QueryData&dbcode=hgnd&rowcode=sj&colcode=zb&wds=[]&dfwds={}

 

3.

四、网络爬虫程序设计

1.数据爬取与采集

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 import matplotlib
 4 from mpl_toolkits.mplot3d import Axes3D
 5 import seaborn as sns
 6 import pickle
 7 
 8 matplotlib.rcParams['font.sans-serif']=['SimHei']  
 9 # 用黑体显示中文 
10 matplotlib.rcParams['axes.unicode_minus']=False     
11 # 正常显示负号
12 dfwds = '[{"wdcode": "sj", "valuecode": "LAST21"}, {"wdcode":"zb","valuecode":"A0302"}]'
13 #网址的dfwds为上面所写的,以便更快的获取需要的数据
14 url='http://data.stats.gov.cn/easyquery.htm?m=QueryData&dbcode=hgnd&rowcode=sj&colcode=zb&wds=[]&dfwds={}'
15 #获取url
16 response = requests.get(url.format(dfwds)) #获取网页的数据
17 z=response.json()     #获取网址的json
18 z=z['returndata']     #通过字典的key值,获取数据
19 
20 z=z['datanodes']
21 print(z)
 
获取dfwds和url

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

 1 birth_rate={}    #分别设置三个字典,用来装后面的值
 2 death_rate={}
 3 natural_growth_rate={}
 4 for i in range(len(z)//3):     #通过循环,获取结果
 5     #print("年份{}:出生率{}".format(z[i]['wds'][1]['valuecode'],z[i]['data']['data']))
 6     birth_rate[z[i]['wds'][1]['valuecode']]=z[i]['data']['data']
 7 #print(birth_rate)
 8 for i in range(len(z)//3,len(z)//3*2):
 9     #print("年份{}:死亡率{}".format(z[i]['wds'][1]['valuecode'],z[i]['data']['data']))
10     death_rate[z[i]['wds'][1]['valuecode']]=z[i]['data']['data']
11 #print(death_rate)
12 for i in range(len(z)//3*2,len(z)):
13     #print("年份{}:自然增长率{}".format(z[i]['wds'][1]['valuecode'],z[i]['data']['data']))
14     natural_growth_rate[z[i]['wds'][1]['valuecode']]=z[i]['data']['data']
15 #print(natural_growth_rate)
16 years=list(birth_rate.keys())   #把字典里面的key和value都拿出来,分别转成列表类型
17 rate1=list(birth_rate.values())
18 rate2=list(death_rate.values())
19 rate3=list(natural_growth_rate.values())
20 d={'出生率   ':rate1,                   #将数值带入
21    '死亡率     ':rate2,
22    '自然增长率         ':rate3}
23 df=pd.DataFrame(d,index=years)    #将年份和比率结合一起
24 print(df)                   #输出结果
 

 



3.文本分析(可选):因为都是数字,所以这里没有用到文本分析

4.数据分析与可视化:

(1)折线图

 1 years=years[::-1]  #因为后面用到的数据都是从左到右年份逐渐增大,所以数据全部都需要倒一下
 2 rate1=rate1[::-1]
 3 rate2=rate2[::-1]
 4 rate3=rate3[::-1]
 5 #print(years)
 6 
 7 #绘制折线图
 8 x=years   #设置x轴
 9 plt.figure(figsize=(12,8),dpi=80)   #设置绘制的图像和字体大小
10 plt.plot(x,rate1,color = 'r',label="birth_rate")#r是红色
11 plt.plot(x,rate2,color = 'y',label="death_rate")#k是黄色
12 plt.plot(x,rate3,color = 'b',label="natural_growth_rate")#b是蓝色
13 plt.xlabel("year")#横坐标名字
14 plt.ylabel("rate")#纵坐标名字
15 plt.legend(loc = "best")#图例
16 plt.show()   
 

(2)柱状图

 1 #绘制柱状图
 2 plt.figure(figsize=(12,8),dpi=80)   #设置绘制的图像和字体大小
 3 x = np.arange(21) #总共有几组,就设置成几,我们这里有21组,所以设置为21
 4 total_width, n = 0.8, 3    
 5 # 有多少个类型,只需更改n即可,比如这里我们对比了3个,那么就把n设成3
 6 width = total_width / n
 7 x = x - (total_width - width) / 2
 8 plt.bar(x, rate1, color = "r",width=width,label='birth_rate')
 9 plt.bar(x + width, rate2, color = "y",width=width,label='death_rate')
10 plt.bar(x + 2 * width,rate3 , color = "c",width=width,label='natural_growth_rate')
11 plt.xlabel("year")
12 plt.ylabel("rate")
13 plt.legend(loc = "best")
14 plt.xticks([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],years) 
15 #这里之所以一个个打,因为快一点
16 my_y_ticks = np.arange(0, 20, 2)
17 plt.ylim((0, 20))
18 plt.yticks(my_y_ticks)
19 plt.show()

(3)直方图

 
 1 #绘制直方图
 2 plt.figure(figsize=(12,8),dpi=80)
 3 plt.hist(rate1,bins=40, normed=0, facecolor="blue", edgecolor="blue", alpha=0.7) 
 4 #bins是直方图的长条形数目
 5 plt.hist(rate2,bins=40, normed=0, facecolor="yellow", edgecolor="yellow", alpha=0.7)
 6 #normed是否将得到的直方图向量归一化
 7 plt.hist(rate3,bins=40, normed=0, facecolor="green", edgecolor="green", alpha=0.7)
 8 plt.xlabel("比率")
 9 plt.ylabel("总数")
10 plt.title("人口比率直方图")
11 plt.show()    #蓝色是出生率,黄色是死亡率,绿色是自然增长率

(4)堆叠条形图

 1 #绘制堆叠条形图
 2 plt.figure(figsize=(12,8),dpi=80)
 3 x=range(len(rate1))
 4 rects1 = plt.bar(x,height=rate1, width=0.45, alpha=0.8, color='red', label="出生率")
 5 rects2 = plt.bar(x,height=rate2, width=0.45, color='green', label="死亡率")
 6 #x表示条数 height表示高度 
 7 plt.ylim(0, 20)
 8 plt.ylabel("比率")
 9 plt.xticks(x, years)
10 plt.xlabel("年份")
11 plt.title("人口出生率与死亡率对比")
12 plt.legend()
13 plt.show()

(5)横向柱状图

1 #绘制横向的柱状图
2 plt.figure(figsize=(12,8),dpi=80)
3 a=0.3   #设置分开的间隔
4 index = np.arange(1999,2020)
5 plt.barh(index,rate1, a, color = 'brown', label = 'birth_rate')
6 plt.barh(index+a, rate2, a, color = 'pink', label = 'death_rate')
7 plt.barh(index+2*a, rate3, a, color = 'orange',label = 'natural_growth_rate')
8 plt.legend()

(6)饼图

 1 #绘制饼图
 2 plt.figure(figsize=(12,8),dpi=80)
 3 label_list = ["birth_rate", "death_rate", "natural_growth_rate"]    # 各部分标签
 4 size = [33, 33, 33]    # 各部分大小
 5 color = ["red", "green", "blue"]
 6 explode = [0.05, 0, 0]   # 各部分突出值
 7 patches, l_text, p_text = plt.pie(size, explode=explode, colors=color,\
 8                                   labels=label_list, labeldistance=1.1,\
 9                                   autopct="%1.1f%%", shadow=False, startangle=90, pctdistance=0.6)
10 plt.axis("equal")    # 设置横轴和纵轴大小相等,这样饼才是圆的
11 plt.legend()
12 plt.show() #因为年份,出现的次数都是相等,所以这个图三部分都一样

 

(7)子图

 1 #绘制子图
 2 plt.figure(figsize=(12,8),dpi=80) # 创建figure对象
 3 # 绘制子图1
 4 axes1 = plt.subplot(2,2,1)
 5 plt.plot(years,rate1,'r-o')
 6 plt.title('birth_rate')
 7 # 绘制子图2
 8 axes2 = plt.subplot(2,2,2)
 9 plt.plot(years,rate2,'g-*')
10 plt.title('death_rate')
11 # 绘制子图3
12 axes3 = plt.subplot(2,1,2)
13 plt.plot(years,rate3,'y-1')
14 plt.title('natural_growth_rate')

(8)三维图

1 #绘制3D图
2 fig=plt.figure(figsize=(10,8),dpi=80)
3 ax = Axes3D(fig)
4 ax.scatter3D(rate1,rate2,rate3, cmap='Blues')  #绘制散点图  
5 ax.plot3D(rate1,rate2,rate3,'gray')    #绘制空间曲线
6 #因为人口的出生率死亡率和自然增长率都极为接近,所以结果看着像一条直线
7 plt.show()

(9)三维曲面图

 1 #绘制三维曲面
 2 fig = plt.figure(figsize=(14,8),dpi=80)  #定义新的三维坐标轴
 3 ax3 = plt.axes(projection='3d')
 4 ratel1=[]  
 5 ratel2=[]
 6 ratel3=[]
 7 for i in rate1:    #这里因为不是整数就运行不了,所以将浮点数类型变成整数类型
 8     ratel1.append(int(i))
 9 for i in rate2:
10     ratel2.append(int(i))
11 for i in rate3:
12     ratel3.append(int(i))
13 xx = ratel1  #这样能更清晰的知道X,Y,Z轴
14 yy = ratel2
15 zz = ratel3
16 X, Y = np.meshgrid(xx, yy)
17 Z = np.sin(X)+np.cos(Y) +2
18 ax3.plot_surface(X,Y,Z,cmap='rainbow')
19 #x代表出生率,y代表死亡率,z代表自然增长率
20 plt.show()

5.根据数据之间的关系,分析两个变量之间的相关系数,画出散点图,并建立变量之间的回归方程

(1)年份与出生率

 1 #年份与出生率之间的相关系数,以及散点图
 2 yearl=[]
 3 years=years[::-1]   #因为df出生率是正的,而之前年份倒过来过,所以这里需要倒一次
 4 for i in years:
 5     yearl.append(float(i))
 6 year = pd.Series(yearl) #利用Series将列表转换成新的、pandas可处理的数据
 7 birth_rate = pd.Series(rate1)
 8 corr_gust = round(year.corr(birth_rate), 4) #计算标准差,round(a, 4)是保留a的前四位小数
 9 print('年份与出生率之间的相关系数:', corr_gust)
10 plt.figure(figsize=(12,8),dpi=80)
11 sns.stripplot(x =years,y = '出生率   ',data = df)

(2)出生率与死亡率

 1 #出生率与死亡率之间的相关系数,以及散点图
 2 birth_rate=pd.Series(rate1)
 3 death_rate=pd.Series(rate2)
 4 corr_gust = round(birth_rate.corr(death_rate), 4)
 5 print('出生率与死亡率之间的相关系数:', corr_gust)
 6 y=df[["出生率   "]]
 7 x=df[["死亡率     "]]
 8 pd.plotting.scatter_matrix(
 9     df[["出生率   ", "死亡率     "]],
10     alpha=0.8, figsize=(10, 10), diagonal='kde'
11 )
12 plt.show()
13 
14 #建立出生率与死亡率的一元非线性回归方程以及图示
15 df1=df[["出生率   ","死亡率     "]]
16 sns.lmplot(x="出生率   ",y="死亡率     ",data=df1)

 

6.数据持久化

1 f1 = open('pickle.txt','wb')   #建立一个文件,以二进制形式
2 pickle.dump(df,f1)         # pickle.dump(obj, file, [,protocol]) file为对象保存到的类文件对象
3 f1.flush()           #flush是用来刷新缓冲区的
4 f1.close()
5 read_file = open('pickle.txt','rb')
6 data = pickle.load(read_file)    #从read_file(文件对象)中读取一个字符串,并将它重构为原来的python对象。
7 print(data)
8 read_file.close()

 

 

7.将以上各部分的代码汇总,附上完整程序代码


 1 import requests
  2 import pandas as pd
  3 import json
  4 import matplotlib.pyplot as plt
  5 import numpy as np
  6 import matplotlib
  7 from mpl_toolkits.mplot3d import Axes3D
  8 import seaborn as sns
  9 import pickle
 10 
 11 matplotlib.rcParams['font.sans-serif']=['SimHei']  
 12 # 用黑体显示中文 
 13 matplotlib.rcParams['axes.unicode_minus']=False     
 14 # 正常显示负号
 15 dfwds = '[{"wdcode": "sj", "valuecode": "LAST21"}, {"wdcode":"zb","valuecode":"A0302"}]'
 16 #网址的dfwds为上面所写的,所以更快的获取要的数据
 17 url='http://data.stats.gov.cn/easyquery.htm?m=QueryData&dbcode=hgnd&rowcode=sj&colcode=zb&wds=[]&dfwds={}'
 18 #获取url
 19 response = requests.get(url.format(dfwds)) #获取网页的数据
 20 z=response.json()     #获取网址的json
 21 z=z['returndata']     #通过字典的key值,获取数据
 22 z=z['datanodes']
 23 #print(z)
 24 birth_rate={}    #分别设置三个字典,用来装后面的值
 25 death_rate={}
 26 natural_growth_rate={}
 27 for i in range(len(z)//3):     #通过循环,获取结果
 28     #print("年份{}:出生率{}".format(z[i]['wds'][1]['valuecode'],z[i]['data']['data']))
 29     birth_rate[z[i]['wds'][1]['valuecode']]=z[i]['data']['data']
 30 #print(birth_rate)
 31 for i in range(len(z)//3,len(z)//3*2):
 32     #print("年份{}:死亡率{}".format(z[i]['wds'][1]['valuecode'],z[i]['data']['data']))
 33     death_rate[z[i]['wds'][1]['valuecode']]=z[i]['data']['data']
 34 #print(death_rate)
 35 for i in range(len(z)//3*2,len(z)):
 36     #print("年份{}:自然增长率{}".format(z[i]['wds'][1]['valuecode'],z[i]['data']['data']))
 37     natural_growth_rate[z[i]['wds'][1]['valuecode']]=z[i]['data']['data']
 38 #print(natural_growth_rate)
 39 years=list(birth_rate.keys())   #把字典里面的key和value都拿出来,分别转成列表类型
 40 rate1=list(birth_rate.values())
 41 rate2=list(death_rate.values())
 42 rate3=list(natural_growth_rate.values())
 43 d={'出生率   ':rate1,                   #将数值带入
 44    '死亡率     ':rate2,
 45    '自然增长率         ':rate3}
 46 df=pd.DataFrame(d,index=years)    #将年份和比率结合一起
 47 f1 = open('pickle.txt','wb')
 48 pickle.dump(df,f1)
 49 f1.flush()
 50 f1.close()
 51 read_file = open('pickle.txt','rb')
 52 data = pickle.load(read_file)
 53 #print(data)
 54 read_file.close()
 55 #print(df)                   #输出结果
 56 years=years[::-1]  #因为后面用到的数据都是从左到右年份逐渐增大,所以数据全部都需要倒一下
 57 rate1=rate1[::-1]
 58 rate2=rate2[::-1]
 59 rate3=rate3[::-1]
 60 #print(years)
 61 
 62 #绘制折线图
 63 x=years   #设置x轴
 64 plt.figure(figsize=(12,8),dpi=80)   #设置绘制的图像和字体大小
 65 plt.plot(x,rate1,color = 'r',label="birth_rate")#r是红色
 66 plt.plot(x,rate2,color = 'y',label="death_rate")#k是黄色
 67 plt.plot(x,rate3,color = 'b',label="natural_growth_rate")#b是蓝色
 68 plt.xlabel("year")#横坐标名字
 69 plt.ylabel("rate")#纵坐标名字
 70 plt.legend(loc = "best")#图例
 71 plt.show()   
 72 
 73 #绘制柱状图
 74 plt.figure(figsize=(12,8),dpi=80)   #设置绘制的图像和字体大小
 75 x = np.arange(21) #总共有几组,就设置成几,我们这里有21组,所以设置为21
 76 total_width, n = 0.8, 3    
 77 # 有多少个类型,只需更改n即可,比如这里我们对比了3个,那么就把n设成3
 78 width = total_width / n
 79 x = x - (total_width - width) / 2
 80 plt.bar(x, rate1, color = "r",width=width,label='birth_rate')
 81 plt.bar(x + width, rate2, color = "y",width=width,label='death_rate')
 82 plt.bar(x + 2 * width,rate3 , color = "c",width=width,label='natural_growth_rate')
 83 plt.xlabel("year")
 84 plt.ylabel("rate")
 85 plt.legend(loc = "best")
 86 plt.xticks([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],years) 
 87 #这里之所以一个个打,因为快一点
 88 my_y_ticks = np.arange(0, 20, 2)
 89 plt.ylim((0, 20))
 90 plt.yticks(my_y_ticks)
 91 plt.show()
 92 
 93 #绘制直方图
 94 plt.figure(figsize=(12,8),dpi=80)
 95 plt.hist(rate1,bins=40, normed=0, facecolor="blue", edgecolor="blue", alpha=0.7) 
 96 #bins是直方图的长条形数目
 97 plt.hist(rate2,bins=40, normed=0, facecolor="yellow", edgecolor="yellow", alpha=0.7)
 98 #normed是否将得到的直方图向量归一化
 99 plt.hist(rate3,bins=40, normed=0, facecolor="green", edgecolor="green", alpha=0.7)
100 plt.xlabel("比率")
101 plt.ylabel("总数")
102 plt.title("人口比率直方图")
103 plt.show()    #蓝色是出生率,黄色是死亡率,绿色是自然增长率
104 '
105 #绘制堆叠条形图
106 plt.figure(figsize=(12,8),dpi=80)
107 x=range(len(rate1))
108 rects1 = plt.bar(x,height=rate1, width=0.45, alpha=0.8, color='red', label="出生率")
109 rects2 = plt.bar(x,height=rate2, width=0.45, color='green', label="死亡率")
110 #x表示条数 height表示高度 
111 plt.ylim(0, 20)
112 plt.ylabel("比率")
113 plt.xticks(x, years)
114 plt.xlabel("年份")
115 plt.title("人口出生率与死亡率对比")
116 plt.legend()
117 plt.show()
118 
119 #绘制横向的柱状图
120 plt.figure(figsize=(12,8),dpi=80)
121 a=0.3   #设置分开的间隔
122 index = np.arange(1999,2020)
123 plt.barh(index,rate1, a, color = 'brown', label = 'birth_rate')
124 plt.barh(index+a, rate2, a, color = 'pink', label = 'death_rate')
125 plt.barh(index+2*a, rate3, a, color = 'orange',label = 'natural_growth_rate')
126 plt.legend()
127 
128 #绘制饼图
129 plt.figure(figsize=(12,8),dpi=80)
130 label_list = ["birth_rate", "death_rate", "natural_growth_rate"]    # 各部分标签
131 size = [33, 33, 33]    # 各部分大小
132 color = ["red", "green", "blue"]
133 explode = [0.05, 0, 0]   # 各部分突出值
134 patches, l_text, p_text = plt.pie(size, explode=explode, colors=color,\
135                                   labels=label_list, labeldistance=1.1,\
136                                   autopct="%1.1f%%", shadow=False, startangle=90, pctdistance=0.6)
137 plt.axis("equal")    # 设置横轴和纵轴大小相等,这样饼才是圆的
138 plt.legend()
139 plt.show() #因为年份,出现的次数都是相等,所以这个图三部分都一样
140 
141 #绘制子图
142 plt.figure(figsize=(12,8),dpi=80) # 创建figure对象
143 # 绘制子图1
144 axes1 = plt.subplot(2,2,1)
145 plt.plot(years,rate1,'r-o')
146 plt.title('birth_rate')
147 # 绘制子图2
148 axes2 = plt.subplot(2,2,2)
149 plt.plot(years,rate2,'g-*')
150 plt.title('death_rate')
151 # 绘制子图3
152 axes3 = plt.subplot(2,1,2)
153 plt.plot(years,rate3,'y-1')
154 plt.title('natural_growth_rate')
155 
156 #绘制3D图
157 fig=plt.figure(figsize=(10,8),dpi=80)
158 ax = Axes3D(fig)
159 ax.scatter3D(rate1,rate2,rate3, cmap='Blues')  #绘制散点图  
160 ax.plot3D(rate1,rate2,rate3,'gray')    #绘制空间曲线
161 #因为人口的出生率死亡率和自然增长率都极为接近,所以结果看着像一条直线
162 plt.show()
163 
164 #绘制三维曲面
165 fig = plt.figure(figsize=(14,8),dpi=80)  #定义新的三维坐标轴
166 ax3 = plt.axes(projection='3d')
167 ratel1=[]  
168 ratel2=[]
169 ratel3=[]
170 for i in rate1:    #这里因为不是整数就运行不了,所以将浮点数类型变成整数类型
171     ratel1.append(int(i))
172 for i in rate2:
173     ratel2.append(int(i))
174 for i in rate3:
175     ratel3.append(int(i))
176 xx = ratel1  #这样能更清晰的知道X,Y,Z轴
177 yy = ratel2
178 zz = ratel3
179 X, Y = np.meshgrid(xx, yy)
180 Z = np.sin(X)+np.cos(Y) +2
181 ax3.plot_surface(X,Y,Z,cmap='rainbow')
182 #x代表出生率,y代表死亡率,z代表自然增长率
183 plt.show()
184 
185 #年份与出生率之间的相关系数,以及散点图
186 yearl=[]
187 years=years[::-1]   #因为df出生率是正的,而之前年份倒过来过,所以这里需要倒一次
188 for i in years:
189     yearl.append(float(i))
190 year = pd.Series(yearl) #利用Series将列表转换成新的、pandas可处理的数据
191 birth_rate = pd.Series(rate1)
192 corr_gust = round(year.corr(birth_rate), 4) #计算标准差,round(a, 4)是保留a的前四位小数
193 print('年份与出生率之间的相关系数:', corr_gust)
194 plt.figure(figsize=(12,8),dpi=80)
195 sns.stripplot(x =years,y = '出生率   ',data = df)
196 
197 #出生率与死亡率之间的相关系数,以及散点图
198 birth_rate=pd.Series(rate1)
199 death_rate=pd.Series(rate2)
200 corr_gust = round(birth_rate.corr(death_rate), 4)
201 print('出生率与死亡率之间的相关系数:', corr_gust)
202 y=df[["出生率   "]]
203 x=df[["死亡率     "]]
204 pd.plotting.scatter_matrix(
205     df[["出生率   ", "死亡率     "]],
206     alpha=0.8, figsize=(10, 10), diagonal='kde'
207 )
208 plt.show()
209 
210 #建立出生率与死亡率的一元非线性回归方程以及图示
211 df1=df[["出生率   ","死亡率     "]]
212 sns.lmplot(x="出生率   ",y="死亡率     ",data=df1)

五、结论

1.经过对主题数据的分析与可视化得到的结论:通过对数据的分析以及可视化可以看出,近几十年来我国的出生率逐渐降低,死亡率逐渐升高,自然增长率也因此逐年下降

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

回顾本次的课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,能够说得是苦多于甜,但是能够学到很多很多的东西,同时不但能够巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己的实际动手水平和独立思考的水平。在设计的过程中我遇到了很多问题,能够说得是困难重重,但可喜可贺的是最终都得到了解决。本来以为自己都学的差不多了 ,但是实际自己动手操作起来,才发现没有那么简单,很多东西都要查资料,同时也发现了如CDSN这样的博客网以及博客园和CDSN都有的众多文章可以参考,总结前人的经验补充自己的知识。在这次对1999年-2019年十年国家数据网的人口比率分析的过程中,我也从中学会了不少函数及用法。编程一行还是要不断学习不断动手才可以越走越远,如同逆水行舟不进则退。今后我将更加努力学习,每天进步一点点做最好的自己,加油!

posted @ 2021-12-28 19:23  20软工四班杨洪  阅读(96)  评论(0编辑  收藏  举报