用Pandas对数据进行复杂查询.docx

上传人:lao****ou 文档编号:86789 上传时间:2023-02-20 格式:DOCX 页数:8 大小:296.54KB
下载 相关 举报
用Pandas对数据进行复杂查询.docx_第1页
第1页 / 共8页
用Pandas对数据进行复杂查询.docx_第2页
第2页 / 共8页
用Pandas对数据进行复杂查询.docx_第3页
第3页 / 共8页
用Pandas对数据进行复杂查询.docx_第4页
第4页 / 共8页
用Pandas对数据进行复杂查询.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《用Pandas对数据进行复杂查询.docx》由会员分享,可在线阅读,更多相关《用Pandas对数据进行复杂查询.docx(8页珍藏版)》请在第一文库网上搜索。

1、用Pandas对数据进行复杂查询,7步教你随心所欲地取用数据导读:在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。本文将介绍Pandas对数据的复杂查询。实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据。本文将介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。01逻辑运算类似于Python的逻辑运算,我们以DataFrame其中一列进行逻辑计算,会产生一个对应的由布尔值组成的Series ,真假值由此位上的数据是否满足逻辑表达式决定。例如下例中索引为0的数据值为89,大于36 ,所以最后值为True。1# Q1成绩大J 362df

2、?QrT6H16Name: QI, Length: 100, dtype: bool一个针对索引的逻辑表达式会产生一个array类型数组,该数组由布尔值组成。根据逻辑表达式,只有索引为1的值为True ,其余全为False。1#索引等于2df.index34array(False True, False/False, False, False,False, False, False,False, False, False,False, False, False,False, False, False,False, False, False)False, False, False,False,

3、False, False,7False, False, False)False, False, False,False, False, False,False, False, FalseFalse” False” False,False, False, False,9False, False, False,False, False, False,False, False, False,10False, False, False,False, False, False,False, False, False,False, False, False)False, False, False,Fals

4、e, False, False)12False, False, False)False, False, False,False, False, False,13False, False, FalseFalse” False” False,False, False, False,False, False, False,False, False, False,False, False, False,False)16再看一下关于DataFrame的逻辑运算,判断数值部分的所有值是否大于60 ,满足表达式的值显示为True ,不满足表达式的值显示为False。1#什.1:(2:,(24部分只取数字部分

5、,否则会因字符无大于运算而报错2dfloc:,4QIQ2Q3Q450TrueFalseFalseTrue61FalseFalseFalseFalse72FalseFalseTrue83TrueTrueTrueTrue94TrueTrueTrue10, FalseFalseTrueTrue1296FalseFalseFalseTrueTrueFalseFalse1498FalseTrueFalseTrueFalseFalseFalseTrue16100 rows x 4 columns除了逻辑运算,Pandas还支持组合条件的Python位运算:1# QI成绩不小于60分,并且是C组成员2(df

6、.Ql 90, QI: #Q1 大于 9。.、Q1 及其力 仃列需要注意的是在进行或(| )、与(& )、非()运算时,各个独立逻辑表达式需要用括号括起来。any和all对逻辑计算后的布尔序列再进行判断,序列中所有值都为True时all才返回True ,序列中只要有一个值为True时any就返回True。它们还可以传入axis参数的值,用于指定判断的方向,与Pandas的axis参数整体约定一样,默认为0列方向,传入1为行方向。利用这两个方法,我们可以对整体数据进行逻辑判断,例如:1# QI、Q2成绩全为超过80分的2df(df.loc:JQ2 80):aH(l)3# QL Q2成绩至少有二7

7、超过80分而4df(df.loc: JQlJQ2 80).any(l)上例对两个列整体先做逻辑计算得到一个两列的布尔序列,然后用all和any在行方向上做逻辑计算。03函数筛选可以在表达式使用lambda函数,默认变量是其操作的对象。如果操作的对象是一个DataFrame ,那么变量就是这个DataFrame ;如果是一个Series ,那么就是这个Serieso可以看以下例子,s就是指df.Ql这个Series :1#查询最大索引的值2df ,Qllambda s: max(s.index) # 值为 2Name: QI, dtype:F面是一些示例:ldflambda df: dfQ:L

8、= 84 x *。竹2df.loc d df: df.Ql = 8, QI : Q2 QI 为 8 的,3df,loc:, lambda df: df.columns:str.len()=4 # 由真彳慢值组.成|4df.loc:, lambda df: i for i in df.columns if Q in i #5df.iloc:3, lambda df: df.columns.str.len()=2 # 由真假俏组成的序歹U04比较函数Pandas提供了一些比较函数,使我们可以将逻辑表达式替换为函数形式。2df df e QI e eq(60)B除了.eq(),还有:1df.ne()

9、 # 不等于!=2df.le() #小于等于Ql.gt(90) & df.Q2.1t(90) # and 关系,Ql90, Q2 Q2 901) # 直接写类型 SQL where 语句2df .query(QI + Q2 4df.query(Ql40) and (Q390)6df.query(teamMM8#对于名称中带有空格的列,可以譬反引号壶来9df. query (B还支持使用符引入变量:1#支持传入变量,如在于平均分40分的a 二 d. Q1. t ci rdf.eval()与df.queryO类似,也可以用于表达式筛选:2dfdf.eval(“Ql 90 Q3 10”)3dfdf.

10、eval(Ql (32号褊06 筛选 df.filterQdf.filter()可以对行名和列名进行筛选,支持模糊匹配、正则表达式。工df二Q1,Q2)3df .filter(regex=e$ , axis=l) #,e1$5df.filter(liku二2, axis=0# lj 26#索引中以2开头、列名有7df,filter(regex=八2, axis=0),filter(like=Q, axis=l)07按数据类型查询Pandas提供了一个按列数据类型筛选的功能df.select_dtypes(include = Nonerexclude = None),它可以指定包含和不包含的数据类型,如果只有一个类型,传入字符;如果有多个类型,传入列表。ldf.select_dtypes(include=103164*) # iZ Float641 .1i/:5df . select_dtypes(exclude二如果没有满足条件的数据,会返回一个仅有索引的DataFrameo08小结本文介绍了如何实现复杂逻辑的数据查询需求,复杂的数据查询功能是Pandas的杀手铜,这些功能Excel实现起来会比较困难,有些甚至无法实现,这正是Pandas的优势所在。-END -

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服