Python数据分析--读取npz文件

使用pycharm的朋友们,需要在解释器来安装相应库。

有想练手的朋友,用百度网盘 

链接:https://pan.baidu.com/s/1aOTPRsqkgX4isGDhMjLdlQ 
提取码:1234

#国民生产总值案例
#读取npz文件
#第一步:
import numpy as np
import matplotlib.pyplot as plt

#第二步:
plt.rcParams["font.sans-serif"] = ["simhei"]  #指定默认字体
plt.rcParams["axes.unicode_minus"]= False   #解决保存图像是负号‘-’显示为方块的问题


#第三步:读取数值
data = np.load("国民经济核算季度数据 .npz",allow_pickle=True)
#data.files是显示文件中字典的键值对和值----['columns', 'values']
#print(data.files)

#第四步:查看字典的键值对和值-----['columns', 'values']

#print(data['columns'])
'''
['序号' '时间' '国内生产总值_当季值(亿元)' '第一产业增加值_当季值(亿元)' '第二产业增加值_当季值(亿元)'
 '第三产业增加值_当季值(亿元)' '农林牧渔业增加值_当季值(亿元)' '工业增加值_当季值(亿元)' '建筑业增加值_当季值(亿元)'
 '批发和零售业增加值_当季值(亿元)' '交通运输、仓储和邮政业增加值_当季值(亿元)' '住宿和餐饮业增加值_当季值(亿元)'
 '金融业增加值_当季值(亿元)' '房地产业增加值_当季值(亿元)' '其他行业增加值_当季值(亿元)']
'''
#print(data['values'])
'''
[[1 '2000年第一季度' 21329.9 ... 1235.9 933.7 3586.1]
 [2 '2000年第二季度' 24043.4 ... 1124.0 904.7 3464.9]
 [3 '2000年第三季度' 25712.5 ... 1170.4 1070.9 3518.2]
 ...
 [67 '2016年第三季度' 190529.5 ... 15472.5 12164.1 37964.1]
 [68 '2016年第四季度' 211281.3 ... 15548.7 13214.9 39848.4]
 [69 '2017年第一季度' 180682.7 ... 17213.5 12393.4 42443.1]]
'''

#为了保证绘图的客观性,对值values的数值:查看最大值、最小值。确定范围
#学习索引、python基础
#print(data['values'][:,2].min())        #21329.9
#print(data['values'][: ,2].max())       #211281.3

#查看维度

name=data['columns']  #用name定义字典的键值对
values = data['values']  #用values定义字典的数据值
#print(name.ndim)   #维度:1
#print(values.ndim)   #维度:2

#绘制 2000-2017年各季度国民生产总值散点图
plt.figure(figsize=(20,8))   #画布
plt.scatter(values[:,1],values[: ,2],marker='D')  #散点图基础、横轴和纵轴是索引
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.ylim(0,225000)
plt.title(' 2000-2017年各季度国民生产总值散点图')
plt.xticks(values[range(0,70,4),1],rotation=45)
plt.show()

#绘制 2000-2017年各个产业国民生产总值散点图
plt.figure(figsize=(20,8))   #画布
#该方法重复---大忌-----建议:循环
'''
plt.scatter(values[:,1],values[: ,3],marker='*')
plt.scatter(values[:,1],values[: ,4],marker='v') 
plt.scatter(values[:,1],values[: ,5],marker='D') 
'''
mark = ["*","v","D"]
for i in range(3,6):
    plt.scatter(values[:,1], values[:, i],marker=mark[i-3])
plt.xticks(values[range(0,69,4),1],rotation=45)
plt.legend(name[3:6])  #图例
plt.title("2000-2017年各个产业国民生产总值散点图")
plt.show()

#同上,解决:2000-2017年各个行业国民生产总值散点图
plt.figure(figsize=(20,8))   #画布
for i in range(6,15):
    plt.scatter(values[:,1], values[:, i])
plt.xticks(range(0,69,4),values[range(0,69,4),1],rotation=45)
plt.legend(name[6:])  #图例
plt.title("2000-2017年各个行业国民生产总值散点图")
plt.show()

#绘制条形图
plt.figure(figsize=(12,12))
label1=eval(str(['第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)',
 '第三产业']).replace('增加值_当季值(亿元)',''))
label2=eval(str(['农林业增加值_当季值(亿元)', '工业增加值_当季值(亿元)',
 '建筑业增加值_当季值(亿元)', '批零业增加值_当季值(亿元)', '交通运输业增加值_当季值(亿元)',
 '住宿餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)',
 '其他行业增加值_当季值(亿元)']).replace('增加值_当季值(亿元)',''))
ax1=plt.subplot(221)
plt.bar(range(3),values[0,3:6],width=0.3,alpha=0.7)
plt.xlabel('产业')
plt.ylabel('生成总值(亿元)')
plt.xticks(range(3),label1)
plt.title('2000年第一季度个产业国民生成总值(亿元)')
for i,j in zip(range(3),values[0,3:6]):
 plt.text(i,j+100,"%1.f"%j,ha="center",color='r')
plt.plot(range(3),values[0,3:6],'g*-.')
ax2=plt.subplot(222)
plt.bar(range(3),values[-1,3:6],width=0.3,alpha=0.7)
plt.xlabel('产业')
plt.ylabel('生成总值(亿元)')
plt.xticks(range(3),label1)
plt.title('2017年第一季度个产业国民生成总值(亿元)')
ax3=plt.subplot(223)
plt.bar(range(9),values[0,6:],width=0.3,alpha=0.7)
plt.xlabel('产业')
plt.ylabel('生成总值(亿元)')
plt.xticks(range(9),label2,rotation=35)
ax4=plt.subplot(224)
plt.bar(range(9),values[-1,6:],width=0.3,alpha=0.7)
plt.xlabel('产业')
plt.ylabel('生成总值(亿元)')
plt.xticks(range(9),label2,rotation=35)
plt.show()

#绘制饼图
list1=eval(str(['第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)','第三产业']).replace('增加值_当季值(亿元)',''))
#print(list1)

label1 = ['第一产业','第二产业','第三产业']## 标签1
label2 = ['农业','工业','建筑','批发','交通','餐饮','金融','房地产','其他']## 标签2
explode1 = [0.01,0.01,0.01]
explode2 = [0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]
p = plt.figure(figsize=(12,12))
## 子图1
ax1 = p.add_subplot(2,2,1)
plt.pie(values[0,3:6],explode=explode1,labels=label1,autopct="%1.1f%%")## 绘制饼图
plt.title('2000年第一季度国民生产总值产业构成分布饼图')
## 子图2
ax2 = p.add_subplot(2,2,2)
plt.pie(values[-1,3:6],explode=explode1,labels=label1,autopct='%1.1f%%')## 绘制饼图
plt.title('2017年第一季度国民生产总值产业构成分布饼图')
## 子图3
ax3 = p.add_subplot(2,2,3)
plt.pie(values[0,6:],explode=explode2,labels=label2,autopct='%1.1f%%')## 绘制散点图
plt.title('2000年第一季度国民生产总值行业构成分布饼图')## 添加图表标题
## 子图4
ax4 = p.add_subplot(2,2,4)
plt.pie(values[-1,6:],explode=explode2,labels=label2,autopct='%1.1f%%')## 绘制饼图
plt.title('2017年第一季度国民生产总值行业构成分布饼图')## 添加图表标题
## 并显示图形
plt.savefig('国民生产总值构成分布饼图.png')
plt.show()

你可能感兴趣的:(python,数据分析,matplotlib)