数据框(DataFrame)是一种二维表格型数据结构,广泛应用于数据分析领域。过滤数据框中的数据是指根据特定条件筛选出满足要求的行或列。
import pandas as pd
# 示例数据框
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'Salary': [50000, 60000, 70000, 80000]
})
# 过滤年龄大于30的记录
filtered_df = df[df['Age'] > 30]
# 使用query方法过滤
filtered_df = df.query('Age > 30 and Salary < 75000')
# 使用loc按标签和条件过滤
filtered_df = df.loc[(df['Age'] > 25) & (df['Salary'] > 55000)]
# 使用iloc按位置过滤
filtered_df = df.iloc[1:3] # 获取第2到第3行
# 过滤特定值的记录
filtered_df = df[df['Name'].isin(['Alice', 'Charlie'])]
# 过滤名称以'A'开头的记录
filtered_df = df[df['Name'].str.startswith('A')]
原因:可能没有正确使用括号或逻辑运算符
解决:
# 错误示例
# filtered_df = df[df['Age'] > 30 & df['Salary'] < 75000] # 会报错
# 正确示例
filtered_df = df[(df['Age'] > 30) & (df['Salary'] < 75000)]
原因:条件过于严格或数据本身不满足条件
解决:
# 检查条件是否合理
print(df['Age'].unique()) # 查看年龄分布
print(df['Salary'].describe()) # 查看薪资统计
# 过滤掉Age列中缺失值的行
filtered_df = df[df['Age'].notna()]
# 过滤掉Age列中缺失值或Salary列中缺失值的行
filtered_df = df[df[['Age', 'Salary']].notna().all(axis=1)]
# 过滤薪资高于平均值的记录
avg_salary = df['Salary'].mean()
filtered_df = df[df.apply(lambda x: x['Salary'] > avg_salary, axis=1)]
# 年龄在25-35之间或薪资大于65000的记录
filtered_df = df[(df['Age'].between(25, 35)) | (df['Salary'] > 65000)]
# 过滤名称中包含'i'的记录
filtered_df = df[df['Name'].str.contains('i', regex=True)]
query
方法通常比布尔索引更快通过掌握这些过滤技术,您可以高效地从数据框中提取所需信息,为后续的数据分析和处理打下坚实基础。
没有搜到相关的文章