实验一 分析1996~2015年人口数据特征间的关系(改装版


运行环境:pycharm

使用库:mpl_toolkits、NumPy、matplotlib.pyplot

数据(populations.npz)

人口数据总共有6个特征,分别为年份、年末总人口、男性人口、女性人口、城镇人口、乡村人口。查看各个特征随着时间推移发生的变化情况可以分析出未来男女人口比例、城乡人口变化的方向。

[['2015年' 137462.0 70414.0 67048.0 77116.0 60346.0]
 ['2014年' 136782.0 70079.0 66703.0 74916.0 61866.0]
 ['2013年' 136072.0 69728.0 66344.0 73111.0 62961.0]
 ['2012年' 135404.0 69395.0 66009.0 71182.0 64222.0]
 ['2011年' 134735.0 69068.0 65667.0 69079.0 65656.0]
 ['2010年' 134091.0 68748.0 65343.0 66978.0 67113.0]
 ['2009年' 133450.0 68647.0 64803.0 64512.0 68938.0]
 ['2008年' 132802.0 68357.0 64445.0 62403.0 70399.0]
 ['2007年' 132129.0 68048.0 64081.0 60633.0 71496.0]
 ['2006年' 131448.0 67728.0 63720.0 58288.0 73160.0]
 ['2005年' 130756.0 67375.0 63381.0 56212.0 74544.0]
 ['2004年' 129988.0 66976.0 63012.0 54283.0 75705.0]
 ['2003年' 129227.0 66556.0 62671.0 52376.0 76851.0]
 ['2002年' 128453.0 66115.0 62338.0 50212.0 78241.0]
 ['2001年' 127627.0 65672.0 61955.0 48064.0 79563.0]
 ['2000年' 126743.0 65437.0 61306.0 45906.0 80837.0]
 ['1999年' 125786.0 64692.0 61094.0 43748.0 82038.0]
 ['1998年' 124761.0 63940.0 60821.0 41608.0 83153.0]
 ['1997年' 123626.0 63131.0 60495.0 39449.0 84177.0]
 ['1996年' 122389.0 62200.0 60189.0 37304.0 85085.0]]

实现步骤:


使用NumPy库读取人口数据
创建画布,并添加子图
在两个子图上分别绘制散点图和折线图
显示(保存)图片
分析未来人口变化趋势(略)

完整代码:

import pandas as pd
from sklearn import datasets
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

data = np.load('population.npz', allow_pickle=True)
# print(data.files)
# print(data['data'])
# print(data['feature_names'])
print(data['data'])
plt.rcParams['font.sans-serif'] = 'SimHei'
name = data['feature_names']
values = data['data']

def function(data):
    from mpl_toolkits.mplot3d import Axes3D

    #print(dims, types)
    flg=plt.figure()
    ax=Axes3D(flg)
    o = 0

    lei = ["nan","nv","cheng","nong"]
    for i in range(4):
        x = []
        y = []
        z = []
        for j in range(20):
            print(data['data'][j][0][:4])
            x.append(int(data['data'][j][0][:4]))
            y.append(int(data['data'][j][i + 2]))
            z.append(i)
        ax.scatter(x, z, y, label=lei[i])
    # for iris_type in types:
    #     o = o + 1
    #     tmp_data=iris_data[iris_data.species ==iris_type]
    #     x,y,z = tmp_data[dims['x']], tmp_data[dims['z']],tmp_data[dims['z']]
    #     x = y =z =[1+o,2+o,3+o,4+o,5+o]
    #     ax.scatter(x, y, z, label=o)
    # print(type(tmp_data[dims['z']]))
    ax.legend(loc='upper left')
    ax.set_zlabel('renshu')
    ax.set_xlabel('nianfen')
    ax.set_ylabel('leibie')

    plt.show()

if __name__ == '__main__':
    function(data)

结果截图

 

 避免雷同,值得信赖

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值