Pandas条件筛选 | Python技能树征题

Posted 周先森爱吃素

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas条件筛选 | Python技能树征题相关的知识,希望对你有一定的参考价值。

相关知识

筛选是数据处理中非常频繁使用的功能,而Pandas对表格型数据(Pandas.DataFrame)已经封装了非常完善的条件筛选功能,他们支持下面五种比较运算符和两种逻辑运算符。

运算符含义
>大于
<小于
==等于
>=大于等于
<=小于等于
&
|

多个比较运算符构成的条件语句之间可以用逻辑运算符进行组合,不过每个条件语句需要用圆括号括起来。

条件筛选语句选针对每一列进行,因此格式为df['列名'] 条件运算符 条件值,如df['A'] > 10。该条件可以直接传给dataframe用于行选择,因此形式为df[条件语句],如df[df['A'] > 10]即可挑选出所有第A列大于10的行。上述用法等价于df.loc[条件语句], 不过,loc方法可以进一步挑选输出列,如df.loc[df['A'] > 10, ['A', 'B']]即表示挑选出所有第A列大于10 的行且只输出A和B两列的结果。

题目

给定下面的一个表格型数据的定义,试分别完成下面三道题。

名字性别语文成绩数学成绩英语成绩
张三619059
赵四919293
王五554540
李六906059
刘七909090
林八505050
莫九454580
  • 将所有性别为女的记录挑选出来
  • 将所有语文和数学成绩及格且性别为男的记录挑选出来
  • 将所有语文成绩大于等于90分或者数学成绩大于90分的记录挑选出来且只保留姓名、性别和英语成绩

思路及答案

三道题的答案都可以通过上面的条件筛选的知识点来实现,具体代码如下。

import pandas as pd

columns = ['name', '性别', '语文', '数学', '英语']
data = [
    ['张三', '男', 61, 90, 59],
    ['赵四', '女', 91, 92, 93],
    ['王五', '男', 55, 45, 40],
    ['李六', '女', 90, 60, 59],
    ['刘七', '男', 90, 90, 90],
    ['林八', '女', 50, 50, 50],
    ['莫九', '男', 45, 45, 80]
]

df = pd.DataFrame(data, columns=columns)

# 第一题,我们直接条件筛选
rst1 = df[df['性别'] == '女']
print(rst1)

# 第二题,多调节级联
rst2 = df[(df['语文'] > 60) & (df['数学'] > 60) & (df['性别'] == '男')]
print(rst2)

# 第三题,条件筛选并输出特定列
rst3 = df.loc[(df['语文'] >= 90) | (df['数学'] > 90), ['name', '性别', '英语']]
print(rst3)

运行结果如下。

    name 性别 语文 数学 英语
1   赵四  女   91  92  93
3   李六  女   90  60  59
5   林八  女   50  50  50
    name 性别 语文 数学 英语
0   张三  男   61  90  59
4   刘七  男   90  90  90
    name 性别 英语
1   赵四  女   93
3   李六  女   59
4   刘七  男   90

Process finished with exit code 0

以上是关于Pandas条件筛选 | Python技能树征题的主要内容,如果未能解决你的问题,请参考以下文章

数据分析45讲—决策树(笔记)| Python技能树征题

SciPy 积分 | Python技能树征题

SciPy 非线性方程求解 | Python技能树征题

仅需6道题轻松掌握Python异常捕获 | Python技能树征题

仅需10道题轻松掌握Python文件处理 | Python技能树征题

仅需6道题轻松掌握Python时间和日期处理 | Python技能树征题