Python Pandas 行数据筛选方法汇总

一、准备数据

import pandas as pd
# 假设有 5 个人,分别参加了 2 门课程,获得了对应的分数
data = {'name' : pd.Series(['Alice', 'Bob', 'Cathy', 'Dany', 'Ella']),
   'Math' : pd.Series([1.1, 2.2, 3.3, 4.4, 5]),
     'English' : pd.Series([3, 2.6, 2, 1.7, 3])
     }

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

运行结果:

    name  Math  English
0  Alice   1.1      3.0
1    Bob   2.2      2.6
2  Cathy   3.3      2.0
3   Dany   4.4      1.7
4   Ella   5.0      3.0

二、通过逻辑规则筛选(大于/小于等)

print(df[df.Math > 2.5]) # 筛选 'Math' 这门课分数高于 2.5 分的 行

运行结果:

    name  Math  English
2  Cathy   3.3      2.0
3   Dany   4.4      1.7
4   Ella   5.0      3.0

逻辑运算表:
在这里插入图片描述

三、删除重复元素

(仅限于行之间的重复:同一列,不同行的数值相同)

print(df.drop_duplicates(subset='English')) # 删除 'English' 这门课 分数 一样 的 行

运行结果:

    name  Math  English
0  Alice   1.1      3.0
1    Bob   2.2      2.6
2  Cathy   3.3      2.0
3   Dany   4.4      1.7

三、显示最前面 / 最后面的 n 行

3.1 显示前面 n 行

print(df.head(2)) # 显示前面 2 行

运行结果:

    name  Math  English
0  Alice   1.1      3.0
1    Bob   2.2      2.6

3.2 显示后面 n 行

print(df.tail(2)) # 显示后面 2 行

运行结果:

   name  Math  English
3  Dany   4.4      1.7
4  Ella   5.0      3.0

四、随机抽取

4.1 随机抽取一定比例

print(df.sample(frac=0.2)) # 这里一共 5 行,5*0.2 = 1 行

运行结果:

   name  Math  English
4  Ella   5.0      3.0

4.2 随机抽取 n 行

print(df.sample(n=2)) # 随机抽取 2 行

运行结果:

    name  Math  English
3   Dany   4.4      1.7
2  Cathy   3.3      2.0

五、切片选取特定范围

# 选取第 2~3 行(从 0 行开始)
print(df.iloc[2:4]) # 切片操作,需要注意的是后面的数字是 4 , 第 4 行不取

运行结果:

    name  Math  English
2  Cathy   3.3      2.0
3   Dany   4.4      1.7

六、排序并选取最值

6.1 选取最大的 n 个值

print(df.nlargest(3,'Math')) # 从大到小排序,并取得 'Math' 最大的 3 行

运行结果:

    name  Math  English
4   Ella   5.0      3.0
3   Dany   4.4      1.7
2  Cathy   3.3      2.0

6.2 选取最小的 n 个值

print(df.nsmallest(3,'Math')) # 从大到小排序,并取得 'Math' 最大的 3 行

运行结果:

    name  Math  English
0  Alice   1.1      3.0
1    Bob   2.2      2.6
2  Cathy   3.3      2.0

猜你喜欢

转载自blog.csdn.net/qq_42067550/article/details/106222491