【Pandas】pandas DataFrame product

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() 完全等价,只是更正式一点的名字。


🧾 参数说明:
参数类型默认值描述
axisint 或 str0定义计算方向:
- 0'index':按列计算乘积
- 1'columns':按行计算乘积
skipnaboolTrue是否跳过 NaN 值。若为 True,则忽略 NaN;若为 False,含 NaN 的列/行结果也为 NaN。
numeric_onlyboolFalse是否只考虑数值类型(如 int、float),忽略布尔、字符串等非数值列
min_countint0需要参与运算的最小非空值数量。如果非空值数量小于该值,则结果为 NaN
**kwargsdict其他可选参数

📊 返回值
  • 返回一个 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,只对 AC 进行乘积计算

⚠️ 注意事项
  • 只适用于数值型列(int、float)
  • 包含 0 的列会返回 0
  • 若某列全为 NaN,且 skipna=False,则结果为 NaN
  • 支持使用 min_count 控制是否允许少量非空值参与计算
  • 不会影响原始 DataFrame,而是返回新对象

🎯 适用场景
场景描述
金融分析计算复利收益、投资回报率等
特征工程构造新特征,如“历史乘积”
统计分析分析多个变量相乘后的结果
异常检测检查乘积是否明显偏离正常范围

📋 总结
特性描述
功能计算 DataFrame 每列或每行元素的乘积
默认行为按列计算,跳过 NaN,处理所有列
是否修改原数据否,返回新 Series
适用类型数值型列(int、float)
输出类型Series,索引为列名(axis=0)或行索引(axis=1

product() 是一个非常实用的方法,适合用于数据分析、特征构造、模型评估等任务,尤其是在需要关注多个变量相乘影响的场景中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuweidong0802

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值