NumPy 中的数据统计分析

1.排序

NumPy的排序方法有直接排序和间接排序。直接排序是对数据直接进行排序,间接排序是指根据一个或多个键值对数据集进行排序。直接排序使用 sort()函数,间接排序使用 argsort函数和lexsort函数。

sort函数是常用的排序方法,函数调用改变原始数组,无返回值。

格式:numpy.sort(a, axis, kind, order)

参数:

a : 要排序的数组

axis: 使得sort函数可以沿着指定轴对数据集进行排序。axis=1 为沿横轴排序,axis=0为沿纵轴排序,axis=None将数组平坦化后进行排序。

kind: 排序算法,默认 quicksort

order: 如果数组包含字段,则是要排序的字段

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

print(‘原数组:’, a)

a.sort()

print("排序后: ", a)

输出:

原数组: [7 9 5 2 9 4 3 1 4 3]

排序后:  [1 2 3 3 4 4 5 7 9 9]

带参数轴的排序

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

print(“原数组:”, a)

a.sort(axis=1)

print("排序后: ", a)

输出:

原数组: [[4 2 9 5]

[6 4 8 3]

[1 6 2 4]]

排序后:  [[2 4 5 9]

[3 4 6 8]

[1 2 4 6]]

使用argsort, lexsort函数,可以在给定一个或多个键时,得到一个由整数构成的索引数组,索引值表示数据在新序列中的位置。

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

print(“原数组:”, a)

print("排序后: ", a.argsort())

# 返回数组下标排序

print(‘显示较大的5个数:’, a[a.argsort()][-5:])

输出:

原数组: [7 9 5 2 8 4 3 1 4 3]

排序后:  [7 3 6 9 5 8 2 0 4 1]

显示较大的5个数: [4 5 7 8 9]

a = [1, 5, 7, 2, 3, -2, 4]

b = [9, 5, 2, 0, 6, 8, 7]

ind = np.lexsort((b, a))

print(‘ind’, ind)

tmp = [(a[i], b[i])for iin ind]

print(‘tmp’, tmp)

输出:

ind [5 0 3 4 6 1 2]

tmp [(-2, 8), (1, 9), (2, 0), (3, 6), (4, 7), (5, 5), (7, 2)]

2.重复数据与去重

在统计分析中,需要提前将重复数据剔除。可以使用unique函数找到数组中唯一值并返回已排序的结果。参数return_counts设置为True时,可返回每个取值出现的次数。

数组内数据去重

names = np.array([‘红色’, ‘蓝色’, ‘蓝色’, ‘白色’, ‘红色’, ‘红色’, ‘蓝色’])

print(‘原数组:’, names)

print(‘去重后的数组:’, np.unique(names))

print(‘数据出现次数:’, np.unique(names, return_counts=True))

输出:

原数组: [‘红色’ ‘蓝色’ ‘蓝色’ ‘白色’ ‘红色’ ‘红色’ ‘蓝色’]

去重后的数组: [‘白色’ ‘红色’ ‘蓝色’]

数据出现次数: (array([‘白色’, ‘红色’, ‘蓝色’], dtype=’<U2’), array([1, 3, 3], dtype=int64))

统计分析时需要把一个数据重复若干次,在NumPy中主要使用tile, repeat函数实现重复数据

numpy.tile(A, reps)

a = np.arange(5)

print(‘原数组:’, a)

w = np.tile(a, 3)

print(“重复数据:”, w)

输出:

原数组: [0 1 2 3 4]

重复数据: [0 1 2 3 4 0 1 2 3 4 0 1 2 3 4]

numpy.repeat(a, reps, axis=None)

参数:a 是需要重复的数组元素,reps是重复次数, axis只沿着那个轴进行,0 按进行元素重复, 1表按列元素进行重复

a = np.arange(5)

print(‘原数组:’, a)

w = np.tile(a, 3)

print(‘重复数据处理:\n’, w)

a2 = np.array([[1, 2, 3], [4, 5, 6]])

print(‘重复数据处理1:\n’, a2.repeat(2, axis=0))

print(‘重复数据处理2:\n’, a2.repeat(2, axis=1))

输出:

原数组: [0 1 2 3 4]

重复数据处理:

[0 1 2 3 4 0 1 2 3 4 0 1 2 3 4]

重复数据处理1:

[[1 2 3]

[1 2 3]

[4 5 6]

[4 5 6]]

重复数据处理2:

[[1 1 2 2 3 3]

[4 4 5 5 6 6]]

3.常用统计函数

常见有sum, mean, std, var, min, max, 几乎所有的统计函数在针对2维数组时需要注意轴的概念。

axis参数0时,表示沿纵轴,1表示沿横轴

a = np.arange(20).reshape(4, 5)

print(‘创建的数组:\n’, a)

print(‘数组的和:’, np.sum(a))

print('数组纵轴的和: ', np.sum(a, axis=0))

print('数组横轴的和: ', np.sum(a, axis=1))

print('数组的均值: ', np.mean(a))

print('数组纵轴的均值: ', np.mean(a, axis=0))

print('数组横轴的均值 ', np.mean(a, axis=1))

print('数组的标准差: ', np.std(a))

print('数组纵轴的标准差: ', np.std(a, axis=0))

print('数组横轴的标准差: ', np.std(a, axis=1))

输出:

创建的数组:

[[ 0  1  2  3  4]

[ 5  6  7  8  9]

[10 11 12 13 14]

[15 16 17 18 19]]

数组的和: 190

数组纵轴的和:  [30 34 38 42 46]

数组横轴的和:  [10 35 60 85]

数组的均值:  9.5

数组纵轴的均值:  [ 7.5  8.5  9.5 10.5 11.5]

数组横轴的均值  [ 2.  7. 12. 17.]

数组的标准差:  5.766281297335398

数组纵轴的标准差:  [5.59016994 5.59016994 5.59016994 5.59016994 5.59016994]

数组横轴的标准差:  [1.41421356 1.41421356 1.41421356 1.41421356]

NumPy的基础主要包含数组及其索引,数组运算,数组读写以及常用的统计与分析方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值