您的位置:

Python数据分析:如何用pandas实现多条件数据筛选

在数据分析的过程中,数据筛选是非常重要的一步。本篇文章将通过Python中pandas库来介绍如何实现多条件数据筛选。

一、数据筛选基础知识

在进行数据筛选之前,我们需要先了解一些数据筛选的基础知识。在pandas中,数据筛选主要有两种方式:布尔索引和query方法。

其中,布尔索引是通过指定一个或多个筛选条件,然后使用这些条件创建一个布尔值数据框(True或False),最后根据这个布尔值数据框来筛选数据。query方法则是通过类似SQL语句的方式,直接指定筛选条件来获取数据。

布尔索引的实现需要使用掌握一下几个函数:


import pandas as pd
import numpy as np

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
                         'foo', 'bar', 'foo', 'foo'],
                   'B': ['one', 'one', 'two', 'three',
                         'two', 'two', 'one', 'three'],
                   'C': np.random.randn(8),
                   'D': np.random.randn(8)})  # 创建一个数据框

df[(df['A'] == 'foo') & (df['B'] == 'one')]  # 执行布尔索引筛选

query方法的实现则需要使用如下代码:


df.query('A == "foo" and B == "one"')  # 执行query查询语句

二、多条件数据筛选实例

假设我们有一个销售数据数据框,其中包含了以下几个变量:销售日期、销售人员、销售数量、销售金额。我们需要对这个数据框进行多条件筛选,找出符合以下条件的数据:

  • 销售日期在2020年1月1日至2020年12月31日之间
  • 销售人员为John或Lisa
  • 销售数量大于100件
  • 销售金额大于50000元

首先我们需要读入数据:


data = pd.read_csv('sales.csv')

接下来,我们可以先使用布尔索引来进行筛选:


bool_idx = (data['销售日期'] >= '2020-01-01') & (data['销售日期'] <= '2020-12-31') & \
           ((data['销售人员'] == 'John') | (data['销售人员'] == 'Lisa')) & \
           (data['销售数量'] > 100) & (data['销售金额'] > 50000)

filtered_data = data[bool_idx]

或者使用query方法:


query_str = '销售日期 >= "2020-01-01" and 销售日期 <= "2020-12-31" and ' \
            '(销售人员 == "John" or 销售人员 == "Lisa") and 销售数量 > 100 and 销售金额 > 50000'

filtered_data = data.query(query_str)

通过以上代码,我们即可得到符合条件的数据。

三、总结

本篇文章通过pandas库的布尔索引和query方法来介绍了如何实现多条件数据筛选。在实际的数据分析过程中,数据筛选是非常重要的一步,需要我们掌握相关的技能。