python数据分析常用库
numpy基础
ndarry数组
1.ndarry数组支持矢量化运算
2.内存中ndarry对象包含两部分:元数据与实际数据
3.numpy提供多种创建数组方法
import numpy as np
ary = np.array([[1, 2, 3], [4, 5, 6]])
print(ary, type(ary))
ary2 = np.arange(0, 10, 2) # 步长为2
print(ary2)
ary3 = np.ones(10) # 构建一个全是1的
print(ary3)
ary4 = np.zeros(10, dtype='int32')
print(ary3)
ary5 = np.ones_like(ary) # 构造一个结构与括号内相同的 但是用1填充
print(ary5)
ary6 = np.zeros_like(ary)
print(ary6)
# 构建几个相同的分数
ary7 = np.ones(5) / 5
print(ary7)
运行结果为:
ary:[[1 2 3]
[4 5 6]] <class 'numpy.ndarray'>
ary2: [0 2 4 6 8]
ary3: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
ary4: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
ary5: [[1 1 1]
[1 1 1]]
ary6: [[0 0 0]
[0 0 0]]
ary7: [0.2 0.2 0.2 0.2 0.2]
1.numpy的基本数据类型
2. numpy自定义复合数据类型
import numpy as np
data = [('zs', [90, 98, 96], 15),
('ls', [91, 96, 97], 16),
('zs', [94, 99, 97], 17)]
ary = np.array(data, dtype=[('names', 'str', 2), ('scores', 'int32', 3), ('age', 'int32', 1)])
print(ary['scores'])
输出:[[90 98 96]
[91 96 97]
[94 99 97]]
# 使用ndarray保存日期数据类型
dates = np.array(['2011', '2011-02', '2011-03-01', '2011-04-01 10:10:10'])
ndates = dates.astype('datetime64[D]')
print(ndates, ndates.dtype)
print(ndates[-1] - ndates[0])
输出:
['2011-01-01' '2011-02-01' '2011-03-01' '2011-04-01'] datetime64[D]
90 days
numpy提供了类型字符码可以更加方便的处理数据类型:
3.ndarray常用属性详解
改变原始数组的维度
视图变维
不会改变原始数组
a b 共享数据源
c.ravel: 将多维变维一维 存在c里面
复制变维
e 重新复制一个新的数组 各自改变不影响对方
4. 数组的索引操作
多维数组切片nn
# 二维
a = np.arange(1, 19)
a.resize(3, 6)
print(a)
print(a[1, 0:3]) # 前行 后列
print(a[:, :3]) #所有行前三列
运行结果为:
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]
[13 14 15 16 17 18]]
[7 8 9]
[[ 1 2 3]
[ 7 8 9]
[13 14 15]]
# 多维
b = a.reshape(2, 3, 3)
print(b, b.shape)
print(a, a.shape)
# 页 行 列
print(b[:, :2, :2])
运行结果为:
# b
[[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]]
[[10 11 12]
[13 14 15]
[16 17 18]]] (2, 3, 3)
# a
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]
[13 14 15 16 17 18]] (3, 6)
#b 所有页的前两行前两列
[[[ 1 2]
[ 4 5]]
[[10 11]
[13 14]]]
5.ndarray掩码
“掩码”是numpy提供的一种高效过滤数组元素,获取原始数组子集的一种数组处理方法
布尔掩码:取出对应位置为True的
eg:取出0-100 3的倍数:a[a%3==0]
索引掩码
ary = np.arange(1, 101)
print(ary[ary%3 == 0])
结果:
[ 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72
75 78 81 84 87 90 93 96 99]