欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:138737       资源大小:296.55KB        全文页数:8页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    用Pandas对数据进行复杂查询,7步教你随心所欲地取用数据导读:在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。本文将介绍Pandas对数据的复杂查询。实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据。本文将介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。01逻辑运算类似于Python的逻辑运算,我们以DataFrame其中一列进行逻辑计算,会产生一个对应的由布尔值组成的Series ,真假值由此位上的数据是否满足逻辑表达式决定。例如下例中索引为0的数据值为89,大于36 ,所以最后值为True。1# Q1成绩大J 362df?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, 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,False, 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部分只取数字部分,否则会因字符无大于运算而报错2dfloc:,4QIQ2Q3Q450TrueFalseFalseTrue61FalseFalseFalseFalse72FalseFalseTrue83TrueTrueTrueTrue94TrueTrueTrue10, FalseFalseTrueTrue1296FalseFalseFalseTrueTrueFalseFalse1498FalseTrueFalseTrueFalseFalseFalseTrue16100 rows x 4 columns除了逻辑运算,Pandas还支持组合条件的Python位运算:1# QI成绩不小于60分,并且是C组成员2(df.Ql < 60) & (df'team' = 'C')15Length: 100, dtype: bool02逻辑筛选数据切片(口)、.loc口和.iloc口均支持上文所介绍的逻辑表达式。通过逻辑表达式进行复杂条件的数据筛选时需要注意,表达式输出的结果必须是一个布尔序列或者符合其格式要求的数据形式。例如,df.ilocl + l和df.iloclambda df: len(df)-l计算出一个数值,符合索引的格式,df.ilocdf.index=二8返回的是一个布尔序列,df.ilocdf.index返回的是一个索引,它们都是有效的表达式。以下是切片(口)的一些逻辑筛选的示例:= 8 # Q1 等8.Zdf dfrQlT = 8) # 不等 Q3df df.name = "Ben' # 姓名为 Be4dfdf.Ql以下是0C口和.lie口的一些示例:5肝.1肝1=二df . loc |. Q1 一 一 8 7df.locdf'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超过80分而4df(df.loc: J'Ql'JQ2' > 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面是一些示例:ldf口ambda df: df'Q:L' = 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() # 不等于!=2df.le() #小于等于<=3df.lt()4df.ge() ” ;匚)二5df.gt() #使用示例如下:2df.locdf>Ql.gt(90) & df.Q2.1t(90) # and 关系,Ql>90, Q2<90这些函数可以传入一个定值、数列、布尔序列、Series或DataFrame,来与原数据比较。另外还有一个,isin()函数,用于判断数据是否包含指定内容。可以传入一个列表,原数据只需要满足其中一个存在即可;也可以传入一个字典,键为列名,值为需要匹配的值,以实现按列个性化匹配存在值。3dfdf.isin('team,: 'C 'D', 'QI' : 36,93) # 复杂查询,其他值为 Na05 查询 df.queryOdf.query(expr)使用布尔表达式查询DataFrame的列,表达式是一个字符串,类似于SQL中的where从句,不过它相当灵活。ldf query( 'QI > Q2 > 901) # 直接写类型 SQL where 语句2df .query('QI + Q2 >4df.query('(Ql<50) & (Q2>40) and (Q3>90)'6df.query('teamMM8#对于名称中带有空格的列,可以譬反引号壶来9df. query (B还支持使用符引入变量:1#支持传入变量,如在于平均分40分的a 二 d. Q1. t ° ci rdf.eval()与df.queryO类似,也可以用于表达式筛选:2dfdf.eval(“Ql > 90 > Q3 > 10”)3dfdf.eval("Ql > '(32号褊06 筛选 df.filterQdf.filter()可以对行名和列名进行筛选,支持模糊匹配、正则表达式。工df二'Q1','Q2')3df .filter(regex='e$ ', axis=l) #,e'1$'5df.filter(liku二'2', axis=0# l"j 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 -

    注意事项

    本文(用Pandas对数据进行复杂查询.docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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

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



    收起
    展开