【Pandas必看】数据处理进阶-使用Query方法高效查询并删除符合条件行/列

      在数据分析和处理中,数据查询和删除是经常进行的操作。Pandas是一个功能强大的数据分析工具,提供了多种方法来实现高效的数据查询和删除。本文将介绍如何使用Pandas中的drop方法按条件删除数据行,并介绍query方法进行高效的数据查询。
      Pandas中的drop方法可以方便地删除特定行或列的数据。下面是使用drop方法进行数据删除的示例:

1. 使用drop方法删除指定行/列

drop()方法是Pandas中常用的删除数据的方法。它有许多参数,具体如下:

DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=raise)

- labels:要删除的标签,一个或者多个(list形式)- axis:指定哪一个轴,=0删除行,=1删除列;
- columns:指定某一列或者多列(list形式)- level:索引等级,针对多重索引的情况;
- inplaces:是否替换原来的dataframe,=True代表直接替换原始df,=False代表不替换原始df
  • 直接删除指定行/列

    如果我们想删除DataFrame中的某一列,可以使用下面的代码:

    # 删除名为'C'的列,并替换原始df
    df.drop(columns=['C'], inplace=True)
    
  • 根据条件删除指定行

    我们也可以删除某些指定的行。比如,我们想要删除分数在20到50之间的行:

    # 删除符合条件的指定行,并替换原始df
    df.drop(df[(df.score < 50) & (df.score > 20)].index, inplace=True)
    

      以上示例中,第一个示例通过传入columns参数来删除指定的列,第二个示例通过传入条件表达式来删除符合条件的行。

2.Pandas深度学习:Query方法查询数据

      大多数Pandas用户都熟悉iloc[]loc[]方法,用于从DataFrame中检索行和列。然而,随着检索数据的规则变得越来越复杂,使用这些方法的代码也变得越来越冗长。
      为了更加高效地进行数据查询,Pandas提供了query方法。该方法可以通过类似SQL语句的方式进行数据查询,相比于iloc[]loc[]方法更加简洁和直观。

(1)制作测试数据

首先,我们需要创建一些测试数据来演示这些技巧。下面是一个示例的DataFrame

import pandas as pd

df = pd.DataFrame({'num': [1, 2, 3],
                   'name': ['gao', 'li', 'bai'],
                   'age': [12, 18, 20]})
print(df)

输出结果如下:

   num name  age
0    1  gao   12
1    2   li   18 
2    3  bai   20

(2)使用loc方法查询

loc方法主要通过指定行/列标签进行行数据查询。df.loc(行标签,列标签)

可以通过指定行标签来选择某一行的数据。例如:

行索引标签获取行数据

df.loc[1]  # 选择行标签为1的一行数据

输出结果:

num      2
name    li
age     18
Name: 1, dtype: object

一定范围的行数据

df.loc[0:1]  # 取第一行和第二行的数据(闭区间)

输出结果:

   num name  age
0    1  gao   12
1    2   li   18
df.loc[:,num:name]  # 取第一列到第二列的数据(闭区间)

输出结果:

   num name  
0    1  gao  
1    2   li    
2    3  bai  

读取一列数据

df.loc[ : ,"name"]输出结果:

    name  
0   gao  
1   li   
2   bai  
Name: name, dtype: object

(3)使用iloc方法查询

loc函数相反,iloc函数可以通过 行/列号 来获取行数据。df.loc(行号,列号)

读取一行数据

df.iloc[1] # 获取第二行的数据

输出结果:

num      2
name    li
age     18
Name: 1, dtype: object

读取一列数据

df.iloc[:1] # 获取第二列的数据

输出结果:

    name  
0    gao  
1    li   
2    bai  

读取指定行列数据

df.iloc[1, 1]# 读取第二行,第二列的值

输出结果:

li

切片操作

# 按index和columns进行切片操作
df.iloc[1:3, 1:3] # 读取第2、3行,第2、3列

输出结果:

    name  age
1    li    18 
2    bai   20

(4) 使用query方法查询

query方法可以根据条件表达式来查询数据,具有更加简洁的语法。类似于SQL的语法,可以高效地进行数据查询。该方法可以简化查询语句,提高代码的可读性和执行效率。

示例一:

df.query("age > 15")  # 查询年龄大于15岁的数据

输出结果:

   num name  age
1    2   li   18
2    3  bai   20

示例二:

df = df[[col_1, col_2]]
query_sql = col_1 + '< 0 or ' + col_2 + '< 0'
df = df.drop(df.query(query_sql).index)

在上述示例中,我们首先选择需要查询的列,并将结果保存在新的DataFrame中。接下来,我们构建了一个查询字符串query_sql,表示col_1小于 0 或 col_2 小于 0 的条件。最后,我们使用query方法查询满足条件的行,并使用drop方法删除这些行。

3.query方法与lociloc方法的优势对比

相比于传统的lociloc方法,query方法具有简洁、直观的语法,更接近SQL查询语句的风

query方法具有以下优势:

  • 简化了查询语句,减少了代码的复杂性和冗余。
  • 提供了类似 SQL 的语法,使查询条件更加直观。
  • 内部优化了查询算法,执行速度更快。

      在实际的数据处理工作中,合理使用drop和query方法可以提高数据处理的效率,同时使代码更加简洁易读。

总结

      在本篇博客中,我们介绍了使用Pandas的drop方法删除指定行或列,并演示了使用query方法进行高效查询的方法。通过合理运用这两种方法,我们可以提高数据处理的效率,简化代码,增强代码的可读性和可维护性。希望本篇博客对您在数据处理工作中有所帮助!如果有任何问题,请随时留言!如果本篇内容对您有帮助,还请给作者一键三连支持下~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值