Pandas.DataFrame.mode() 众数 详解 含代码 含测试数据集 随Pandas版本持续更新

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

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

传送门: Pandas API参考目录

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

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

本节目录

  • Pandas.DataFrame.mode()
    • 语法:
    • 返回值:
    • 参数说明:
      • axis 指定计算方向(行或列)
      • dropna 忽略缺失值
      • numeric_only 只计算纯数值类型的行或列
    • 相关方法:
    • 示例:
      • 例1:计算每列或每行的众数
      • 例2、求 `DataFrame` 每行的乘积
      • 例3:只计算数据类型是数值的行或列

Pandas.DataFrame.mode()

DataFrame.mode 方法用于返回行或列的众数

⚠️ 注意 :

某行某列出现次数最多的值就是众数,这个值可以是字符串类型的。

众数可以有多个。

所有元素出现的次数都一样,则这些元素都将作为众数返回。

数值相等的浮点数、整数,在求众数时,会被解析为相同的元素,例如1.0和1 在同行或同列出现,则被理解为数字1出现了2次。

缺失值占位: 指的是构建DataFrame 时,如果行或列不等长(元素数量不一致),缺失的位置,将以缺失值(Nan)代替。

语法:

DataFrame.mode(axis=0, numeric_only=False, dropna=True)

返回值:

  • DataFrame

    DataFrame 的形式返回每行或每列的众数。

    • 众数的数量不一致时,会以 缺失值(NaN) 占位。例1

参数说明:

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

  • axis : {index (0), columns (1)

    axis 参数,用于指定计算方向,即指定计算每行的众数,或计算没列的众数: 例1

    • 0 or ‘index’: 计算每列众数。
    • 1 or ‘columns’: 计算每行的众数。

dropna 忽略缺失值

  • dropna : bool, default True

    dropna 参数,用于控制是否在计算众数时忽略缺失值,默认 dropna=True 表示缺失值(Nan)参与众数计算:。例2

    • True: 示缺失值(Nan)参与众数计算(默认)。

      ⚠️ 注意:

      dropna=True 只是计算众数时,不在考虑缺失值(Nan)的数量,但是在结果中依然有可能存在缺失值(Nan)占位。

    • False: 示缺失值(Nan)参与众数计算。

      ⚠️ 注意:

      缺失值的众数,依然是缺失值(Nan)

numeric_only 只计算纯数值类型的行或列

  • numeric_only : bool, default False

    numeric_only 参数,用于控制是否 只计算纯数值类型的行或列:例3

    • False: 计算所有数据类型的行或列(默认)。
    • True: 只计算数值类型的行或列。

    ⚠️ 注意 :

    在众数计算时,整数、浮点数、布尔值、复数,都可以参与计算。

    复数类型的列,如果在返回的 DataFrame 中,需要缺失值(Nan)占位,将表示为 NaN+0.0j

相关方法:

➡️ 相关方法


  • Series.mode

    众数

  • Series.value_counts

    频数(元素数量计数)

  • DataFrame.value_counts

    频数(元素素数量计数)

示例:

测试文件下载:

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

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

测试文件下载位置.png

测试文件下载位置

例1:计算每列或每行的众数

例1-1、创建演示数据

import numpy as np
import pandas as pd

df = pd.DataFrame(
    [("bird", 2, 2), ("mammal", 4, 1), ("arthropod", 8, 0), ("bird", 2, np.nan)],
    index=("falcon", "horse", "spider", "ostrich"),
    columns=("species", "legs", "wings"),
)
df
specieslegswings
falconbird22.0
horsemammal41.0
spiderarthropod80.0
ostrichbird2NaN

例1-2、计算每列的众数,可以传递 axis=0 也可以保持默认(不传递axis参数)

df.mode()  # 等效于df.mode(axis=0)
specieslegswings
0bird2.00.0
1NaNNaN1.0
2NaNNaN2.0

注意观察 wings 列,由于返回了多个众数 ,其他两列的的结果里,用缺失值占位。

例1-2、计算每列的众数,传递 axis=1

df.mode(axis=1)
C:\Users\Administrator\AppData\Local\Temp\ipykernel_11456\1210916842.py:1: UserWarning: Unable to sort modes: '<' not supported between instances of 'int' and 'str'
  df.mode(axis=1)
012
falcon2NaNNaN
horsemammal4.01.0
spiderarthropod8.00.0
ostrichbird2.0NaN

注意观察结果,falcon行里的NaN,是占位缺失值,ostrich行的NaN,则是作为众数返回的NaN。当数据量比较大的时候,你可能将无法判断返回的NaN的具体属性。可以结合dropna参数,来控制计算众数时,是否包含缺失值。

C:\Users\Administrator\AppData\Local\Temp\ipykernel_11456\1210916842.py:1: UserWarning: Unable to sort modes: '<' not supported between instances of 'int' and 'str' df.mode(axis=1)

这个提示,并不影响结果的正确性,只是在告诉你,当前结果因为数据类型不同,无法排序。

例2、求 DataFrame 每行的乘积

例2-1、构建演示数据

import numpy as np
import pandas as pd

df2 = pd.DataFrame(
    [
        ("字符串1", 2, 2),
        ("字符串2", 4, 1),
        ("字符串1", 8, np.nan),
        ("字符串4", 2, np.nan),
    ],
    index=("第1行", "第2行", "第3行", "第4行"),
    columns=("第1列", "第2列", "第3列"),
)
df2
第1列第2列第3列
第1行字符串122.0
第2行字符串241.0
第3行字符串18NaN
第4行字符串42NaN

观察这个示例数据,如果对列求众数,默认情况下 dropna=True(表示缺失值不参与众数计算), 那么第1列众数是字符串1,第2列众数是2,第3列众数应该是 1.0和2.0,例如:

df2.mode()
第1列第2列第3列
0字符串12.01.0
1NaNNaN2.0

注意观察上面的结果,NaN 是确实占位,不是众数计算结果。

例2-3、当dropna=False , NaN将会参与到众数计算,例如:

df2.mode(dropna=False)
第1列第2列第3列
0字符串12NaN

注意观察结果,此时第3列的NaN,是众数结果,而不是占位。

例3:只计算数据类型是数值的行或列

例3-1,构建演示数据

import numpy as np
import pandas as pd

df3 = pd.DataFrame(
    [
        ("字符串1", 2, 2, True,1+2j),
        ("字符串2", 4, 1, True,1+2j),
        ("字符串1", 8, np.nan, False,1+2j),
        ("字符串4", 2, np.nan, True,1+3j),
    ],
    index=("第1行", "第2行", "第3行", "第4行"),
    columns=("字符串类型", "整数类型", "浮点数类型", "布尔类型",'复数类型'),
)
df3
字符串类型整数类型浮点数类型布尔类型复数类型
第1行字符串122.0True1.0+2.0j
第2行字符串241.0True1.0+2.0j
第3行字符串18NaNFalse1.0+2.0j
第4行字符串42NaNTrue1.0+3.0j

注意观察演示数据,浮点数类型这一列,建立数据的时候是整数,因为存在缺失值,导致数据累心被转为浮点数(因为缺失值在某些计算中,会被转为浮点类型的0.0)。

例3-2,只计算数值类型的列,并且不考虑缺失值的数量。

df3.mode(numeric_only=True,dropna=True)
整数类型浮点数类型布尔类型复数类型
02.01.0True1.0+2.0j
1NaN2.0NaNNaN+0.0j

注意观察计算结果,出现的NaN,都是占位型的缺失值。

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

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

相关文章

452. 用最少数量的箭引爆气球 - 力扣(LeetCode)

题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 …

34.基于51单片机的智能停车位计时收费系统设计

一、系统功能介绍&#xff1a; 本设计基于 RFID智能识别和高速的视频图像和存储比较相结合&#xff0c;通过计算机的图像处理和自动识别&#xff0c;对车辆进出停车场的收费、车牌识别和车位诱导等&#xff0c;以实现停车场全方位智能管理。 本设计是以AT89C51 型单片机为主控芯…

flutter-相关个人记录

1、flutter 安卓打包打包报错 flutter build apk -v --no-tree-shake-icons 2、获取华为指纹证书命令 keytool -list -v -keystore ***.jks 3、IOS项目中私有方法查找隐藏文件中 1、cd 项目目录地址 2、grep -r xerbla. "xerbla"为需要查找的关键字 3…

docker容器运维命令

文章目录 docker psdocker execdocker inspectdocker topdocker attachdocker waitdocker exportdocker importdocker portdocker cpdocker diffdocker renamedocker statsdocker update总结 docker ps 列出容器。 docker ps [OPTIONS]OPTIONS说明&#xff1a; -a :显示所有的…

【嵌入式学习】C++QT-Day3-C++基础

笔记 见我的博客&#xff1a;https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函…

HarmonyOS鸿蒙学习笔记(23)监听Wifi状态变化

监听Wifi状态变化 前言创建接收状态变化的Bean对象创建订阅者和订阅事件参考资料&#xff1a; 前言 本篇博文通过动态订阅公共事件来说明怎么使用HarmonyOS监听Wifi状态的变化。关于动态订阅公共事件的概念&#xff0c;官网有详细说明&#xff0c;再次就不在赘述。博文相关项目…

Python处理日期和时间库之arrow使用详解

概要 日期和时间处理是许多应用程序中的常见任务&#xff0c;但在 Python 中&#xff0c;标准库中的 datetime 模块有时可能会让这些任务变得复杂和繁琐。幸运的是&#xff0c;有一个名为 Arrow 的第三方库&#xff0c;它提供了简化日期和时间处理的功能&#xff0c;使其更加直…

KADB使用PXF连接KES验证

验证环境 KADB版本&#xff1a;Greenplum Database 6.0.0 build dev.V003R002C001B0181.d354cc9215 KES版本&#xff1a;KingbaseES V008R006C007B0012 Java版本&#xff1a;openjdk version "1.8.0_262" PXF部署 以下操作假设KADB和KES已经部署完成并且启动正常…

推荐几款便宜幻兽帕鲁(Palworld)联机服务专用服务器

幻兽帕鲁&#xff08;Palworld&#xff09;是一款多人在线游戏&#xff0c;为了获得更好的游戏体验&#xff0c;许多玩家会选择自行搭建游戏联机服务器&#xff0c;但是如何挑选价格合适、性能稳定的服务器成为一个难题&#xff0c;本文将为大家推荐几款便宜幻兽帕鲁联机服务专…

力扣经典题目:反转链表

1.题目分析&#xff1a;正常顺序为从一到五&#xff0c;但题目要求为从五到一&#xff0c;自然而然与头插法相联系。 2.此题得出解题方法&#xff1a;重现纠错法 3.观察下面的代码&#xff0c;找出问题&#xff1a; 反转链表的经典错误 王赫辰/c语言 - Gitee.com 看起来也…

基于Apache httpd为windows11搭建代理服务器

文章目录 一.概述二.检查电脑系统类型三.下载安装Apache Httpd四.代理服务配置五.代理服务安装六.报错解决方法七.测试是否运行成功7.1 本机测试7.2 局域网代理测试 八.设置特定ip可访问&#xff08;阻止其他ip访问&#xff09;九.参考文档 一.概述 出于某些原因&#xff0c;我…

32个Java面试必考点-08高并发架构基石-缓存

本课时介绍缓存相关的知识点以及 Memcache 和 Redis 这两个最常使用的缓存。重点学习以下三个方面的内容&#xff1a; 1.使用缓存时常遇到的典型问题&#xff1b; 2.Memcache 的内存结构&#xff1b; 3.Redis 相关的知识点以及 Redis 常用结构的实现。 缓存知识点 类型 缓…

大数据数据流分析和处理的工具pig,从入门到精通!

介绍&#xff1a;Pig是一种数据流语言和运行环境&#xff0c;用于处理和分析大数据。 Pig由两个主要部分构成&#xff1a; Pig Latin语言&#xff1a;这是一种用于描述数据流的高级语言&#xff0c;它允许用户以较为简洁的方式编写数据处理和转换任务。 Pig执行环境&#xff1a…

STM32 自学笔记 学习笔记 一

起源&#xff0c;A7,A9,M3&#xff0c;原来弄了A9的TQ2440&#xff0c;结果还得来重新熟悉下32函数JLINK使用SW方式&#xff0c;本来可以下载&#xff0c;但是一根线掉了重新上去&#xff0c;就出各种跟线无关问题&#xff0c;干脆把32断了重新接&#xff0c;结果就成功了&…

记录浏览器能打开github.com,android studio无法拉取github项目,并且ping github.com也拼不通的问题

问题&#xff1a; Android studio编译flutter工程突然碰上如下问题&#xff1a; 在浏览器打开该地址能正常打开&#xff0c;尝试ping&#xff1a; 解决方式 通过搜索&#xff0c;查到如下办法&#xff1a; 1、首先在ipaddress.com中查询github.com域名的固定ip地址&#xff…

vue常用指令(v-mode)

一、v-mode 指令 作用: 获取和设置表单元素的值(实现双向数据绑定) 双向数据绑定 单向绑定: 就是把Model绑定到View&#xff0c;当我们用JavaScript代码更新Model时&#xff0c;View就会自动更新。双向绑定: 用户更新了View&#xff0c;Model的数据也自动被更新了&#xff0c;…

Unity 命令模式(实例详解)

文章目录 示例1&#xff1a;基础命令类结构示例2&#xff1a;旋转对象命令示例3&#xff1a;增加道具命令示例4&#xff1a;切换场景命令示例5&#xff1a;播放音效命令 在Unity中使用命令模式&#xff08;Command Pattern&#xff09;是一种常见的设计模式&#xff0c;用于实现…

【C深度解剖】计算机数据删除与return关键字

简介&#xff1a;本系列博客为C深度解剖系列内容&#xff0c;以某个点为中心进行相关详细拓展 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

sql注入的学习

1.首先我们应该确定sql注入的类型 利用id1 and 11 和id1 and 12 判断是数字类型注入还是字符型注入&#xff0c;如果两者都可以正常显示界面&#xff0c;则为字符型注入&#xff0c;否则是数字型 两个都正常显示&#xff0c;所以为字符型注入&#xff08;也可以使用id2-1&…

漏洞原理反射型XSS漏洞

漏洞原理XSS漏洞 1 反射型XSS php基础链接 Web渗透编程语言基础-CSDN博客 正常思维 http://127.0.0.1/websec/day01/xss_reflect.php?name%E6%88%91%E6%98%AF%E8%B0%81 http://127.0.0.1/14_WEBSEC/DAY01/xss_reflect.php?name我是谁 黑客思维 http://127.0.0.1/websec…