Pandas.DataFrame.max() 最大值 详解 含代码 含测试数据集 随Pandas版本持续更新

发布时间:2024年01月23日

关于Pandas版本: 本文基于 pandas2.2.0 编写。

关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。

传送门: Pandas API参考目录

传送门: Pandas 版本更新及新特性

传送门: Pandas 由浅入深系列教程

Pandas.DataFrame.max()

Pandas.DataFrame.max 方法用于返回指定轴向的最大值。

语法:

DataFrame.max(axis=0, skipna=True, numeric_only=False, **kwargs)

返回值:

  • Series or scalar

    • 输入的数据是单行或单列,则返回 scalar;
    • 输入的数据是多行或多列,则返回 Series

参数说明:

axis 指定计算方向(行或列)

  • axis : {0 or ‘index’, 1 or ‘columns’}, default 0

    axis 参数,用于指定计算方向,即按行计算或按列计算最大值:

    • 如果是 Series 此参数无效,将始终保持 axis=0,即计算整列的最大值。例1
    • 如果是 DataFrame 默认为 axis=0 即计算每一列的最大值。并有以下参值可选:
      • 0 or ‘index’: 计算每列的最大值。 例2-5
      • 1 or ‘columns’: 计算每行的最大值。例2-6
      • None: 计算所有值的最大值,这相当于把 DataFrame 的所有值展平后求最大值: df.max(axis=None) 等效于 max(df.values.raravel())
      • ?? 注意 :

        整行或整列,可以都是字符串类型的数据,字符串支持求最大值:例2

        • 字符串类型的行或列,不能存在缺失值,会报错!TypeError例2-2
        • 字符串类型,如果和数值类型的数据混在一起,会报错!TypeError 例2-3
        • axis=None 时, DataFrame 的所有值的数据类型必须是相同的,要么都是字符串类型的,要么都是数值类型的,否则会报错! TypeError 例2-4

    ? 新增于 Pandas 2.0.0 : axis 参数,新增于Pandas 2.0.0 版本。

skipna 忽略缺失值

  • skipna : bool, default False >

    skipna 参数,用于指定求最大值的时候是否忽略缺失值:

    • False: 不忽略,[缺失值] 在求最大值的时候,会被解析为浮点数 float。当字符串和缺失值混合时,会报错!TypeError例2-2
    • True: 忽略缺失值。

    ?? 注意 :

    如果整行或整列,都是缺失值,那么最大值结果也是缺失值。 例3

numeric_only 排除非纯数值的行或列

  • numeric_only : bool, default False

    numeric_only 参数,用于控制是否 排除非纯数值的行或列:

    • False: 不排除。
    • True: 只对纯数值型的行或列计算最大值。例4

**kwargs 关键字参数

  • kwargs
    kwargs 参数,是为了保持与 Numpy 的兼容性而保留的参数,一般不需要传递任何内容。

相关方法:

?? 相关方法


示例:

测试文件下载:

本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。

若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

测试文件下载位置.png

测试文件下载位置

例1:如果是 Series 始终保持 axis=0,即计算整列的最大值。

import numpy as np
import pandas as pd

s = pd.Series([24.0, np.nan, 21.0, 33, 26], name="age")
s.max()
33.0

例2:整行或整列,可以都是字符串类型的数据,字符串支持求最大值。但是,如果和数值类型的数据混在一起,会报错!

例2-1、全是字符串是可以求最大值的
import numpy as np
import pandas as pd

s = pd.Series(["一", "二", "你"])
s.max()
'你'

例2-2、字符串类型的行、列如果存在缺失值NaN) 会报错
import numpy as np
import pandas as pd

s = pd.Series(["一", "二", np.nan, "你"])
s.max()

在这里插入图片描述

例2-3、字符串类型,如果和数值类型的数据混在一起,会报错!
import numpy as np
import pandas as pd

s = pd.Series(["一", "二", 1, "你"])
s.max()

在这里插入图片描述

例2-4、当 axis=None 时, DataFrame 的所有值的数据类型必须是相同的,要么都是字符串类型的,要么都是数值类型的,否则会报错!
import numpy as np
import pandas as pd

df = pd.DataFrame(
    {
        "Person": ["John", "Myla", "Lewis", "John", "Myla"],
        "Age": [24.0, 2, 21.0, 33, 26],
        "Single": [False, True, True, True, False],
    }
)

df.max(axis=None)

在这里插入图片描述

例2-5、求 DataFrame 每列的最大值
import numpy as np
import pandas as pd

df = pd.DataFrame(
    {
        "Person": ["John", "Myla", "Lewis", "John", "Myla"],
        "Age": [24.0, 2, 21.0, 33, 26],
        "Single": [False, True, True, True, False],
    }
)

# 应返回的是Series,为了方便观察,使用.to_frame(),显式为表格形式
df.max().to_frame()
0
PersonMyla
Age33.0
SingleTrue

例2-6、求 DataFrame 每行的最大值
import numpy as np
import pandas as pd

df = pd.DataFrame(
    {"A": [28, "Lewis", True], "B": [24.0, "John", False], "C": [30, "Myla", True]}
)

# 应返回的是Series,为了方便观察,使用.to_frame(),显式为表格形式
df.max(axis=1).to_frame()
0
030
1Myla
2True

例3:如果整行或整列,都是缺失值,那么最大值结果也是缺失值。

import numpy as np
import pandas as pd

df = pd.DataFrame(
    {"A": [np.nan, np.nan]},
)

# 应返回的是Series,为了方便观察,使用.to_frame(),显式为表格形式
df.max(axis=0).to_frame()
0
ANaN

例4:numeric_only=True 只对数值类型的列求最大值

df = pd.DataFrame({"A": [0.5,0.2], "B": ["a",0.7], "C": [True,0.1]})

df.min(axis=0, numeric_only=True)

# ... A    0.5
# ... dtype: float64

B列由于是数字+字符串,所以没有被计算最小值。 C列布尔值和浮点数混用,也没有被计算最小值

文章来源:https://blog.csdn.net/mingqinsky/article/details/135722058
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。