数据分析面试、笔试题汇总+解析(二)

继续之前的面试题解析,下面是第二题:

  • 求1 +3!+5!+7!+9!+50!之和。

这道题其实考察的是用递归解决阶乘问题,查阅过后发现有三种方法可解(不过掌柜觉得其实是两种)。下面👇看第一种解法,常规思路:先找出单个阶乘的函数表达式后再求和:
在这里插入图片描述
应该不难理解第一种解法,下面尝试第二种解法👇:用列表推导式简化后求解递归
在这里插入图片描述
是不是觉得第一和第二其实是一样的?😂下面👇看第三种:直接调用Scipy库里面的阶乘模块factorial来计算
在这里插入图片描述
如果你想最少代码量解此题,第三种明显最合适!最易理解是第一种。

PS: 递归算法是个比较重要的概念,掌柜找到一张图(侵权可删)可以方便大家更易理解递归的整个过程👇,更多递归的内容请自行搜索。
在这里插入图片描述

  • 接着面试题三和四,是考用Pandas对数据集进行预处理。
    删除nan值超过70%的属性列;删除nan值超过3个的样本。
    先看示例:
    在这里插入图片描述
    接着统计某一列中各个值出现的次数用value_counts()方法
    但是这道题是问的NaN值,所以用上面的方法是没法统计出来nan值得占比,要用下面得方法:
    在这里插入图片描述
    在这里插入图片描述

这样就成功统计出每一列的null占比,现在我们

  • 先处理删除超过70%的列的这个问题:
    方法一是用del,只能删除一列,不可多列:
    在这里插入图片描述
    方法二是用pop方法,也只能一列:
    在这里插入图片描述
    方法三,使用drop方法:
    在这里插入图片描述
    这里删除多列的方法就是直接用drop函数,后面中括号把要删除的多列括起来,然后记得加上参数inplace= True,才会从原始表删除这两列。

  • 接着删除超过3个nan值得样本
    这里用dropna函数的thresh方法,具体操作如下:
    在这里插入图片描述
    简单解释一下,thresh= N表示的是一行如果后面还有参数axis = 1,则表示一列至少有N个非NaN值存在。
    所以回到此题,它要求删除3个以上的缺失值样本,根据示例原始数据可知,这样的样本就只存在一个非NaN的值。反过来,我们要返回至少有大于1个非NaN值的行,即thresh=2才符合。

最后拓展一下,删除单行和多行的操作:
在这里插入图片描述
(未完待续。。。)

PPS:感谢评论区的朋友纠错!!!🤝

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值