import numpy as np
'{}'.format(np.typeDict.values())
"dict_values([<class 'numpy.bool_'>, <class 'numpy.bool_'>, <class 'numpy.int8'>, <class 'numpy.int8'>, <class 'numpy.int8'>, <class 'numpy.uint8'>, <class 'numpy.uint8'>, <class 'numpy.uint8'>, <class 'numpy.int16'>, <class 'numpy.int16'>, <class 'numpy.int16'>, <class 'numpy.uint16'>, <class 'numpy.uint16'>, <class 'numpy.uint16'>, <class 'numpy.intc'>, <class 'numpy.intc'>, <class 'numpy.uint32'>, <class 'numpy.uintc'>, <class 'numpy.uintc'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.uint32'>, <class 'numpy.uint32'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.float16'>, <class 'numpy.float16'>, <class 'numpy.float16'>, <class 'numpy.float32'>, <class 'numpy.float32'>, <class 'numpy.float64'>, <class 'numpy.float64'>, <class 'numpy.float64'>, <class 'numpy.longdouble'>, <class 'numpy.longdouble'>, <class 'numpy.longdouble'>, <class 'numpy.complex128'>, <class 'numpy.complex64'>, <class 'numpy.complex64'>, <class 'numpy.complex128'>, <class 'numpy.complex128'>, <class 'numpy.complex128'>, <class 'numpy.clongdouble'>, <class 'numpy.clongdouble'>, <class 'numpy.clongdouble'>, <class 'numpy.object_'>, <class 'numpy.object_'>, <class 'numpy.bytes_'>, <class 'numpy.bytes_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.void'>, <class 'numpy.void'>, <class 'numpy.void'>, <class 'numpy.datetime64'>, <class 'numpy.datetime64'>, <class 'numpy.timedelta64'>, <class 'numpy.timedelta64'>, <class 'numpy.bool_'>, <class 'numpy.bool_'>, <class 'numpy.bool_'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.float16'>, <class 'numpy.float16'>, <class 'numpy.float16'>, <class 'numpy.float32'>, <class 'numpy.float32'>, <class 'numpy.float32'>, <class 'numpy.float64'>, <class 'numpy.float64'>, <class 'numpy.float64'>, <class 'numpy.complex64'>, <class 'numpy.complex64'>, <class 'numpy.complex64'>, <class 'numpy.complex128'>, <class 'numpy.complex128'>, <class 'numpy.complex128'>, <class 'numpy.object_'>, <class 'numpy.object_'>, <class 'numpy.bytes_'>, <class 'numpy.bytes_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.void'>, <class 'numpy.void'>, <class 'numpy.datetime64'>, <class 'numpy.datetime64'>, <class 'numpy.datetime64'>, <class 'numpy.timedelta64'>, <class 'numpy.timedelta64'>, <class 'numpy.timedelta64'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.uint32'>, <class 'numpy.uint32'>, <class 'numpy.uint32'>, <class 'numpy.uint64'>, <class 'numpy.int16'>, <class 'numpy.int16'>, <class 'numpy.int16'>, <class 'numpy.uint16'>, <class 'numpy.uint16'>, <class 'numpy.uint16'>, <class 'numpy.int8'>, <class 'numpy.int8'>, <class 'numpy.int8'>, <class 'numpy.uint8'>, <class 'numpy.uint8'>, <class 'numpy.uint8'>, <class 'numpy.complex128'>, <class 'numpy.int64'>, <class 'numpy.uint64'>, <class 'numpy.float32'>, <class 'numpy.complex64'>, <class 'numpy.complex64'>, <class 'numpy.float64'>, <class 'numpy.intc'>, <class 'numpy.uintc'>, <class 'numpy.int32'>, <class 'numpy.longdouble'>, <class 'numpy.clongdouble'>, <class 'numpy.clongdouble'>, <class 'numpy.bool_'>, <class 'numpy.bytes_'>, <class 'numpy.bytes_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.object_'>, <class 'numpy.int32'>, <class 'numpy.float64'>, <class 'numpy.complex128'>, <class 'numpy.bool_'>, <class 'numpy.object_'>, <class 'numpy.str_'>, <class 'numpy.bytes_'>, <class 'numpy.bytes_'>])"
2.ndarray的重要属性
shuzu = np.arange(24).reshape(6,4)
shuzu
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
shuzu.ndim #数组的维度。一二三维
2
shuzu.shape #几行几列
(6, 4)
shuzu.size #元素的总数
24
shuzu.dtype
dtype('int32')
3.创建数组
1)array函数 创建一个数组,或者将输入的列表或其他序列转换成ndarray
shuzu2 = np.array([1,2,4,2,7,5,7,5,4,8,21,16]).reshape(3,4) shuzu2
array([[ 1, 2, 4, 2], [ 7, 5, 7, 5], [ 4, 8, 21, 16]])
lizi = np.array([[1,2,3],[9,8,7],[6,3,0],[2,3,3]]) lizi
array([[1, 2, 3], [9, 8, 7], [6, 3, 0], [2, 3, 3]])
2)arrange函数 产生一个元素由0开始的数组,返回的是ndarray而不是列表
shuzu3 = np.arange(18).reshape(3,6) shuzu3
array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17]])
3)zeros函数 产生数据全为0的数组
shuzu4 = np.zeros(10,dtype=np.int32) shuzu4
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
shuzu5 = np.ones((3,4),dtype=np.int32) #ones函数作用:产生数据全为1的数组 shuzu5
array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]])
4)random函数
random
shuzu6 = np.random.random(12).reshape(4,3) #返回指定数量的随机数,范围在0和1之间 shuzu6
array([[0.64361967, 0.41383032, 0.59942517], [0.96873194, 0.44245641, 0.50183907], [0.35952847, 0.94468878, 0.99431729], [0.65781866, 0.11623172, 0.89006422]])
uniform
shuzu7 = np.random.uniform(3,9,(16)) #生成指定范围内容的随机数,一组参数决定随机数的上下限,另一个参数决定生成的随机数个数 shuzu7
array([7.562285 , 8.98549068, 7.63501622, 7.78447198, 7.26854663, 3.17515732, 6.13853817, 4.40997569, 7.12225054, 4.65726706, 8.8482813 , 8.627138 , 4.90995118, 4.616554 , 6.20267482, 7.04778997])
randint
shuzu8 = np.random.randint(4,16,(8)) #生成指定范围内容的整数,一组参数决定随机数的上下限,另一个参数决定生成的随机数个数 shuzu8
array([ 9, 4, 12, 11, 11, 8, 6, 14])
shuffle
lis = [2,3,4,5,7,9,11,123,455] np.random.shuffle(lis) lis
[2, 7, 5, 4, 3, 455, 9, 123, 11]
4.数组的运算
1)四则运算
data1 = np.array([2.3,5.4]) data2 = np.array([2.5,6]) '加{},减{},乘{},除{}'.format(data1+data2,data1-data2,data1*data2,data1/data2)
'加[ 4.8 11.4],减[-0.2 -0.6],乘[ 5.75 32.4 ],除[0.92 0.9 ]'
2)标量计算
'标量-加法{},标量-乘法{}'.format(data1+100,data2*2)
'标量-加法[102.3 105.4],标量-乘法[ 5. 12.]'
5.索引和切片
1)一维数组
yiwei = np.arange(9)**2 yiwei
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64], dtype=int32)
yiwei[6]
36
yiwei[2:5] #遵循左闭右开的规则
array([ 4, 9, 16], dtype=int32)
yiwei[:5:2] #2在这里是步长的意思
array([ 0, 4, 16], dtype=int32)
2)二维数组
erwei = np.random.randint(8,88,(24)).reshape((4,6)) erwei
array([[53, 45, 36, 28, 67, 41], [16, 48, 54, 48, 34, 30], [48, 70, 37, 30, 77, 86], [32, 18, 22, 62, 76, 49]])
erwei[2,4]
77
erwei[1:3]
array([[16, 48, 54, 48, 34, 30], [48, 70, 37, 30, 77, 86]])
erwei[:2]
array([[53, 45, 36, 28, 67, 41], [16, 48, 54, 48, 34, 30]])
erwei[1:3,3]
array([48, 30])
erwei[:,4]
array([67, 34, 77, 76])
erwei[2:4,:]
array([[48, 70, 37, 30, 77, 86], [32, 18, 22, 62, 76, 49]])
6.npz文件的导入和导出
1)导入
aa = np.load('国民经济核算季度数据.npz',allow_pickle=True) #allow_pickle默认为False,在之后的load操作中会报错,需要需要手动设置
aa.files
['columns', 'values']
bb = aa['columns'] cc = aa['values']
cc
array([[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]], dtype=object)
bb
array(['序号', '时间', '国内生产总值_当季值(亿元)', '第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)', '第三产业增加值_当季值(亿元)', '农林牧渔业增加值_当季值(亿元)', '工业增加值_当季值(亿元)', '建筑业增加值_当季值(亿元)', '批发和零售业增加值_当季值(亿元)', '交通运输、仓储和邮政业增加值_当季值(亿元)', '住宿和餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)', '其他行业增加值_当季值(亿元)'], dtype=object)
import pandas as pd
fff = pd.DataFrame(cc,columns=['序号', '时间', '国内生产总值_当季值(亿元)', '第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)', '第三产业增加值_当季值(亿元)', '农林牧渔业增加值_当季值(亿元)', '工业增加值_当季值(亿元)', '建筑业增加值_当季值(亿元)', '批发和零售业增加值_当季值(亿元)', '交通运输、仓储和邮政业增加值_当季值(亿元)', '住宿和餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)', '其他行业增加值_当季值(亿元)'])
fff.to_csv('国民经济情况.csv')
fff.to_csv('gmjjqk.csv',encoding='utf_8_sig')