Python数据分析实战四:条件筛选与自定义函数

上一章节( https://juejin.cn/editor/drafts/7268594193933254719 )介绍了对于一个特定的数据集,如何从总体上通过统计分析的方法对其进行分析,以便了解数据集的规模,数值特点以及数据的分布情况。本章在了解数据集的基础上,介绍如何对数据集进行条件筛选,选出想要的数据。同时对于一些复杂的场景,现有的函数无法支持时,如何将自定义函数加入到pandas的数据分析中。

为了继续说明问题,本章继续引用上一章节的测试数据集,即两个班级5名学生的成绩单数据:

import pandas as pd  
data = {
     
    'NAME': ['Arial Johnson', 'Derek Davis', 'Latoya Mitchell', 'Tanisha Harris', 'Devin Price'],  
    'CLASS': ['A', 'A', 'A', 'B', 'B'],  
    'COURSE1': [99, 88, 81, 61, 97],  
    'COURSE2': [67, 76, 98, 58, 77],  
    'COURSE3': [93, 97, 91, 94, 51],  
    'COURSE4': [95, 65, 80, 53, 65]  
}  
df = pd.DataFrame(data)

6.条件筛选

6.1 条件判断方法

常用的条件运算符:

  • >/>=:大于/大于等于
  • </<=:小于/小于等于
  • ==/!=:等于/不等于

常用的逻辑运算符

  • &:逻辑与
  • |:逻辑或
  • ~:逻辑非

通过使用条件运算符和逻辑运算符的组合,我们可以创建复杂的布尔条件来进行数据集的筛选和选择。除此之外,由于df的一列相当于Series,可以用Series中的条件判断函数来实现。

  • isin/notin:用于判断Series中的值是否在给定的列表或集合中;
  • isnull/notnull:用于判断Series中的值是否为NaN;

对于Series中的字符类型,可以用pandas.core.strings.StringMethods中的关于字符型的条件判断方法。

  • str.contains():检查字符串中是否包含指定的子串
  • str.isalnum():检查字符串是否由字母和数字组成
  • str.isalpha():检查字符串是否由字母组成
  • str.isdigit():检查字符串是否由数字组成
  • str.isdecimal():检查字符串是否由十进制数字组成
  • str.islower():检查字符串是否全小写
  • str.isupper():检查字符串是否全大写
  • str.istitle():检查字符串是否以大写字母开头
  • str.match():检查字符串是否与指定的正则表达式匹配
  • str.startswith():检查字符串是否以指定的前缀开头

在Pandas中,可以使用条件筛选来过滤数据集中符合特定条件的行,Pandas 提供了多种方法来进行条件筛选,包括使用布尔索引、使用 query() 函数和使用 lociloc 索引器。下面逐一介绍这些方法的用法。

6.2 布尔索引

在 Pandas 中,布尔索引是一种使用布尔条件(True/False)来选择数据集中行的方法。通过使用布尔条件,我们可以筛选出符合特定条件的行,并进行数据集的条件筛选和子集选择。布尔索引也叫布尔数组,数组的长度与数据的行数相同。

我们将各门课程考试分数大于等于80分作为优秀,并以此作为条件判断,可生成一个布尔数组:

>>> df['COURSE1'] > 80
0     True
1     True
2     True
3    False
4     True
Name: COURSE1, dtype: bool

# 通过布尔数组,筛选出课程1考试优秀的记录:
>>> df[df['COURSE1'] >= 80]
              NAME CLASS  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值