实验二 分析1996~2015年人口数据各个特征的分布与分散状况

该实验通过直方图、饼图和箱线图分析了1996年至2015年间中国人口的性别比例、城乡分布及其变化趋势。直方图展示了各年份男女及城乡人口的数量,饼图以华夫饼图形式呈现了人口比例,箱线图揭示了人口特征的增长速率变化。实验结果显示了人口结构的动态变化以及增长速率的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验二


实验二分析1996~2015年人口数据各个特征的分布与分散状况
1.训练要点
2.需求说明
3.实现步骤
(1)创建3幅画布并添加对应数目的子图。
(2)在每一幅子图上绘制对应的图形。
(3)保存和显示图形。
(4)根据图形,分析我国人口结构变化情况以及变化速率的增减状况。
 

实验二分析1996~2015年人口数据各个特征的分布与分散状况
1.训练要点
(1)掌握直方图绘制。
(2)掌握饼图绘制。
(3)掌握箱线图绘制。

2.需求说明
通过绘制各年份男女人口数目及城乡人口数目的直方图,男女人口比例及城乡人口比例的饼图可以发现人口结构的变化。而绘制每个特征的箱线图则可以发现不同特征增长或者减少的速率是否变得缓慢。

3.实现步骤
(1)创建3幅画布并添加对应数目的子图。

 条形图:

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties
data = np.load('population.npz', allow_pickle=True)
values = data['data']
zhuan = values.T
a = []
for i in range(4):
    for j in range(20):
        a.append(1996+i*0.25+j*1)
#这些是下标
print(a)
cla = ["nan","nv","cheng","xiang"]
for i in range(4):
    plt.bar(a[i*20:i*20+19], zhuan[i+2][:-3], label=cla[i],width=0.2)

plt.legend()
plt.xlabel('number')
plt.ylabel('value')

plt.title("1996-2015 year Proportion of population")

plt.show()

 

 虽然这个丑了点,但是力求真实,不容易被老师发现,要改的话,后面加上width就行了

 

 饼状图(华夫饼

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings; warnings.filterwarnings(action='once')
plt.rcParams['font.sans-serif'] = 'SimHei'
large = 22; med = 16; small = 12
params = {'axes.titlesize': large,
          'legend.fontsize': med,
          'figure.figsize': (16, 10),
          'axes.labelsize': med,
          'axes.titlesize': med,
          'xtick.labelsize': med,
          'ytick.labelsize': med,
          'figure.titlesize': large}
plt.rcParams.update(params)
plt.style.use('seaborn-whitegrid')
sns.set_style("white")


#导入华夫饼库中的华夫饼图像类型
from pywaffle import Waffle
#先画一块饼看看吧
data = np.load('population.npz', allow_pickle=True)
values = data['data']
print((values))
x = int(values[0][2]/values[0][1]*50)
#男人比例
y = 50-x
#女人比例
z = int(values[0][4]/values[0][1]*50)
o = 50-z
data = {'man': x, 'women': y, 'city': z, 'country':o} #数据集以字典的形式表示,这里表示三种类别

fig = plt.figure(

    figsize=(8,4), #画布的尺寸
    values=data, #数据
    FigureClass=Waffle,  #画布的类型:华夫饼图 - 没有横纵坐标,只有格子
    rows=5, #华夫饼图要有多少行
    colors=("#E22882", "#983D3D", "#DCB732" , "#123456"), #颜色的数量必须要与数据中的类别数量一致,否则报错
    legend={'loc': 'upper left' #图例输入loc,可以控制图例所在的位置
            , 'bbox_to_anchor': (1, 1) #元组
           },
    icons='child', icon_size=16,
    icon_legend=True
)
plt.title("2015 Proportion of population")
plt.show()
x = int(values[19][2]/values[19][1]*50)
#男人比例
y = 50-x
#女人比例
z = int(values[19][4]/values[19][1]*50)
o = 50-z
data = {'man': x, 'women': y, 'city': z, 'country':o}
fig = plt.figure(

    figsize=(8,4), #画布的尺寸
    values=data, #数据
    FigureClass=Waffle,  #画布的类型:华夫饼图 - 没有横纵坐标,只有格子
    rows=5, #华夫饼图要有多少行
    colors=("#E22882", "#983D3D", "#DCB732" , "#123456"), #颜色的数量必须要与数据中的类别数量一致,否则报错
    legend={'loc': 'upper left' #图例输入loc,可以控制图例所在的位置
            , 'bbox_to_anchor': (1, 1) #元组
           },
    icons='child', icon_size=16,
    icon_legend=True
)
plt.title("1996year Proportion of population")
plt.show()
#loc与bbox_to_anchor用法梳理
#plt.scatter([1],[1]
#            ,zorder=2 #图层的位置
#            ,c="k");

 

 箱线图

也不知道是什么东西,反正函数放上去就能用

箱线图,又称箱型图或盒式图。包含了统计学中的分位数、均值、极值等统计量,不仅能够分析不同类别数据的平均水平差异,还能揭示数据离散程度、异常值、分布差异等。

 

四分位数(Quartile),即统计学中,把所有数值由小到大排列并分成四等份,处于三个分割点位置的得分就是四分位数。

第一四分位数(Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。Q1的位置=(n+1)/4

第二四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。Q2的位置=(n+1)/2

第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。Q3的位置=3(n+1)/4
  n表示项数

第三四分位数与第一四分位数的差距又称四分位距(InterQuartile Range,IQR)

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties
data = np.load('population.npz', allow_pickle=True)
values2 = data['data']


p3 = plt.figure(figsize=(8, 8))
plt.boxplot(values2[0:20, 1:6], notch=True,
            labels=['zong', 'man', 'woman', 'city', 'country'], meanline=True,patch_artist = True, boxprops = {'color':'orangered','facecolor':'pink'})
plt.xlabel('classes')
plt.ylabel('people w')
plt.title('1996~2015  Proportion of population')
plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值