Pandas.DataFrame.product() 乘积(累乘积) 详解 含代码 含测试数据集 随Pandas版本持续更新

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

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

传送门: Pandas API参考目录

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

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

本节目录

  • Pandas.DataFrame.product()
    • 计算公式:
    • 语法:
    • 返回值:
    • 参数说明:
      • axis 指定计算方向(行或列)
      • skipna 忽略缺失值
      • numeric_only 排除非纯数值的行或列
      • min_count 有效数值数量
      • **kwargs
    • 相关方法:
    • 示例:
      • 例1:如果是 `Series` 始终保持 `axis=0`,即计算整列的乘积。
      • 例2、求 `DataFrame` 每列的乘积
      • 例3、求 `DataFrame` 每行的乘积
      • 例4:如果整行或整列,都是缺失值,那么乘积是1,因为在DataFrame.product方法中,缺失值被解析为1.0。
      • 例5:`numeric_only=True` 排除非数值类型的列。
      • 例6:非缺失值数量,小于 `min_count` ,则结果为 `nan`

Pandas.DataFrame.product()

Pandas.DataFrame.product 方法用于返回行或列的所有元素的乘积(累乘积)

  • Pandas.DataFrame.productpandas.DataFrame.prod 效果一致。
  • Pandas.DataFrame.prodpandas.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 即计算每一列的乘积。并有以下参值可选:
      • 0 or ‘index’: 计算每列的乘积。 例2
      • 1 or ‘columns’: 计算每行的乘积。例3

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

skipna 忽略缺失值

  • skipna : bool, default False >

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

    • False: 不忽略,缺失值 在求乘积的时候会被解析为浮点数 float 1.0例4
    • True: 忽略缺失值。

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 兼容而保留的参数,一般不需要使用。

相关方法:

➡️ 相关方法


  • Series.sum

    求和(累和)

  • Series.min

    最小值

  • Series.max

    最大值

  • Series.idxmin

    最小值索引

  • Series.idxmax

    最大值索引

  • DataFrame.sum

    求和(累和)

  • DataFrame.min

    最小值

  • DataFrame.max

    最大值

  • DataFrame.idxmin

    最小值索引

  • DataFrame.idxmax

    最大值索引

示例:

测试文件下载:

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

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

测试文件下载位置.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.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/350148.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

让B端管理软件既美观又实用的解决方案来了

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 让B端管理软件既美观又实用的解决方案来了 在当今数字化时代,B端管理软件已…

Docker容器部署OpenCV,打造高效可移植的计算机视觉开发环境

推荐 海鲸AI-ChatGPT4.0国内站点:https://www.atalk-ai.com 前言 在计算机视觉领域,快速部署和测试算法是研究和开发的关键。OpenCV作为一个强大的开源计算机视觉库,广泛应用于各种图像处理和视频分析任务。然而,配置OpenCV环境可…

计算机毕业设计 | SpringBoot 求职招聘管理系统(附源码)

1,绪论 1.1 开发背景 高学历人群是网络求职者的主体,且结构趋向固定。而在疫情肆虐的今日,线上招聘成了越来越多企业和个人选择的方式。在疫情期间线下招聘转为线上招聘,是疫情防控的需要。不能否定的是新的招聘模式的出现一定会…

智慧应急消防柜的作用

在现代社会,科技的不断进步带来了许多便利与改变。智能化的产品不仅给我们的生活带来了便捷,也让我们对各个领域的发展有了更高的期待。而在这种场景下,智慧应急消防柜作为智慧城市新型基础设施的必备品,正逐渐受到更多关注。 智能…

《游戏-03_3D-开发》之—新输入系统人物移动攻击连击

本次修改unity的新输入输出系统。本次修改unity需要重启,请先保存项目, 点击加号起名为MyCtrl, 点击加号设置为一轴的, 继续设置W键, 保存 生成自动脚本, 修改MyPlayer代码: using UnityEngine;…

设计模式二(工厂模式)

本质:实例化对象不用new,用工厂代替,实现了创建者和调用者分离 满足: 开闭原则:对拓展开放,对修改关闭 依赖倒置原则:要针对接口编程 迪米特原则:最少了解原则,只与自己直…

DDPM的一点笔记

1 Title Denoising Diffusion Probabilistic Models(Jonathan Ho、Ajay Jain、Pieter Abbeel) 2 Conclusion This paper present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models insp…

【Qt】—— Qt开发环境的搭建

目录 (一)Qt的开发⼯具概述 1.1 Qt Creator 1.2 Visual Studio 1.3 Eclipse (二)Qt SDK的下载和安装 2.1 QtSDK的下载 2.2 QtSDK的安装 2.3 验证QtSDK安装是否成功 2.4 Qt环境变量配置 (一)Qt的…

yolov8 opencv dnn部署 github代码

源码地址 本人使用的opencv c github代码,代码作者非本人 实现推理源码中作者的yolov8s.onnx 推理条件 windows 10 Visual Studio 2019 Nvidia GeForce GTX 1070 opencv4.7.0 (opencv4.5.5在别的地方看到不支持yolov8的推理,所以只使用opencv4.7.0) c部署 先将…

一、防御保护---信息安全概述

一、网络安全防御---信息安全概述 1.信息安全现状及挑战1.1 网络空间安全市场在中国,潜力无穷1.2 数字化时代威胁升级1.3 传统安全防护逐步失效1.4 安全风险能见度不足1.5 缺乏自动化防御手段1.6 网络安全监管标准愈发严苛 2.信息安全概述2.1 简介2.2 常见的网络安全…

分币不花,K哥带你白嫖海外代理 ip!

前言 近来,国内的数据采集环境越来越严峻,不是“非法入侵计算机信息系统”,就是“侵犯公民个人隐私信息”,一个帽子砸下来,直接就“包吃包住”,推荐阅读一下 【K哥爬虫普法专栏】。虽然大伙常说“搏一搏单…

weak_ptr 与 一个难发现的错误(循环依赖问题)笔记

推荐B站视频:7.weak_ptr与一个非常难发现的错误_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL/?p7&spm_id_frompageDriver&vd_sourcea934d7fc6f47698a29dac90a922ba5a3一、weak_ptr weak_ptr并不拥有所有权并不能调用 -> 和 解引…

【MySQL】如何使用图形化界面DataGrip操作数据库

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-W5JDg0WA1tjEP66Y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

uniapp Android 离线打包之未配置appkey或配置错误

1、去官网申请appKey: 申请Appkey 2、项目中使用appKey: <meta-dataandroid:name"dcloud_appkey"android:value"794534204bbae06989........" />3、参考 官方教程&#xff0c;修改配置&#xff1a; 配置教程 注意&#xff1a; 本地的appId 和 官…

如何解决Flutter应用程序的兼容性问题

随着移动应用开发领域的不断发展&#xff0c;Flutter作为一种跨平台框架&#xff0c;受到了越来越多开发者的青睐。要确保Flutter应用程序能够在不同的设备和操作系统上稳定运行&#xff0c;并提供一致的用户体验&#xff0c;我们需要重视应用程序的兼容性问题。下面将简单的介…

【代码随想录-数组】有序数组的平方

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

HTML-表单

表单 概念&#xff1a;一个包含交互的区域&#xff0c;用于收集用户提供的数据。 1.基本结构 示例代码&#xff1a; <form action"https://www.baidu.com/s" target"_blank" method"get"><input type"text" name"wd&q…

独立站怎么建设对seo好?

现如今市面上就有不少开源的建站程序可供挑选&#xff0c;哪怕你不懂技术&#xff0c;不懂代码&#xff0c;也能建自己的独立站&#xff0c;效果比不少所谓的用自己技术开发的站都要好&#xff0c;本身做一个网站不难&#xff0c;但你做网站的目的是什么&#xff1f;是为了在搜…

ctf-idea调试jar包

0.拿到jar包并解压 进入解压出来的目录,然后以该目录打开项目 1.设置maven 设不设置都行 2.添加依赖 添加两个依赖, boot-inf下的 classes和lib 3.配置调试器 添加 remote jvm debug 1.根据jdk版本选择调试参数 2.选择module classpath为解压后的文件夹名 如图,运行jar包的…

代码随想录Day31 | 贪心算法 455.分发饼干 376. 摆动序列 53. 最大子序和

代码随想录Day31 | 贪心算法 455.分发饼干 376. 摆动序列 53. 最大子序和 贪心算法455.分发饼干376.摆动序列53.最大子序和 贪心算法 局部最佳 --> 全局最佳 刷题或者面试的时候&#xff0c;手动模拟一下感觉可以局部最优推出整体最优&#xff0c;而且想不到反例&#xff0…