看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
idxmin()
是 pandas 中用于返回指定轴上最小值对应的索引的方法。它能帮助你快速找到数据中最小值的位置。
返回请求轴上首次出现最小值的索引。NA/空值被排除在外。
DataFrame.idxmin(axis=0, skipna=True, numeric_only=False)
此方法是 ndarray.argmin
的 DataFrame 版本。
此方法是 ndarray.argmin
的Series版本。此方法返回最小值的标签,而ndarray.argmin
返回位置。要获取位置,请使用series.values.argmin()
。
axis:
int
,可选,默认为 0
0
表示按列(垂直方向)操作,1
表示按行(水平方向)操作。skipna:
bool
,可选,默认为 True
NaN
)。如果为 True
,则忽略缺失值;如果为 False
,只要有 NaN
存在,结果就会返回 NaN
。numeric_only:
bool
,可选,默认为 False
True
,只对数字类型数据进行操作,非数字类型的列将被忽略。DataFrame
进行操作,返回一个 Series
,其中包含最小值对应的索引。Series
进行操作,直接返回最小值对应的索引。idxmin()
常用于数据分析过程中,以找到某列或某行的最小值的位置。idxmin()
可以确定某些关键点,比如找到销售数据中销量最低的日期。s = pd.Series(data=[1, None, 4, 1],
index=['A', 'B', 'C', 'D'])
s
'''
A 1.0
B NaN
C 4.0
D 1.0
dtype: float64
'''
s.idxmin()
# 'A'
# 如果skipna为False,并且数据中有NA值,则函数返回nan。
s.idxmin(skipna=False)
# nan
考虑一个包含阿根廷食品消费的数据集。
df = pd.DataFrame({'consumption': [10.51, 103.11, 55.48],
'co2_emissions': [37.2, 19.66, 1712]},
index=['Pork', 'Wheat Products', 'Beef'])
df
'''
consumption co2_emissions
Pork 10.51 37.20
Wheat Products 103.11 19.66
Beef 55.48 1712.00
'''
默认情况下,它返回每列中最小值的索引。
df.idxmin()
'''
consumption Pork
co2_emissions Wheat Products
dtype: object
'''
要返回每行中最小值的索引,请使用axis=“columns”。
df.idxmin(axis="columns")
'''
Pork consumption
Wheat Products co2_emissions
Beef consumption
dtype: object
'''
例1: 寻找列方向的最小值索引
import pandas as pd
# 构造示例数据
data = {
'A': [3, 1, 4],
'B': [2, 6, 5],
'C': [7, 8, 9]
}
df = pd.DataFrame(data)
# 寻找每列最小值的索引
result = df.idxmin(axis=0)
print(df)
print(result)
输出:
'''
A B C
0 3 2 7
1 1 6 8
2 4 5 9
A 1
B 0
C 0
dtype: int64
'''
在这个例子中,idxmin(axis=0)
返回的是每列中最小值的行索引。比如,A
列的最小值 1
出现在第 1
行,B
列的最小值 2
出现在第 0
行,C
列的最小值 7
也出现在第 0
行。
例2: 寻找行方向的最小值索引
import pandas as pd
# 构造示例数据
data = {
'A': [3, 1, 4],
'B': [2, 6, 5],
'C': [7, 8, 9]
}
df = pd.DataFrame(data)
# 寻找每行最小值的索引
result = df.idxmin(axis=1)
print(df)
print(result)
输出:
'''
A B C
0 3 2 7
1 1 6 8
2 4 5 9
0 B
1 A
2 A
dtype: object
'''
在这个例子中,idxmin(axis=1)
返回的是每行中最小值的列名。比如,第一行的最小值 2
出现在列 B
,第二行的最小值 1
出现在列 A
,第三行的最小值 4
也出现在列 A
。
例3: 使用 skipna=False
处理缺失值
import pandas as pd
import numpy as np
# 构造示例数据
data = {
'A': [np.nan, 2, 3],
'B': [1, np.nan, 5],
'C': [4, 6, np.nan]
}
df = pd.DataFrame(data)
# 使用 skipna=False
result = df.idxmin(axis=0, skipna=False)
print(df)
print(result)
输出:
'''
A B C
0 NaN 1.0 4.0
1 2.0 NaN 6.0
2 3.0 5.0 NaN
A 2
B 2
C 0
dtype: int64
'''
在这个例子中,skipna=False
意味着如果列中存在 NaN
,结果将会是 NaN
的索引。但是因为在列 A
和 B
中存在 NaN
,结果返回了最后一个非缺失值的索引。
idxmin()
方法是确定 DataFrame 或 Series 中最小值的位置的有用工具。它在数据分析、数据清洗和可视化准备过程中非常有效。通过调整参数,你可以灵活地处理包含缺失值的数据或指定需要操作的数据类型。
更新时间:2024-08-09 09:01:16 标签:pandas python 最小值 索引