# 如何利用Python做数据筛选 在数据分析和处理过程中,数据筛选是最基础也是最重要的环节之一。Python凭借其丰富的库(如Pandas、NumPy等)和简洁的语法,成为数据筛选的首选工具。本文将详细介绍如何利用Python进行高效的数据筛选,涵盖基础操作、高级技巧以及实际案例。 ## 1. 数据筛选的基本概念 数据筛选是指从数据集中提取满足特定条件的子集。常见的筛选场景包括: - 按条件过滤行或列 - 处理缺失值 - 去重处理 - 基于复杂逻辑的组合筛选 ## 2. 准备工作 在开始之前,确保已安装必要的Python库: ```bash pip install pandas numpy
导入常用库并创建示例数据集:
import pandas as pd import numpy as np data = { 'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'], 'Age': [25, 30, 35, 40, 45], 'Salary': [50000, 60000, 70000, 80000, 90000], 'Department': ['HR', 'IT', 'Finance', 'IT', 'HR'] } df = pd.DataFrame(data)
# 选择单列 names = df['Name'] # 选择多列 subset = df[['Name', 'Salary']]
# 简单条件筛选 it_employees = df[df['Department'] == 'IT'] # 多条件组合(注意使用括号) high_salary_hr = df[(df['Department'] == 'HR') & (df['Salary'] > 50000)]
result = df.query("Age > 30 and Department == 'IT'")
departments = ['HR', 'Finance'] filtered = df[df['Department'].isin(departments)]
# 创建含缺失值的数据 df_with_na = df.copy() df_with_na.loc[2, 'Age'] = np.nan # 筛选非缺失值 clean_age = df_with_na[df_with_na['Age'].notna()]
masked = df.where(df['Salary'] > 60000)
# 按标签筛选 selected = df.loc[df['Age'] > 30, ['Name', 'Department']] # 按位置筛选 first_two = df.iloc[:2]
❌ 不推荐:
df[df['Age'] > 30]['Name']
✅ 推荐:
df.loc[df['Age'] > 30, 'Name']
large_df = pd.DataFrame(np.random.rand(1e6, 3), columns=['A','B','C']) result = large_df.eval("A > 0.5 and B < 0.3")
# 模拟电商数据 orders = pd.DataFrame({ 'order_id': range(1000), 'customer_id': np.random.randint(100, 110, 1000), 'amount': np.random.uniform(10, 200, 1000), 'date': pd.date_range('2023-01-01', periods=1000) }) # 筛选2023年Q1的大额订单 big_orders = orders[ (orders['date'] >= '2023-01-01') & (orders['date'] <= '2023-03-31') & (orders['amount'] > 150) ]
grades = pd.DataFrame({ 'Student': ['A','B','C','D','E'], 'Math': [90, 85, 75, 60, 95], 'English': [80, 88, 92, 70, 85] }) # 筛选至少有一门课大于90分的学生 top_students = grades[(grades['Math'] > 90) | (grades['English'] > 90)]
pd.read_csv('large.csv', chunksize=10000)
numexpr
加速复杂计算Python提供了丰富而强大的数据筛选工具。通过掌握: 1. 基础条件筛选 2. 高级查询方法 3. 性能优化技巧 4. 实际应用场景
你可以高效地从海量数据中提取有价值的信息。建议读者在实际项目中多加练习,熟练掌握各种筛选方法的适用场景和性能特点。
提示:本文示例代码可在Jupyter Notebook中直接运行,建议读者动手实践以加深理解。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。