关于Pandas版本: 本文基于 pandas2.2.0 编写。
关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。
传送门: Pandas API参考目录
传送门: Pandas 版本更新及新特性
传送门: Pandas 由浅入深系列教程
Pandas.DataFrame.product()
Pandas.DataFrame.product 方法用于返回行或列的所有元素的乘积
Pandas.DataFrame.product和pandas.DataFrame.prod效果一致。Pandas.DataFrame.prod是pandas.DataFrame.product的简化缩写。
计算公式:
- 公式 :
∏ i = 1 n a i \prod_{i=1}^{n} a_i ∏i=1nai
下标 i i i 表示起始位置,上标 n n n 表示终止位置。, a i a_i ai 表示被乘的项。
语法:
DataFrame.product(axis=0, skipna=True, numeric_only=False, min_count=0, **kwargs)
返回值:
- Series or scalar
参数说明:
axis 指定计算方向(行或列)
-
axis : {index (0), columns (1)
axis参数,用于指定计算方向,即按行计算或按列计算乘积:⚠️ 注意 :
axis=None已被标记为弃用,在未来的版本,将使用新的方法实现。- 如果是
Series此参数无效,将始终保持axis=0,即计算整列的乘积。例1 - 如果是
DataFrame默认为axis=0即计算每一列的乘积。并有以下参值可选:
✅ 新增于 Pandas 2.0.0 :
axis参数,新增于Pandas 2.0.0 版本。 - 如果是
skipna 忽略缺失值
-
skipna : bool, default False >
skipna参数,用于指定求乘积的时候是否忽略缺失值:
numeric_only 排除非纯数值的行或列
-
numeric_only : bool, default False
numeric_only参数,用于控制是否 排除非纯数值的行或列:- False: 不排除。
- True: 只对纯数值型的行或列计算乘积。例5
min_count 有效数值数量
-
min_count : int, default 0
min_count参数,用于指定执行操作所需的有效值数量。如果存在的非NA值少于min_count,则结果将为NA。例6
**kwargs
-
**kwargs :
用于保持和
numpy兼容而保留的参数,一般不需要使用。
相关方法:
➡️ 相关方法
求和
最小值
最大值
最小值索引
最大值索引
求和
最小值
最大值
最小值索引
最大值索引
示例:
测试文件下载:
本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。
若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

例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.product()
432432.0
例2、求 DataFrame 每列的乘积
import numpy as np
import pandas as pd
df = pd.DataFrame({'person_id': [0, 1, 2, 3],
'age': [21, 25, 62, 43],
'height': [1.61, 1.87, 1.49, 2.01]}
)
df.product()
person_id 0.000000e+00
age 1.399650e+06
height 9.016745e+00
dtype: float64
例3、求 DataFrame 每行的乘积
import numpy as np
import pandas as pd
df = pd.DataFrame({'person_id': [0, 1, 2, 3],
'age': [21, 25, 62, 43],
'height': [1.61, 1.87, 1.49, 2.01]}
).set_index('person_id')
df.product(axis=1)
0 0.00
1 46.75
2 184.76
3 259.29
dtype: float64
例4:如果整行或整列,都是缺失值,那么乘积是1,因为在DataFrame.product方法中,缺失值被解析为1.0。
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [np.NaN,np.NaN]})
df.product()
A 1.0
dtype: float64
B列由于是数字+字符串,所以没有被计算最小值。 C列布尔值和浮点数混用,也没有被计算最小值
例5:numeric_only=True 排除非数值类型的列。
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [0.5,4], "B": ["a","a"], "C": [True,True]})
df.product(numeric_only=True)
A 2.0
C 1.0
dtype: float64
B列由于是字符串,所以没有被计算乘积。
例6:非缺失值数量,小于 min_count ,则结果为 nan
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [0.5,4], "B": ["a","a"], "C": [True,True]})
df.product(numeric_only=True, min_count=3)
A NaN
C NaN
dtype: float64
观察上面的计算结果,A列因为只有两个有效值,所以返回了 NaN
本文详细介绍了Pandas库中的DataFrame.product()函数,包括其计算公式、语法、参数如axis、skipna、numeric_only和min_count的作用,以及提供多个示例来演示如何在实际应用中使用该方法。
8497

被折叠的 条评论
为什么被折叠?



