Pandas2.2 DataFrame
Computations descriptive stats
方法 | 描述 |
---|---|
DataFrame.abs() | 用于返回 DataFrame 中每个元素的绝对值 |
DataFrame.all([axis, bool_only, skipna]) | 用于判断 DataFrame 中是否所有元素在指定轴上都为 True |
DataFrame.any(*[, axis, bool_only, skipna]) | 用于判断 DataFrame 中是否至少有一个元素在指定轴上为 True |
DataFrame.clip([lower, upper, axis, inplace]) | 用于截断(限制)DataFrame 中的数值 |
DataFrame.corr([method, min_periods, …]) | 用于计算 DataFrame 中各列之间的相关系数矩阵(Correlation Matrix) |
DataFrame.corrwith(other[, axis, drop, …]) | 用于计算当前 DataFrame 的每一列(或行)与另一个 Series 或 DataFrame 中对应列的相关系数 |
DataFrame.count([axis, numeric_only]) | 用于统计 DataFrame 中每列或每行的非空(非 NaN)元素数量 |
DataFrame.cov([min_periods, ddof, numeric_only]) | 用于计算 DataFrame 中每对列之间的协方差 |
DataFrame.cummax([axis, skipna]) | 用于计算 DataFrame 中每列或每行的累计最大值(cumulative maximum) |
DataFrame.cummin([axis, skipna]) | 用于计算 DataFrame 中每列或每行的累计最小值(cumulative minimum) |
DataFrame.cumprod([axis, skipna]) | 用于计算 DataFrame 中每列或每行的累计乘积(cumulative product) |
DataFrame.cumsum([axis, skipna]) | 用于计算 DataFrame 中每列或每行的累计和(cumulative sum) |
DataFrame.describe([percentiles, include, …]) | 用于快速生成数据集的统计摘要(summary statistics) |
DataFrame.diff([periods, axis]) | 用于计算 DataFrame 中相邻行或列之间的差值(差分) |
DataFrame.eval(expr, *[, inplace]) | 用于在 DataFrame 上下文中高效地执行字符串形式的表达式运算 |
DataFrame.kurt([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的峰度(Kurtosis) |
DataFrame.kurtosis([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的峰度(Kurtosis) |
DataFrame.max([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的最大值(maximum) |
DataFrame.mean([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的平均值(mean) |
DataFrame.median([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的中位数(median) |
DataFrame.min([axis, skipna, numeric_only]) | 用于计算 DataFrame 中每列或每行的最小值(minimum) |
DataFrame.mode([axis, numeric_only, dropna]) | 用于查找 众数(出现频率最高的值) 的方法 |
DataFrame.pct_change([periods, fill_method, …]) | 用于计算 百分比变化 的方法 |
DataFrame.prod([axis, skipna, numeric_only, …]) | 用于计算 每列或每行元素的乘积 的方法 |
DataFrame.product([axis, skipna, …]) | 用于计算 DataFrame 中每列或每行所有元素的乘积 |
pandas.DataFrame.product()
pandas.DataFrame.product()
是 pandas.DataFrame.prod()
的别名,功能完全一致,用于计算 DataFrame 中每列或每行所有元素的乘积。它返回一个 Series
,表示每一列(或每一行)中所有元素相乘的结果。
📌 方法签名:
DataFrame.product(axis=0, skipna=True, numeric_only=False, min_count=0, **kwargs)
✅ 说明:
product()
与prod()
完全等价,只是更正式一点的名字。
🧾 参数说明:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
axis | int 或 str | 0 | 定义计算方向: - 0 或 'index' :按列计算乘积- 1 或 'columns' :按行计算乘积 |
skipna | bool | True | 是否跳过 NaN 值。若为 True ,则忽略 NaN;若为 False ,含 NaN 的列/行结果也为 NaN。 |
numeric_only | bool | False | 是否只考虑数值类型(如 int、float),忽略布尔、字符串等非数值列 |
min_count | int | 0 | 需要参与运算的最小非空值数量。如果非空值数量小于该值,则结果为 NaN |
**kwargs | dict | 无 | 其他可选参数 |
📊 返回值
- 返回一个
Series
,表示每列(或每行)所有元素的乘积。 - 如果某列/行中没有足够多的非空值(由
min_count
控制),则对应位置的结果为NaN
。
✅ 示例及结果
示例数据:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [10, 20, 30],
'C': [2, np.nan, 4],
'D': [5, 0, 10]
})
输出原始数据:
A B C D
0 1 10 2.0 5
1 2 20 NaN 0
2 3 30 4.0 10
示例 1:默认参数(按列计算乘积)
df.product()
结果:
A 6
B 6000
C 8
D 0
dtype: float64
解释:
- 列 A:
1 * 2 * 3 = 6
- 列 B:
10 * 20 * 30 = 6000
- 列 C:
2 * 4 = 8
(忽略 NaN) - 列 D:
5 * 0 * 10 = 0
示例 2:设置 skipna=False
(不忽略 NaN)
df.product(skipna=False)
结果:
A 6.0
B 6000.0
C NaN
D 0.0
dtype: float64
解释:
- 列 C 因为包含 NaN,所以结果为
NaN
示例 3:按行计算乘积 (axis=1
)
df.product(axis=1)
结果:
0 100.0
1 0.0
2 3600.0
dtype: float64
解释:
- 第0行:
1 * 10 * 2 * 5 = 100
- 第1行:
2 * 20 * NaN * 0 = 0
(因为 NaN 被跳过) - 第2行:
3 * 30 * 4 * 10 = 3600
示例 4:设置 min_count=2
(至少两个非空值才计算)
df[['C', 'D']].product(min_count=2)
结果:
C 8.0
D 0.0
dtype: float64
解释:
- 列 C 有两个非空值 → 计算成功
- 列 D 有三个非空值 → 计算成功
示例 5:设置 numeric_only=True
(仅数值列)
df_mixed = pd.DataFrame({
'A': [1, 2, 3],
'B': ['x', 'y', 'z'],
'C': [10.0, 20.0, 30.0]
})
df_mixed.product(numeric_only=True)
结果:
A 6.0
C 6000.0
dtype: float64
解释:
- 忽略字符串列
B
,只对A
和C
进行乘积计算
⚠️ 注意事项
- 只适用于数值型列(int、float)
- 包含
0
的列会返回0
- 若某列全为
NaN
,且skipna=False
,则结果为NaN
- 支持使用
min_count
控制是否允许少量非空值参与计算 - 不会影响原始 DataFrame,而是返回新对象
🎯 适用场景
场景 | 描述 |
---|---|
金融分析 | 计算复利收益、投资回报率等 |
特征工程 | 构造新特征,如“历史乘积” |
统计分析 | 分析多个变量相乘后的结果 |
异常检测 | 检查乘积是否明显偏离正常范围 |
📋 总结
特性 | 描述 |
---|---|
功能 | 计算 DataFrame 每列或每行元素的乘积 |
默认行为 | 按列计算,跳过 NaN,处理所有列 |
是否修改原数据 | 否,返回新 Series |
适用类型 | 数值型列(int、float) |
输出类型 | Series,索引为列名(axis=0 )或行索引(axis=1 ) |
product()
是一个非常实用的方法,适合用于数据分析、特征构造、模型评估等任务,尤其是在需要关注多个变量相乘影响的场景中。