数据分析05 numpy案例


温度数据分析

[28,30,29,31,32,30,29]

计算平均气温,最高气温,低气温

找出气温超过30的天数
import numpy as np
temps = np.array([28,30,29,31,32,30,29])
print(temps)

# 保留3位小数
print("平均气温:%.3f"%np.mean(temps))
print("最高气温:%.3f"%np.max(temps))
print("最低气温:%.3f"%np.min(temps))

# 布尔查找
print("气温超过30的天数:")
print(temps[temps>30])
print("超过30的天数",len(temps[temps>30]))


# 使用where来实现
day = np.where(temps>30,1,0)

count = 0
for i in day:
    if i !=0:
        count+=1
print(f"超过30天的天数:{count}")



# 输出为
[28 30 29 31 32 30 29]
平均气温:29.857
最高气温:32.000
最低气温:28.000
气温超过30的天数:
[31 32]
超过30的天数 2
超过30天的天数:2

学生成绩统计

# 5名学生的数学成绩为[85,90,78,92,88]

计算成绩的平均分,中位数,标准差
将成绩转换为百分之(假设满分为10)

score = np.array([85,90,78,92,88])
print(score)

# 累积/总个数
print(f"平均分:{np.mean(score)}")
# 中间的数,排序后的中间的数
print(f"中位数:{np.median(score)}")

# 标准差
print(f"标准差:{np.std(score)}")

# 全部除以10,85变成8.5 满分是10的话
print(score/10)

矩阵的运算

随机数据的生成

# 生成一个3*4的随机数组 范围[0,10)
# 计算每列的最大值和每行的最小值
# 将数组中所有奇数替换为-1

np.random.seed(10)
arr = np.random.randint(0,10,(3,4))
print(arr)

# axis=0 表示列, =1 表示行
print("每列的最大值:",np.max(arr,axis=0))
print("每行的最小值:",np.min(arr,axis=1))

# 条件筛选
print(np.where(arr%2==1,-1,arr))

# 第二个解决方法
arr[arr%2==1] = -1
# arr[0][0] = -1 就是第一行的第一个元素变成-1
# arr[0] = -1 就是第一行全部元素变成-1
print(arr)


[[9 4 0 1]
 [9 0 1 8]
 [9 0 8 6]]
每列的最大值: [9 4 8 8]
每行的最小值: [0 0 0]
[[-1  4  0 -1]
 [-1  0 -1  8]
 [-1  0  8  6]]
[[-1  4  0 -1]
 [-1  0 -1  8]
 [-1  0  8  6]]

数组变形

创建1到12的一维数组,并转换为(3,4)的二维数组
计算每行和每列的平均值
将数组展平为一维数组


arr = np.array([1,12,3,4,5,6,7,8,9,10,11,12])
arr = np.arange(1,13)
print(arr)

# 3*4=12 就是等于这个数据
arr = np.reshape(arr,(3,4))
# 原数组就变成了二维数组了
print(arr)
print("每行的和",np.sum(arr,axis=1))
print("每列平均值",np.mean(arr,axis=0))

arr = np.reshape(arr,(12))
print(arr)

# 输出wield
[ 1  2  3  4  5  6  7  8  9 10 11 12]
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
每行的和 [10 26 42]
每列平均值 [5. 6. 7. 8.]
[ 1  2  3  4  5  6  7  8  9 10 11 12]


布尔索引

生成一个(5,5)随机数组,范围[0,20)
找出数组中大于10的元素
将所有大于10的元素替换为0

np.random.seed(10)
arr = np.random.randint(0,20,(5,5))
print(arr)

print("大于10的元素",arr[arr>10])
arr[arr>10]=0
print(arr)

统计函数应用

# 某公司销售额 [120,135,110,125,130,140]
# 计算销售额总和,均值和方差
# 找出销售额最高的月份和最低的月份
money = np.array([120,135,110,125,130,140])
print("总和:",np.sum(money))
print("平均值:",np.mean(money))
print("方差:",np.var(money))
print("最高的月份:",np.max(money),np.argmax(money)+1)
print("最低的月份:",np.min(money),np.argmin(money)+1)


总和: 760
平均值: 126.66666666666667
方差: 97.22222222222223
最高的: 140 6
最低的: 110 3

数组拼接

a= [1,2,3]
b=[4,5,6]
水平拼接新数组
垂直拼接新数组

a = np.array([1,2,3])
b = np.array([4,5,6])
print(np.concatenate([a,b]))
c = np.concatenate([a,b])
print(np.reshape(c,(2,3)))

[1 2 3 4 5 6]
[[1 2 3]
 [4 5 6]]

唯一值与排序

[2,1,2,3,1,4,3]
找出数组中唯一值并排序
计算每个唯一值出现的次数
arr = np.array([2,1,2,3,1,4,3])

print(np.unique(arr))
u_arr ,counts = np.unique(arr,return_counts=True)
print(u_arr)
print(counts)

文章摘自:https://www.cnblogs.com/qylogs/p/20272185