数据来源 http://www.stats.gov.cn/tjsj/ndsj/2018/indexch.htm
简单分析一下中国的人口变化,还是能够看出一些历史事件与变化的。
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
df = pd.read_csv("D:/test/中国人口数及构成1949-2017.csv")
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
df['sim_population'] = df['population'] / 10000
x = df['year']
y = df['sim_population']
z1 = np.polyfit(x,y,5) #用3次多项式拟合 可以改为5 次多项式。。。。 返回三次多项式系数
p1= np.poly1d(z1)
# print(p1) #在屏幕上打印拟合多项式
plt.figure(figsize=(16, 8))
yvals = p1(x)#也可以使用yvals=np.polyval(z1,x)
plot1 = plt.plot(x,y,"*",label='统计值',color="green",marker='o',markersize=10)
plot2 = plt.plot(x,yvals,'r',label='5次曲线拟合',color="yellow",linewidth=1)
plt.xlabel('年份')
plt.ylabel('人口')
plt.legend(loc=4) #指定legend的位置,读者可以自己help它的用法
plt.title('人口增长统计')
plt.show()
x = df['year']
y = df['city_rate']
z1 = np.polyfit(x,y,5) #用3次多项式拟合 可以改为5 次多项式。。。。 返回三次多项式系数
p1= np.poly1d(z1)
# print(p1) #在屏幕上打印拟合多项式
plt.figure(figsize=(16, 8))
yvals = p1(x)#也可以使用yvals=np.polyval(z1,x)
plot1 = plt.plot(x,y,"*",label='统计值',color="green",marker='*',markersize=10)
plot2 = plt.plot(x,yvals,'r',label='5次曲线拟合',color="yellow",linewidth=1)
plt.xlabel('年份')
plt.ylabel('城市化率')
plt.legend(loc=4) #指定legend的位置,读者可以自己help它的用法
plt.title('城市化率变化统计值')
plt.show()
x = df['year']
y = df['men_rate']
z1 = np.polyfit(x,y,5) #用3次多项式拟合 可以改为5 次多项式。。。。 返回三次多项式系数
p1= np.poly1d(z1)
# print(p1) #在屏幕上打印拟合多项式
plt.figure(figsize=(16, 8))
yvals = p1(x)#也可以使用yvals=np.polyval(z1,x)
plot1 = plt.plot(x,y,"*",label='统计值',color="green",marker='*',markersize=10)
plot2 = plt.plot(x,yvals,'r',label='5次曲线拟合',color="yellow",linewidth=1)
plt.xlabel('年份')
plt.ylabel('男性人口比例')
plt.legend(loc=4) #指定legend的位置,读者可以自己help它的用法
plt.title('男性人口比例变化统计值')
plt.show()