pandas怎么读 pandas

2024-12-3108:44:33综合资讯0

此系列文章收录于公众号:数据大宇宙 > 数据分析 > pd

经常听到人们对Python在数据处理方面的赞誉,但许多人发现学习过程中遭遇了困难。其实,问题不在于Python本身,而在于它有一把得心应手的数据分析利器——pandas。

不少读者反映,我们的pandas系列专栏缺乏练习题。为了配合大家的学习,本文将提供一套基于SQL的练习题,作为pandas专栏的课后练习。我们将尽量使用pandas中最基础的操作来完成大部分解题过程,所涉及的知识点都会在专栏的前15节内容中有详细的讲解。

本文案例背景是关于学生科目考试成绩的数据处理。数据的准备过程已在上一篇文章中详细讲解,这里我们将直接进入题目。

上一篇文章链接:

解读:

1. 行5解释: 我们通过查询(df_wd.query(tg_query))找到"赵雷"的课程记录,由于每名学生只有一行记录(.iloc[0]),我们检查哪些科目的成绩是缺失的(.isna())。

2. 行6解释(与上类似): 逻辑相同,只是这次的条件是针对其他同学。

3. 行8解释: 通过比较前两步的结果(tg_cond == other_cond),我们能够得知哪些科目的课程每个同学与"赵雷"有相同报考科目。得分相同的是1,不同则为0。我们统计得分为1的数量(.sum(axis=1)),并检查是否大于或等于1(>=1),以确定是否有多于一门课程是相同的。

接下来,我们将详细对比SQL的实现方式:

SQL虽然相对复杂,但其执行顺序明确,通常需要仔细解读才能理解其中的逻辑。下面我们将简要介绍其执行顺序。

关于SQL的执行顺序和技巧:

- 行5和6解释: 从成绩表(sc)中检索"赵雷"的考试科目(cid),这里使用sid是因为成绩表中没有学生名字。

- 行3和4解释: 再次从成绩表(sc)中找出与"赵雷"考试科目相同的记录,但这一步结果中包含了"赵雷"本身的记录。

- 关键点: 整个SQL过程的关键在于正确使用IN操作符。

- 使用CTE(公共表表达式)可以增强SQL的可读性,但不同数据库对其支持程度不同。

- 当需求变为至少有两门相同课程的学生时,上述思路将不再适用。

对于pandas的处理方式,也遵循相似的逻辑:

pandas中的isin函数对应于SQL中的IN操作符。

当使用A列.isin(B列)时,结果是一个与A列长度相同的bool值列,每个bool值表示A列对应值是否存在于B列中。

与“赵雷”同学报读课程完全相同的学生信息:

你会发现这个需求与之前的需求非常相似,只是最后的判断逻辑稍有不同。