Pandas筛选数据的20种方法

Pandas 是一个功能全面的数据科学库,可用于数据清洗、处理和分析。本文将介绍 Pandas 提供的多种数据筛选方法,帮助大家更有效地处理和分析数据集。

先写一个简单的DataFrame数据集。

import pandas as pd

data = {'Name': ['Tom''Jerry''Mike''Tom''Jerry'],
        'Age': [2021191822],
        'City': ['New York''London''Paris''New York''London']}

df = pd.DataFrame(data)
print(df)

输出:

    Name  Age       City
0    Tom   20  New York
1  Jerry   21    London
2   Mike   19     Paris
3    Tom   18  New York
4  Jerry   22    London

1.使用loc[]进行标签定位筛选
# 筛选Name为Tom的行
result = df.loc[df['Name'] == 'Tom']
print(result)

2.使用iloc[]进行位置定位筛选
# 筛选前3行数据
result = df.iloc[:3]
print(result)

3.条件判断筛选
# 筛选年龄大于20的人
result = df[df['Age'] > 20]
print(result)

4.使用query()方法进行筛选
# 筛选年龄大于20的人
result = df.query('Age > 20')
print(result)

5.使用isin()方法进行筛选
# 筛选城市为New York或London的人
result = df[df['City'].isin(['New York''London'])]
print(result)

6.使用str.contains()方法进行字符串筛选
# 筛选名字中包含'om'的人
result = df[df['Name'].str.contains('om')]
print(result)

7.使用between()方法进行数值范围筛选
# 筛选年龄在18到20岁之间的人
result = df[df['Age'].between(1820)]
print(result)

8.使用apply()方法进行自定义条件筛选
# 筛选名字长度大于4的人
def name_length(name):
    return len(name) > 4

result = df[df['Name'].apply(name_length)]
print(result)

9.使用dropna()方法处理缺失值
# 删除包含缺失值的行
result = df.dropna()
print(result)

原数据没有缺失值,结果没有变化。


10.使用replace()方法替换特定值
# 将名字中的'Tom'替换为'Thomas'
result = df.replace({'Name': {'Tom''Thomas'}})
print(result)

11.使用lt() (less than) 来筛选小于某个值的数据
# 筛选年龄小于20的人
result = df[df['Age'].lt(20)]
print(result)

12.使用gt() (greater than) 来筛选大于某个值的数据
# 筛选年龄大于20的人
result = df[df['Age'].gt(20)]
print(result)

13.使用le() (less than or equal to) 来筛选小于或等于某个值的数据
# 筛选年龄小于或等于20的人
result = df[df['Age'].le(20)]
print(result)

14.使用ge() (greater than or equal to) 来筛选大于或等于某个值的数据
# 筛选年龄大于或等于20的人
result = df[df['Age'].ge(20)]
print(result)

15.使用ne() (not equal) 来筛选不等于某个值的数据
# 筛选年龄不等于20的人
result = df[df['Age'].ne(20)]
print(result)

16.筛选指定列的非空行
##筛选非空行
df['Gender']=['male','female',None,'female','female']
result = df[df['Gender'].notnull()]
print(result)

17.使用sort_values()结合head()筛选前N个最大/最小值
# 筛选年龄最小的两个记录
result = df.sort_values('Age').head(2)
print(result)

18.使用astype()进行类型转换后筛选
# 将Age列转换为字符串类型并筛选出年龄以'2'开头的人
df['Age'] = df['Age'].astype(str)
result = df[df['Age'].str.startswith('2')]
print(result)

19.使用idxmax()idxmin()找到最大/最小值的索引后进行筛选
# 找到年龄最大的人的索引
max_age_index = df['Age'].idxmax()
# 筛选出年龄最大的人
result = df.loc[max_age_index]
print(result)

20.使用groupby()结合transform()按条件筛选分组数据
# 计算每个城市的最大年龄
max_ages = df.groupby('City')['Age'].transform('max')
# 筛选出每个城市中年龄最大的行
result = df[df['Age'] == max_ages]
print(result)

本文详细介绍了20种在Pandas中执行数据筛选的技巧,并给出了代码示例。这些方法灵活多样,能确保用户能够以高效的方式处理在各种各样的数据集。


请使用浏览器的分享功能分享到微信等