📜  Python|熊猫索引.max()(1)

📅  最后修改于: 2023-12-03 14:46:31.538000             🧑  作者: Mango

Python | 熊猫索引.max()

简介

在 Pandas 中,数据可以通过索引进行访问和操作。索引也可以用于从数据集中选择特定行或列。在 Pandas 中,可以使用 .max() 方法返回数据的最大值,该方法是一个熊猫索引的一部分。

语法

Pandas 中的熊猫索引.max() 方法的语法如下:

dataframe.max(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)

参数说明:

  • axis:int 或 str,选填参数,默认是0,用于确定从哪个轴上找最大值,axis=0 表示按列,axis=1 表示按行。
  • skipna:bool,选填参数,默认是True,表示是否在查找最大值时忽略 NaN 值。
  • level:int 或 str,选填参数,默认为 None,表示按照某个特定的层级进行最大值查找。
  • numeric_only:bool,选填参数,默认是 False,表示仅对数值列进行最大值查找,如果参数值为 True,则仅计算数值列。
  • **kwargs:字典类型,选填参数,表示传递给 numpy.nanmax 函数的额外关键字参数。
示例
按列查找最大值

下面的示例将演示如何使用 Pandas 中的 .max() 方法按列查找数据集中的最大值。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'math': [82, 85, 89, 75],
        'chemistry': [73, 91, 73, 88],
        'physics': [92, 75, 86, 81]}

df = pd.DataFrame(data)

max_values = df.max()

print(max_values)

# Output:
# name          David
# math             89
# chemistry        91
# physics          92
# dtype: object

在上面的示例中,我们首先创建一个字典 data,其中包含学生的姓名、数学分数、化学分数和物理分数。然后,我们使用这个字典创建一个数据帧 df。

接下来,我们使用 df.max() 方法按列查找数据集中的最大值。堆栈表示中,'' name`` 列包含文本数据,因此 max() 方法返回 David 作为 name 列的最大值。

数值列中包含数值数据,因此这个方法将返回 math、chemistry 和 physics 列的最大值。

按行查找最大值

下面的示例将演示如何使用 Pandas 中的 .max() 方法按行查找数据集中的最大值。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'math': [82, 85, 89, 75],
        'chemistry': [73, 91, 73, 88],
        'physics': [92, 75, 86, 81]}

df = pd.DataFrame(data)

max_values = df.max(axis=1)

print(max_values)

# Output:
# 0    92
# 1    91
# 2    89
# 3    88
# dtype: int64

在上面的示例中,我们使用相同的数据集创建 df 数据帧。然后,我们使用 df.max(axis=1) 按行查找数据集中的最大值。

在上面的输出中,Pandas 返回了一个包含每行数据的最大值的 Series 对象。

忽略 NaN 值

在下面的示例中,我们将演示如何在查找最大值时忽略 NaN 值。

import pandas as pd
import numpy as np

data = {'a': [1, 2, np.nan, 4, 5],
        'b': [6, 7, 8, np.nan, 10],
        'c': [11, 12, 13, 14, np.nan]}

df = pd.DataFrame(data)

max_values = df.max(skipna=True)

print(max_values)

# Output:
# a     5.0
# b    10.0
# c    14.0
# dtype: float64

在上面的示例中,我们创建一个包含 NaN 值的数据帧。然后我们使用 skipna=True 参数,告诉 .max() 方法忽略 NaN 值。

使用 level 参数

在下面的示例中,我们将演示如何使用 level 参数在使用层次索引时查找最大值。

import pandas as pd

index = pd.MultiIndex.from_tuples([('A', 'a'), ('A', 'b'),
                                   ('B', 'a'), ('B', 'b')])

data = pd.DataFrame({'X': [11, 12, 13, 14],
                     'Y': [20, 21, 22, 23]}, index=index)

max_values = data.max(level=1)

print(max_values)

# Output:
#      X   Y
# a  13  22
# b  14  23

在上面的示例中,我们创建了一个两级索引 index,并使用这个索引创建了一个数据帧 data。然后,我们使用 level=1 参数来寻找第二级索引上的最大值。

在输出中,我们可以看到 Pandas 创建了一个新的数据帧,其中包含了每个一级索引的第二级索引上的最大值。

使用 numeric_only 参数

在下面的示例中,将演示如何使用 numeric_only 参数计算数值列的最大值。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'math': [82, 85, 89, 75],
        'chemistry': [73, 91, 73, 88],
        'physics': [92, 75, 86, 81]}

df = pd.DataFrame(data)

max_values = df.max(numeric_only=True)

print(max_values)

# Output:
# math         89
# chemistry    91
# physics      92
# dtype: int64

在上面的示例中,我们使用相同的数据集创建 df 数据帧。然后,我们使用 numeric_only=True 参数,告诉 .max() 方法仅计算数值列。

在输出中,我们可以看到 Pandas 只返回数值列的最大值。如果我们没有使用 numeric_only=True 参数,输出将包含 name 列的最大值。