python数据分析之表示

1 numpy库入门

1.1 数据的维度

(1)一维数据:列表和数组的比较

        相同:一组数据的有序结构

        区别:数组的数据类型相同,列表的数据类型可以不同

(2)数据维度的python表示

  • 一维数据:列表(有序)和集合(无序)类型
  • 二维数据:列表类型(列表中嵌套列表)
  • 多维数据:列表类型
  • 高维数据:字典类型或数据表示格式(JSON、XML、YAML格式)

1.2 数组对象:ndarray

(1)N维数组对象:ndarray(元素同质

需求:引入numpy模块

import numpy as np

数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据

构成:实际的数据、描述这些数据的元数据(数据维度、数据类型等)

需求:使用list生成一个ndarray数组 # ndarray在程序中的别名是:array

list = [[0,1,2,3,4,],
        [9,8,7,6,5]]
a = np.array(list)

(2)ndarray对象的属性

python数据分析之表示_第1张图片

 需求:使用ndim方法获取数组维度

a.ndim

 需求:使用shape方法获取数组尺度

a.shape

 需求:使用size方法获取数组元素的个数

a.size

需求:使用dtype方法获取数组元素类型

a.dtype

 需求:使用itemsize方法获取数组元素的字节大小

a.itemsize

1.3 数组的元素类型

ndarray数组可以由非同质对象构成

但!非同质ndarray元素为对象类型:dtype=object

1.4 数组的创建

(1)从python中的列表、元组等类型

需求:根据列表、数组类型创建数组

x = np.array(list/tuple)

x = np.array(list/tuple,dtype=np.float32)

(2)使用numpy中函数,如:arange,ones,zeros等   # 以下shape代表一个元组

python数据分析之表示_第2张图片

python数据分析之表示_第3张图片python数据分析之表示_第4张图片

需求:使用arange函数创建一个元素从0到n-1的数组

x = np.arange(n)

 需求:使用ones函数创建一个元素全1,shape为(3,6)的数组

x = np.ones((3,6),dtype=np.int32)

 需求:使用eye函数创建一个5维的单位矩阵数组

x = np.eye(5)

 需求:使用ones_like函数根据数组a的形状创建一个全1数组

x = np.ones_like(a)

 需求:使用zeros_like函数根据数组a的形状创建一个全0数组

x = np.ones_like(a)

需求:使用full_like函数根据数组a的形状创建一个全val数组

x = np.full_like(a,val)

需求:使用linspace函数根据起始数据等间距地填充数据 ,默认包含终点

a = np.linspace(1,10,4)
a = np.linspace(1,10,4,endpoint=False)

需求:使用concatenate函数合并数组(元组形式),默认横向拼接

c = np.concatenate((a,b))

(3)从字节流中

(4)从文件中读取特定格式

1.5 数组的变换

(1)维度变换

python数据分析之表示_第5张图片

 需求:使用reshape方法将形状为(2,3,4)的数组变成形状为(3,8)的数组,但不改变原数组

a = np.ones((2,3,8))
a.reshape((3,8))

# 或者
a = np.ones((2,3,8)).reshape((3,8))

 需求:使用resize方法将形状为(2,3,4)的数组变成形状为(3,8)的数组,但改变原数组

a.resize((3,8))

 需求:使用flatten方法将数组降至1维数组

a.flatten()

(2)类型变换

 需求:使用astype方法转换元素类型

b = a.astype(np.float)

 注:astype()方法一定会创建新的数组

(3)数组向列表转换

 需求:使用tolist方法实现数组向列表转换

b = a.tolist()

1.6 数组的操作

索引:获取数组中特定位置元素的过程(每个维度都有一个索引值,逗号分隔)

切片:获取数组元素子集的过程

a[起始编号:终止编号(不含):步长]

1.7 数组的运算

数组与标量之间的运算作用于数组的每一个元素

(1)一元函数

需求:计算数组与元素平均值的商

a = np.arange(24).reshape((2,3,4))
a = a / a.mean()

python数据分析之表示_第6张图片python数据分析之表示_第7张图片

 (2)二元函数

python数据分析之表示_第8张图片


 2 numpy数据存取与函数

2.1 数据的csv文件存取

CSV:逗号分隔值

python数据分析之表示_第9张图片

 需求:使用savetxt函数存储数组数据

a = np.arange(100).reshape(5,20)
np.savetxt('文件.csv',a,fmt=%d,delimiter=',')

python数据分析之表示_第10张图片

  需求:使用loadtxt函数读取数组数据

b = np.loadtxt('文件.csv',delimiter=',',dtype=np.int)

2.2 多维数据的存取

python数据分析之表示_第11张图片

  需求:使用tofile方法存储多维数组数据

a = np.arange(100).reshape(5,20,2)
a.tofile('文件.dat',format='%d',sep=',')

python数据分析之表示_第12张图片

 需求:使用fromfile函数读取多维数组数据

a.fromfile('文件.dat',dtype=float,count=-1,sep='').reshape=(5,10,2)

python数据分析之表示_第13张图片

a = np.arange(100).reshape(5,10,2)
np.save("a.npy",a)
b = np.load("a.npy")

2.3 随机数函数 np.random.*

python数据分析之表示_第14张图片

 需求:使用rand函数生成服从均匀分布数组

a = np.random.rand(3,4,5)

 需求:使用randn函数生成服从标准正态分布数组

a = np.random.randn(3,4,5)

  需求:使用randint函数生成满足一定范围且为整数的数组

a = np.random.randint(100,200,(3,4))
np.random.seed(10)
a = np.random.randint(100,200,(3,4))

python数据分析之表示_第15张图片

np.random.shuffle(a)
np.random.permutation(a)
np.random.choice(a,(3,2),replace=False,p=b/np.sum(b))

python数据分析之表示_第16张图片

a = np.ramdpm.uniform(0,10,(3,4))
b = np.random.normal(10,5,(3,4))
c = np.random.poisson(0.2,(3,4))

2.4 统计函数 np.*

python数据分析之表示_第17张图片

np.sum(a)

python数据分析之表示_第18张图片

2.4 梯度函数

python数据分析之表示_第19张图片

np.gradient(a)

python数据分析之表示_第20张图片

3 小结

python数据分析之表示_第21张图片

python数据分析之表示_第22张图片

参考:中国大学mooc 北京理工大学嵩天 Python数据分析与展示

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