解决Python编码面试问题是为面试做准备的最好方式。本文将带领你了解这些问题所涉及的15个例子和五个概念。

关注《Python学研大本营》

最近不仅北上广的互联网大厂在裁员,美国科技企业也开始了裁员潮。这时刻提醒我们,在这个大环境大趋势之下,永远保持自己的学习力和战斗力,才是一个人的核心竞争力。

如果你正在准备求职或面试,那么关于Python的这五个方面,15个例子,你不得不看。

这篇文章的作者是 Nate Rosidi,发布于KDnuggets。

五个主题

了解Python是每个数据科学家应该磨练的关键技能之一。这并不是没有原因的。Python的能力,结合Pandas库,以多种不同方式处理和分析数据,使其成为数据科学工作的理想工具。

毫不奇怪,所有寻找数据科学家的公司都会在求职面试中测试他们的Python技能。

我们来看看,为了找到一份数据科学工作,你应该熟悉哪些技术概念,以及Python/Pandas函数。

这就是我们要讨论的五个主题。

  • 聚合、分组和数据排序

  • 连接表

  • 过滤数据

  • 文本操作

  • 日期时间操作

不言而喻,这些概念很少被单独测试,所以通过解决一个问题,你必须展示你对多个Python主题的知识。

1.聚合、分组和排序数据

聚合、分组和数据排序,这三个技术性话题经常出现在一起,它们是创建报告和进行任何形式的数据分析的基础。

它们允许你进行一些数学运算,并以一种可表现的和用户友好的方式展示你的发现。

下面我们将向你展示几个实际例子。

Python编码面试问题#1:类性能

这个盒子面试问题问你。

"你得到一个包含班级学生作业分数的表格。写一个查询,找出所有作业中总分的最大差异。只输出两个学生之间的总分差。"

该问题的链接:https://platform.stratascratch.com/coding/10310-class-performance?python=1

你需要使用的表是box_scores,它有以下几列。

表中的数据看起来是这样的。

作为回答问题的第一步,你应该把所有作业的分数加起来。

import pandas as pd
import numpy as np
box_scores['total_score'] = box_scores['assignment1']+box_scores['assignment2']+box_scores['assignment3']

这一部分代码将给你带来这个结果。

现在你知道了,下一步是找到总分之间的最大差异。你需要使用max()和min()函数来做到这一点。或者,更具体地说,这两个函数的输出之间的差值。把这个加入到上面的代码中,你就得到了一个最终的答案。

import pandas as pd
import numpy as np
box_scores['total_score'] = box_scores['assignment1']+box_scores['assignment2']+box_scores['assignment3']
box_scores['total_score'].max() - box_scores['total_score'].min()

这就是你要寻找的输出。

这个问题要求只输出这个差异,所以不需要其他列。

Python编码面试题#2:企业的检查分数

前一个问题不需要任何数据分组和排序,不像下面这个旧金山市的问题。

"找出每个企业的检查分数中值,并将结果与企业名称一起输出。根据检查得分,按降序排列记录。试着想出你自己精确的中位数计算。在Postgres中,有percentile_disc函数可用,但它只是近似值。"

该问题的链接:https://platform.stratascratch.com/coding/9741-inspection-scores-for-businesses?python=1

在这里,你应该使用notnull()函数来确保你只得到有检查分数的企业。此外,你必须对企业名称的数据进行分组,并计算出检查分数的中位数。使用median()函数。另外,使用sort_values()函数将输出结果按降序排序。

Python编码面试题#3:按品种分类的记录数

看一下这个微软的问题。

"在数据集中找到属于每个品种的记录总数。输出品种和相应的记录数。将记录按品种以升序排列。"

该问题的链接。https://platform.stratascratch.com/coding/10168-number-of-records-by-variety?python=1

经过前两个例子,这应该不难解决。首先,你应该按variety 和sepal_length这两列分组。为了找到每个品种的记录数,使用count()函数。最后,使用sort_values按照字母顺序对variety进行排序。

2.连接表

在前面所有的例子中,我们只得到一个表。我们选择这些例子,是为了让你更容易理解Python中的聚合、分组和数据排序是如何工作的。

然而,作为一个数据科学家,你更经常需要知道如何写一个从几个表中提取数据的查询。

Python编码面试问题#4:最低价订单

在Python中连接两个表最简单的方法之一是使用merge()函数。我们将这样做来解决亚马逊的问题。

"找到每个客户的最低订单费用。输出客户的ID以及名字和最低订单价格"。

该问题的链接:https://platform.stratascratch.com/coding/9912-lowest-priced-orders?python=1

你有两个表要处理。第一个表是客户。

以下是数据。

第二个表被命名为订单,有以下几列。

以下是数据。

由于需要两个表的数据,必须将它们合并或内联。

import pandas as pd
import numpy as np
merge = pd.merge(customers, orders, left_on="id", right_on="cust_id")

你对客户表中的列id和表顺序中的列cust_id进行操作。结果显示两个表是一个。

一旦你完成了这个工作,使用groupby()函数按cust_id和first_name对输出进行分组。这些是问题要求你显示的列。你还需要显示每个客户的最低订单成本。你可以用min()函数来做。

完整的答案是这样的。

import pandas as pd
import numpy as np
merge = pd.merge(customers, orders, left_on="id", right_on="cust_id")
result = merge.groupby(["cust_id", "first_name"])["total_order_cost"].min().reset_index()

该代码返回所需的输出。

Python编码面试问题#5:按职称和性别划分的收入

这里,我们有另一个来自旧金山市的问题。

“根据雇员的职称和性别,找出平均总报酬。总薪酬的计算方法是将每个员工的工资和奖金加在一起。 但是,并不是每个员工都能得到奖金,所以在计算时,不考虑没有奖金的员工。雇员可以获得一个以上的奖金。 输出员工的头衔,性别(即性别),以及平均总报酬。”

问题链接。https://platform.stratascratch.com/coding/10077-income-by-title-and-gender?python=1

在回答这个问题时,第一步应该是按工人和奖金分组,同时使用sum()函数来获得每个工人id的奖金。然后你应该合并你所掌握的表。这也是一个内部连接。一旦你这样做了,你就可以通过增加工资和奖金得到总的报酬。最后一步是输出雇员的头衔、性别和平均总报酬,你可以通过使用mean()函数得到。

Python编码面试问题#6:产品交易数

这里有一个微软的问题。

“找出每个产品发生的交易数量。输出产品名称以及相应的交易数量,并按产品ID以升序排列记录。你可以忽略没有交易的产品。” 该问题的链接。https://platform.stratascratch.com/coding/10163-product-transaction-count?python=1

这里有一些写代码的提示。首先,你应该使用notnull()函数来获取至少有一个交易的产品。接下来,使用merge()函数将此表与excel_sql_inventory_data表进行内联。使用groupby()和transform()来获得交易的数量。然后去掉重复的产品,显示每个产品的交易数量。最后,按产品ID对输出进行排序。

3.数据过滤

当你使用Python时,你通常会在大量的数据上使用它。然而,你不会被要求输出所有的数据,因为那根本毫无意义。

分析数据还包括设置某些标准,只拉出你想在输出中看到的数据。为此,你应该使用某些过滤数据的方法。

虽然merge()也有过滤数据的方式,但这里我们说的是使用比较运算符(==, <, >, <=, >=),between(),或其他一些方式来限制输出中的行数。让我们看看这在Python中是如何实现的!

Python编码面试问题#7。找到2010年排名前10的歌曲

这是一个在Spotify面试时可能会被问到的问题。

"2010年排名前10位的歌曲是什么?输出排名、组合名称和歌曲名称,但不要两次显示同一首歌。根据year_rank以升序对结果进行排序。"

该问题的链接:https://platform.stratascratch.com/coding/9650-find-the-top-10-ranked-songs-in-2010?python=1

要解决这个问题,你只需要billboard_top_100_year_end表。

表格中的数据是这样的。

下面是我们回答这个问题的方法。

import pandas as pd
import numpy as np
conditions = billboard_top_100_year_end[(billboard_top_100_year_end['year'] == 2010) & (billboard_top_100_year_end['year_rank'].between(1,10))]

上面的代码设置了两个条件。第一个是使用' == '操作符。通过使用它,我们只选择2010年出现的歌曲。第二个条件只选择排名在1到10之间的歌曲。 运行此代码返回:

在此之后,我们只需要选择三个列:year_rank、group_name和song_name。我们还将使用drop_duplices()函数来删除重复项。这样代码就完整了:

import pandas as pd
import numpy as np
conditions = billboard_top_100_year_end[(billboard_top_100_year_end['year'] == 2010) & (billboard_top_100_year_end['year_rank'].between(1,10))]
result = conditions[['year_rank','group_name','song_name']].drop_duplicates()

它会给你2010年排名前10的歌曲。

Python编码面试题#8:纽约市和哈林区的公寓

尝试解决Airbnb的问题。

"找到50个公寓搜索纽约市哈莱姆区的细节。"

该问题的链接:https://platform.stratascratch.com/coding/9616-apartments-in-new-york-city-and-harlem?python=1)

这里有一些提示。你需要设置三个条件,只得到公寓类别,只得到哈林区的公寓,而且城市必须是纽约市。这三个条件都将使用'=='运算符来设置。你不需要显示所有的公寓,所以使用head()函数来限制输出中的行数。

Python 编码面试问题 #9: 重复的电子邮件

最后一个问题侧重于过滤数据是由Salesforce。

"找到所有有重复的电子邮件"。

该问题的链接。https://platform.stratascratch.com/coding/9895-duplicate-emails?python=1

这个问题相当简单。你需要使用groupby()函数,按电子邮件分组,并找出每个电子邮件地址出现的次数。然后在电子邮件地址的数量上使用'>'运算符,以获得重复的邮件。

4.文本操作

在处理数据时,你必须对其进行处理,使其更适合于你的分析。文本数据往往就是这种情况。它包括根据存储的文本为数据分配新的数值,解析和合并文本,或查找其长度、某个字母、符号的位置等。

Python编码面试问题#10:评论数的评论仓

下一个问题是由Airbnb提出的。

“为了更好地了解评论数对住宿价格的影响,将评论数与价格一起归入以下几组。

0条评论:NO
1至5条评论:FEW
6到15条评论:SOME
16到40条评论:MANY
超过40条评论:A LOT

输出价格和其分类。在住宿级别上进行分类。”

该问题的链接:https://platform.stratascratch.com/coding/9628-reviews-bins-on-reviews-number?python=1

你只用了一个表,但这个表有相当多的列。这个表是airbnb_search_details,列是。

下面是该表的第一行:

编写代码的第一步应该是获得评论的数量。

import pandas as pd
import numpy as np
num_reviews = airbnb_search_details['number_of_reviews']

你会得到:

接下来,你想得到有0条评论的住宿,然后是1-5条,6-15条,16-40条,以及40条以上的评论。为了得到这些,你需要'=='和'>'运算符的组合,以及between()函数。

import pandas as pd
import numpy as np
num_reviews = airbnb_search_details['number_of_reviews']
condlist = [num_reviews == 0, num_reviews.between(1,5),num_reviews.between(5,15),num_reviews.between(15,40),num_reviews>40]

下面是你目前的输出应该是什么样子。

现在是以分配类别的形式来处理文本。这些是 没有、少数、一些、许多、很多。你的代码到现在为止是。

import pandas as pd
import numpy as np
num_reviews = airbnb_search_details['number_of_reviews']
condlist = [num_reviews == 0, num_reviews.between(1,5),num_reviews.between(5,15),num_reviews.between(15,40),num_reviews>40]
choicelist = ['NO','FEW','SOME','MANY','A LOT']

好了,这里是你的分类。

最后一步是将这些类别分配给住宿,并列出其价格。

import pandas as pd
import numpy as np
num_reviews = airbnb_search_details['number_of_reviews']
condlist = [num_reviews == 0, num_reviews.between(1,5),num_reviews.between(5,15),num_reviews.between(15,40),num_reviews>40]
choicelist = ['NO','FEW','SOME','MANY','A LOT']
airbnb_search_details['reviews_qualification'] = np.select(condlist,choicelist)
result = airbnb_search_details[['reviews_qualification','price']]

这段代码会让你得到所需的输出。

Python编码面试问题#11:企业名称长度

下一个问题是由旧金山市提出的。

"找出每个企业名称中的字数。避免将特殊符号算作单词(如&)。输出企业名称和它的字数"。

该问题的链接。https://platform.stratascratch.com/coding/10131-business-name-lengths?python=1

在回答这个问题时,你应该首先使用drop_duplicates()函数只找到不同的企业。然后使用replace()函数将所有的特殊符号替换为空白,这样你以后就不会计算它们。使用split()函数将文本分割成一个列表,然后使用len()函数来计算字数。

Python编码面试题#12:字母'a'的位置

亚马逊的这个问题要求你:

"找出工人的名字'Amitah'中字母'a'的位置。使用基于1的索引,例如,第二个字母的位置是2"。

该问题的链接。https://platform.stratascratch.com/coding/9829-positions-of-letter-a?python=1

该解决方案有两个主要概念。第一个是使用'=='运算符过滤工作者'Amitah'。第二个是在一个字符串上使用find()函数来获得字母'a'的位置。

5.日期时间操作

作为一名数据科学家,你会经常与日期打交道。根据可用的数据,你可能会被要求将数据转换为日期时间,提取某个时间段(如月或年),或以任何其他合适的方式操作日期时间。

Python编码面试题#13:过去30天内每个用户的评论数

这里有一个Meta/Facebook的问题。

"返回每个用户在过去30天内收到的评论总数。不要输出在定义时间段内没有收到任何评论的用户。假设今天是2020-02-10"。

该问题的链接。https://platform.stratascratch.com/coding/2004-number-of-comments-per-user-in-past-30-days?python=1

你可以在表fb_comments_count中找到数据。

数据也在这里:

看看解决方案,然后我们将在下面解释:

import pandas as pd
from datetime import timedelta
result = fb_comments_count[(fb_comments_count['created_at'] >= pd.to_datetime('2020-02-10') - timedelta(days=30)) & (
fb_comments_count['created_at'] <= pd.to_datetime('2020-02-10'))].groupby('user_id')[
'number_of_comments'].sum().reset_index()

要找到从2020-02-10开始不超过三十天的评论,你首先需要用to_datetime()函数把这个日期转换成数据时间。为了得到你感兴趣的评论的最新日期,用timedelta()函数从今天减去30天。所有你感兴趣的评论的日期都等于或大于这个差值。另外,你想排除所有在2020-02-10之后发布的评论。这就是为什么有第二个条件的原因。最后,通过用户ID分组,并使用sum()函数来获得每个用户的评论。

如果你做对了一切,你会得到这样的输出。

Python编码面试问题#14:寻找用户购买的东西

这是亚马逊的问题。

"写一个查询,以识别返回的活跃用户。一个返回的活跃用户是指在他们购买的任何其他产品的7天内进行了第二次购买的用户。输出这些返回的活跃用户的user_ids的列表"。

该问题的链接。https://platform.stratascratch.com/coding/10322-finding-user-purchases?python=1

要解决这个问题,你需要使用strftime()函数来获得MM-DD-YYY格式的购买日期。然后使用sort_values()函数,根据用户的ID和购买日期,以升序排序输出。为了得到前一个顺序,应用shift()函数,按用户ID分组,并显示购买日期。

使用to_datetime转换订单和前一个订单的日期,然后找出这两个日期之间的差异。最后,对结果进行过滤,使其只输出第一次和第二次购买之间相隔7天或更短的用户,并使用unique()函数,只获得不同的用户。

Python编码面试题#15:3月份的客户收入

最后一个问题是由Meta/Facebook提出的。

"计算2019年3月每个客户的总收入。只包括在2019年3月活跃的客户。

将收入与客户ID一起输出,并根据收入按降序对结果进行排序。"

该问题的链接:https://platform.stratascratch.com/coding/9782-customer-revenue-in-march?python=1

你需要在列order_date上使用to_datetime()。然后从同一列中提取3月和2019年。最后,按cust_id分组,并对列total_order_cost求和,这将是你要找的收入。使用sort_values()将输出结果按照收入降序排序。

结论

通过向你展示来自顶级公司的15个面试问题,我们涵盖了面试官在测试你的Python技能时感兴趣的五个主要话题。

我们以数据的聚合、分组和排序为开端。然后我们向你展示了如何连接表格和过滤你的输出。最后,你学会了如何处理文本和日期时间数据。

当然,这些并不是你应该知道的唯一概念。但它应该为你准备面试和回答一些更多的Python面试问题打下良好的基础。

要练习更多的Python Pandas函数,请查看我们的文章《数据科学的Python Pandas面试问题》(https://www.stratascratch.com/blog/python-pandas-interview-questions-for-data-science/),它将给你一个关于用Pandas进行数据操作的概述以及在数据科学面试中提出的Pandas问题类型。

该文的作者是 Nate Rosidi, 2022年4月27日发布于KDnuggets。

Nate Rosidi是一名数据科学家,并从事产品策略。他也是教授分析学的兼职教授,并且是StrataScratch的创始人,该平台通过顶级公司的真实面试问题帮助数据科学家准备面试。感兴趣的读者,可以在Twitter、内特-罗西迪是一名数据科学家,并从事产品策略。他也是教授分析学的兼职教授,并且是StrataScratch的创始人,该平台通过顶级公司的真实面试问题帮助数据科学家准备面试。感兴趣的读者,可以在Twitter或LinkedIn上(StrataScratch)与他联系。

推荐书单

最后,附上有关Python的必读书单,轻松搞定有关Python问题。

精彩回顾

《人体系统调优不完全指南》火了!我们整理了一份《程序员健康指南》!

Kindle退出中国怎么办?快用Python下载你的电子书

关注《Python学研大本营》

Python面试必须知道的15个问题相关推荐

  1. python语言必背代码-Python新手必须知道的25条知识点

    原标题:Python新手必须知道的25条知识点 1.到底什么是Python?你可以在回答中与其他技术进行对比 下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,P ...

  2. 有理想的程序员必须知道的15件事

    作为程序员,要取得非凡成就需要记住的15件事. 1.走一条不一样的路 在有利于自己的市场中竞争,如果你满足于"泯然众人矣",那恐怕就得跟那些低工资国家的程序员们同场竞技了. 2.了 ...

  3. 程序员必须知道的15件事(转)

    1.走一条不一样的路 在有利于自己的市场中竞争,如果你满足于"泯然众人矣",那恐怕就得跟那些低工资国家的程序员们同场竞技了. 2.了解自己的公司 以我在医院.咨询公司.物流企业以及 ...

  4. Python字符串必须知道的7个函数

    Python字符串函数数不胜数,想要记完所有几乎不可能,下列几个是极为重要的一些函数,属于必记函数. 一.join 功能: 将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 语 ...

  5. python语言必背代码-Python入门必须知道的11个知识点

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. ...

  6. python入门有基础-Python入门必须知道的11个知识点

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. ...

  7. 【Python基础】Python中必须知道的5对魔术方法

    原文作者:Yong Cui 翻译:Lemon 译文出品:Python数据之道 Photo by Liz Hixon on Unsplash 简介 在使用Python命名函数时,我们可以使用下划线以及字 ...

  8. Python入门必须知道的11个知识点!

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. ...

  9. c4d python使用方法_Cinema 4D Python脚本编写必须知道的5行Python代码教程

    Cinema 4D Python脚本编写必须知道的5行Python代码教程 在这期Cinema 4D python教程中的第一篇.Alpha Pixel将介绍如何使用python脚本进行设置,并查看一 ...

最新文章

  1. Oracle数据库查看表空间是否为自增的
  2. C语言入门经典——基础知识(指针 数组 多维数组)
  3. 用php怎么输出饼状图,php绘图之生成饼状图的方法_PHP
  4. docker desktop一直starting不变化
  5. java excel 转pdf
  6. 发现了拯救“文献多的一团麻”的工具
  7. 音乐美术计算机在中考,2022年音乐、美术进中考?教育部最新回应...
  8. java中一级缓存二级缓存_[Java] hibernate 一级缓存和二级缓存
  9. 为什么有些人会财路不顺?
  10. feign调用多个服务_SpringCloud使用Feign实现服务调用|chu
  11. 密码系列-Base32
  12. Google Coral USB加速器介绍
  13. javaScript的字符串
  14. 判断天干,地支,生肖推算
  15. ScreenToGif: Gif 图片神器
  16. 我的一点自学心得[摘]
  17. 软连接和硬链接的区别
  18. 无法确认设备和计算机之间的连接打印机,我无法从计算机上通过USB 进行打印...
  19. 温湿度系统(花葵、库房检测)
  20. 【小甲鱼C语言】课后笔记第一章第九节——if语句

热门文章

  1. 北京供销大数据集团成立
  2. 【邮件发送】将list数据以html格式的形式展示到邮件正文
  3. SQL日期与时间戳转换unix_timestamp() 与 from_unixtime()
  4. TCP/IP协议四层模型
  5. 电商管理系统-登录功能
  6. Drozer自定义模块以及安装使用
  7. 解决freemarker生成的静态文件中文乱码的问题
  8. 回首2021,剑指 2022 | 一个00后程序员的华丽蜕变
  9. matlab调用函数出nan,求助:Matlab的fmincon函数出现RCOND = NaN
  10. 好用的验证码短信API推荐