datawhale pandas 习题01

本篇博客通过datawhale学习了Pandas在数据统计方面的应用,包括NumPy向量化运算、学生成绩分析以及商品审核情况统计。涉及查找缺失最小正整数、构造特殊二维数组、计算成绩稳定性、统计审核通过率等多个实战题目,旨在提升数据处理能力。
摘要由CSDN通过智能技术生成

Ex1:NumPy的向量化运算

  • 给定一个正整数列表,请找出缺失的最小正整数。

思路:对一维向量排序之后再作差,有两种情况,当全为1时,说明向量元素是连续的,所以返回最小值然后减1;当元素中有2时,返回2出现的位置对应的数+1

def get_miss(arr):
    arr.sort()
    res=np.diff(arr)
    if (res==1).all():
        return np.min(arr)-1
    else:
        return arr[np.argmax(res)]+1
        
arr = np.array([5,2,1,3,4])
get_miss(arr)

out

0
  • 设计一个生成二维NumPy数组的函数get_res(),其输入为正整数n,返回的数组构造方式如下:第1行填入1个1,第2行在上一行填入位置的下一列连续填入2个2,第3行在第二行最后一个填入位置的下一列连续填入3个3,…,第n行在第n-1行最后一个填入位置的下一列连续填入n个n。

思路:(使用循环)观察得到0的个数在两种元素之间的个数是固定的,同时利用字符串方法join的特点,得到列表,然后再利用reshape的按照行填充的特点填充ndarray。

# 观察到1和2之间以及2和3中间的0的个数是想同的
def get_res(n):
    return np.array(list(('0'*np.sum(np.arange(n)+1)).join([(i+1)*str(i+1) for i in range(n)]))).reshape(n,-1)
    
n=4
get_res(n)

out
在这里插入图片描述

  • 在这里插入图片描述
    思路:利用randint得到0,1随机数,同时利用一个(-1,1)的向量,将随机数作为索引传入得到1和-1组成的矩阵,然后按照要求得到答案。
def random_walk(test_num=1000,walk_num=5000):
    arr=np.array([1,-1])
    walk=np.random.randint(low=0,high=2,size=(test_num,walk_num))
    res=arr[walk].sum(1)
    return res/np.sqrt(walk_num)-np.sqrt(2/np.pi)
res=random_walk()
print(f'平均值为:{
     res.mean()}')
print(f'0.05分位数为{
     np.quantile(res,0.05)}')
print(f'0.95分位数为{
     np.quantile(res,0.95)}')

out

平均值为:-0.8039656791210696
0.05分位数为-2.381803750660732
0.95分位数为0.8708874427973866

在这里插入图片描述
思路:(待修改)

  • 对于sigama:利用格拉姆矩阵的元素计算
  • 对于lambda:利用节点坐标返回距离矩阵,然后使用两次agrsort方法,即可得到排名矩阵(从0开始)。
# n为点的个数
# k为特征个数

n=100
k=3
np.random.seed(0)
node_xy=np.random.random((n,2))
np.random.seed(0)
node_fea=np
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值