一起学Pandas系列基础篇—查询数据(一)
一起学Pandas系列基础篇---查询数据(一)
本篇学习内容介绍
原始数据结构:
一、返回布尔值的逻辑运算
1. 对列的逻辑运算:查询语文成绩大于80分
df.语文 > 80
结果展示:
注意点:
返回一个由布尔值组成的Series
2.对索引的逻辑运算:查询索引是否为1
df.index == 1
结果展示:
注意点:
判断索引是否为1,返回一个array类型的数组
3.对DataFrame数据中多列进行逻辑运算:查询成绩是否大于60分
df.loc[:,'语文':'科学']>=60
结果展示:
4.与Python位运算的组合运算:语文成绩不小于60分,且是C班的学生
~(df.语文<60) & (df['班级']=='C')
结果展示:
二、返回数据的逻辑运算
1. 切片
- 选择语文分数是8分的学生
df[df['语文'] == 8]
结果展示:
- 选择语文分数不等于8分的学生
df[~(df['语文'] == 8)]
结果展示:
- 姓名为“Ben”的学生的数据
df[df.姓名=='Ben']
结果展示:
- 返回语文成绩好于数学成绩的学生数据
df[df.语文>df.数学]
结果展示:
2.loc
- 返回语文大于90分,显示姓名和语文成绩
df.loc[df['语文']>90,['姓名','语文']]
结果展示:
- 返回语文大于90分,并且数学大于90分的数据
df.loc[(df.语文>90) & (df.数学>90)]
结果展示:
- 返回语文大于90分,或者数学大于90分的数据
df.loc[(df.语文>90) | (df.数学>90)]
结果展示:
3.all和any的用法
- 语文、数学成绩全部超过90的数据
df[(df.loc[:, ['语文','数学']] >90).all(1)]
结果展示:
- 语文、数学成绩至少有一个超过90的数据
df[(df.loc[:, ['语文','数学']] >90).any(1)]
结果展示:
注意点:
上述对两个列整体先做逻辑计算得到一个两列的布尔序列,再用all和any在行方向上做逻辑计算:
df[(df.loc[:, ['语文','数学']] >90)]
三、函数筛选
1. 查询最大索引的语文成绩
df.语文[lambda s: max(s.index)]
结果展示:
注意点:
s就是指df.语文这个Series
2.返回语文成绩等于8的数据
df[lambda df: df['语文']==8]
结果展示:
3.返回语文成绩等于8的姓名、语文、英语数据
df.loc[lambda df: df['语文']==8,['姓名','语文','英语']]
结果展示:
4.根据列索引的字符数是否等于2判断
df.loc[:, lambda df: df.columns.str.len()==2]
结果展示:
5.列索引名称包含‘语’的数据
df.loc[:, lambda df: [i for i in df.columns if '语' in i]]
结果展示:
总结
以上例举了逻辑运算返回布尔值、使用切片、loc[]、iloc[]等返回数据、使用lambda函数筛选数据等。