python常用pandas函数nlargest / nsmallest及其手动实现
Pandas中的nlargest
和nsmallest
函数是用于在Series或DataFrame中查找最大或最小值的非常有用的工具。它们可以根据指定的列或索引来返回前n个最大或最小的元素。
DataFrame.nlargest(n, columns, keep='first')
Series.nlargest(n, keep='first')
n
: 返回元素的数量。columns
: 要排序的列名(对于DataFrame)。keep
: 处理重复值的方式:
'first'
: 保留第一个出现的最大值。'last'
: 保留最后一个出现的最大值。'all'
: 保留所有最大值。
DataFrame.nsmallest(n, columns, keep='first')
Series.nsmallest(n, keep='first')
nlargest
类似。
import pandas as pd
# 创建DataFrame
data = {'col1': [3, 6, 9, 12, 15], 'col2': [4, 7, 10, 13, 16]}
df = pd.DataFrame(data)
# 查找col1列最大的3个值
print(df.nlargest(3, 'col1'))
# 查找col2列最小的2个值
print(df.nsmallest(2, 'col2'))
# 查找所有列中最大的2个值
print(df.nlargest(2))
虽然Pandas提供了nlargest
和nsmallest
函数,但了解其背后的原理有助于更深入地理解。我们可以通过排序和切片来手动实现这两个函数:
def my_nlargest(df, n, column):
return df.sort_values(by=column, ascending=False).head(n)
def my_nsmallest(df, n, column):
return df.sort_values(by=column).head(n)
一般来说,Pandas内置的函数由于底层优化,性能会比手动实现更高。但是,对于小数据集,手动实现的方法也足够高效。
nlargest
和nsmallest
函数是Pandas中非常常用的函数,用于快速查找最大或最小值。keep
参数来处理重复值。key
参数传入自定义排序函数。columns
参数。dropna()
函数去除包含NaN值的行,或者在排序时指定na_position
参数。key
参数传入自定义排序函数。通过掌握nlargest
和nsmallest
函数,你可以更方便地对数据进行分析和处理。