Python数据分析利器-Pandas数据处理-筛选与排序

条件筛选(布尔索引)  

布尔索引是Pandas中最强大的数据筛选方式,它允许我们使用逻辑条件快速过滤数据。

基本布尔筛选

import pandas as pd
import numpy as np

data = {
    '姓名': ['张三','李四','王五','赵六','田七'],
    '年龄': [25,32,28,45,31],
    '工资': [8000, 12000, 9500, 20000, 11000],
    '部门': ['市场部', '技术部', '市场部', '管理部', '技术部']
}

df = pd.DataFrame(data=data)
# 筛选年龄大于30的员工
#older_than_30 = df['年龄'] > 30
older_than_30 = df[df['年龄'] > 30]
print(older_than_30)
# 筛选技术部的员工
tech_dept = df[df['部门'] == '技术部']
print("\n技术部员工:\n", tech_dept)

##############################################
   姓名  年龄     工资   部门
1  李四  32  12000  技术部
3  赵六  45  20000  管理部
4  田七  31  11000  技术部

技术部员工:
    姓名  年龄     工资   部门
1  李四  32  12000  技术部
4  田七  31  11000  技术部

 复合条件筛选

import pandas as pd
import numpy as np

data = {
    '姓名': ['张三','李四','王五','赵六','田七'],
    '年龄': [25,32,28,45,31],
    '工资': [8000, 12000, 9500, 20000, 11000],
    '部门': ['市场部', '技术部', '市场部', '管理部', '技术部']
}
df = pd.DataFrame(data=data)

condition = (df['工资'] >= 10000) & (df['工资'] <= 15000) & (df['部门'] == '技术部')
filtered = df[condition]
print("\n工资10k-15k的技术部员工:\n", filtered)

#######################################################
工资10k-15k的技术部员工:
    姓名  年龄     工资   部门
1  李四  32  12000  技术部
4  田七  31  11000  技术部

使用query方法

import pandas as pd
import numpy as np

data = {
    '姓名': ['张三','李四','王五','赵六','田七'],
    '年龄': [25,32,28,45,31],
    '工资': [8000, 12000, 9500, 20000, 11000],
    '部门': ['市场部', '技术部', '市场部', '管理部', '技术部']
}
df = pd.DataFrame(data=data)

# 使用query方法进行筛选
filterd = df.query("年龄 > 30 and 部门 == '技术部'" )
print("\nquery方法筛选结果:\n",filterd)

# 使用变量进行动态查询
min_age = 30
filterd = df.query("年龄 > @min_age")

print("\n使用变量查询:\n", filterd)

#########################################
query方法筛选结果:
    姓名  年龄     工资   部门
1  李四  32  12000  技术部
4  田七  31  11000  技术部

使用变量查询:
    姓名  年龄     工资   部门
1  李四  32  12000  技术部
3  赵六  45  20000  管理部
4  田七  31  11000  技术部

 

  

 

posted @ 2026-01-14 11:19  梦徒  阅读(0)  评论(0)    收藏  举报