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

Source

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

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

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

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

  • 接着面试题三和四,是考用Pandas对数据集进行预处理。
    删除nan值超过70%的属性列;删除nan值超过3个的样本。
    先看示例:
    在这里插入图片描述
    接着统计某一列中各个值出现的次数用value_counts()方法
    但是这道题是问的NaN值,所以用上面的方法是没法统计出来nan值得占比,要用下面得方法:
    在这里插入图片描述
    在这里插入图片描述
    这样就成功统计出每一列的null占比,现在我们要删除超过70%的列和nan值个数超过3个的样本:方法一是用del,只能删除一列,不可多列:
    在这里插入图片描述
    方法二是用pop方法,也只能一列:
    在这里插入图片描述
    方法三,使用drop方法:
    在这里插入图片描述
    PPS: 上面👆这种drop方法删除指定数据后,并没有实时保存新的数据表,只是会显示删除后的数据;而数据表还是之前的样子:
    在这里插入图片描述
    要想删除数据后生成新的数据表可以加入这个参数inplace
    在这里插入图片描述
    在这里插入图片描述
    接着删除超过3个nan值得样本,即A、C两列(删除多列的操作):
    在这里插入图片描述
    最后拓展一下,删除单行和多行的操作:
    在这里插入图片描述
    (未完待续。。。)