Pandas.Series.describe() 统计学描述 详解 含代码 含测试数据集 随Pandas版本持续更新

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

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

传送门: Pandas API参考目录

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

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

本节目录

  • Pandas.Series.describe()
    • 语法:
    • 返回值:
    • 参数说明:
      • include 数据类型白名单
      • exclude 数据类型黑名单
      • percentiles 自定义百分位数
    • 相关方法:
    • 示例:
      • 例1:自定义百分位数
      • 例2:复数的统计描述
        • 例2-1、构建包含复数的Series
        • 例2-2、复数的统计描述,会引发报错

Pandas.Series.describe()

Pandas.Series.describe 用于生成 Series 的统计学描述。返回一个多行的统计表,每一行对应一个统计指标,有总数、平均数、标准差、最小值、四分位数、最大值等,

  • 参与统计描述的列,里面的 缺失值(NaN),会在计算时被排除

语法:

Series.describe(percentiles=None, include=None, exclude=None)

返回值:

  • Series or DataFrame

    调用 Series.describe 方法时,根据传入类型的不同,返回 SeriesDataFrame

参数说明:

include 数据类型白名单

  • include : ‘all’, list-like of dtypes or None (default), optional

    include 参数,用于指定哪种数据类型的列参与统计描述。如果某列的数据类型出现在白名单中,此列将参与统计描述。

    • 对于 Series 此参数无效。

exclude 数据类型黑名单

  • exclude : list-like of dtypes or None (default), optional,

    exclude 参数,用于指定要排除的数据类型白名单。如果某列的数据类型出现在黑名单中,此列将不会参与统计描述。

    • 对于 Series 此参数无效。

percentiles 自定义百分位数

  • percentiles : *list-like of numbers, optional

    percentiles 参数用于自定义 百分位数

    • list-like: 用 类似列表 传递自定义的 百分位数 ,列表里每个元素都应该介于0-1之间,默认状态下,百分数只会返回 [0.25, 0.5, 0.75] (即第1~3四分位数)。

    ⚠️ 注意 :

    你可以指定多个百分位数。例1

⚠️ 注意 :

  • 虽然 numpy.number 包含复数 np.complexfloating ,但是 Pandas.DataFrame.describe 只支持实数的计算,如果 DataFrame 存在复数,但是没有被排除,会引发报错 TypeError: a must be an array of real numbers 例2

  • 对于数值数据(numeric data),结果的索引将包括 countmeanstdminmax,以及 lower50upper 百分位数。默认情况下,lower 百分位数是 25upper 百分位数是 7550 百分位 数与 中位数 相同。

  • 对于对象数据(object data),例如字符串或时间戳,结果的索引将包括 countuniquetopfreqtop 是最常见的值,freq 是最常见值的频率。时间戳还包括第一个最后一个项。

  • 如果多个对象值具有最高计数,则计数和 top 的结果将从具有最高计数的值中任意选择。

  • 对于通过 Series 提供的混合数据类型(),默认情况下仅返回数值列的分析结果。如果 Series 仅包含对象(‘object’)和分类数据(‘category’)而没有任何数值列,则默认情况下将返回对对象(‘object’)和分类数据(‘category’)列的分析结果。如果提供了 include=‘all’ 作为选项,则结果将包括每种类型的属性的并集。

  • includeexclude 参数可用于限制要分析的 Series 中的列。在分析 Series 时,这些参数将被忽略。

相关方法:

➡️ 相关方法


  • DataFrame.count

    非空单元格计数

  • DataFrame.max

    最大值

  • DataFrame.min

    最小值

  • DataFrame.mean

    平均值

  • DataFrame.std

    样本标准差/总体标准差

  • DataFrame.select_dtypes

    根据数据类型筛选列

示例:

测试文件下载:

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

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

测试文件下载位置.png

测试文件下载位置

例1:自定义百分位数

import pandas as pd
import numpy as np
s = pd.Series(np.arange(1,10,1))s.describe(include=[np.number], percentiles=[0.1, 0.4, 0.7, 0.8, 0.85])
count    9.000000
mean     5.000000
std      2.738613
min      1.000000
10%      1.800000
40%      4.200000
50%      5.000000
70%      6.600000
80%      7.400000
85%      7.800000
max      9.000000
dtype: float64

例2:复数的统计描述

例2-1、构建包含复数的Series
import numpy as np
import pandas as pd# 构建演示数据
s = pd.Series([1 + 1j, 2 + 2j, 3 + 3j])s
0    1.0+1.0j
1    2.0+2.0j
2    3.0+3.0j
dtype: complex128

例2-2、复数的统计描述,会引发报错
s.describe()
D:\miniconda3\envs\python3.12\Lib\site-packages\numpy\core\_methods.py:49: ComplexWarning: Casting complex values to real discards the imaginary partreturn umr_sum(a, axis, dtype, out, keepdims, initial, where)
D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\nanops.py:944: RuntimeWarning: invalid value encountered in sqrtresult = np.sqrt(nanvar(values, axis=axis, skipna=skipna, ddof=ddof, mask=mask))---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)Cell In[59], line 1
----> 1 df.describe()File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\generic.py:11544, in NDFrame.describe(self, percentiles, include, exclude)11302 @final11303 def describe(11304     self,(...)11307     exclude=None,11308 ) -> Self:11309     """11310     Generate descriptive statistics.11311 (...)11542     max            NaN      3.011543     """
> 11544     return describe_ndframe(11545         obj=self,11546         include=include,11547         exclude=exclude,11548         percentiles=percentiles,11549     ).__finalize__(self, method="describe")File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\methods\describe.py:97, in describe_ndframe(obj, include, exclude, percentiles)90 else:91     describer = DataFrameDescriber(92         obj=cast("DataFrame", obj),93         include=include,94         exclude=exclude,95     )
---> 97 result = describer.describe(percentiles=percentiles)98 return cast(NDFrameT, result)File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\methods\describe.py:170, in DataFrameDescriber.describe(self, percentiles)168 for _, series in data.items():169     describe_func = select_describe_func(series)
--> 170     ldesc.append(describe_func(series, percentiles))172 col_names = reorder_columns(ldesc)173 d = concat(174     [x.reindex(col_names, copy=False) for x in ldesc],175     axis=1,176     sort=False,177 )File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\methods\describe.py:232, in describe_numeric_1d(series, percentiles)227 formatted_percentiles = format_percentiles(percentiles)229 stat_index = ["count", "mean", "std", "min"] + formatted_percentiles + ["max"]230 d = (231     [series.count(), series.mean(), series.std(), series.min()]
--> 232     + series.quantile(percentiles).tolist()233     + [series.max()]234 )235 # GH#48340 - always return float on non-complex numeric data236 dtype: DtypeObj | NoneFile D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\series.py:2769, in Series.quantile(self, q, interpolation)2765 # We dispatch to DataFrame so that core.internals only has to worry2766 #  about 2D cases.2767 df = self.to_frame()
-> 2769 result = df.quantile(q=q, interpolation=interpolation, numeric_only=False)2770 if result.ndim == 2:2771     result = result.iloc[:, 0]File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\frame.py:11831, in DataFrame.quantile(self, q, axis, numeric_only, interpolation, method)11827     raise ValueError(11828         f"Invalid method: {method}. Method must be in {valid_method}."11829     )11830 if method == "single":
> 11831     res = data._mgr.quantile(qs=q, interpolation=interpolation)11832 elif method == "table":11833     valid_interpolation = {"nearest", "lower", "higher"}File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\internals\managers.py:1508, in BlockManager.quantile(self, qs, interpolation)1504 new_axes = list(self.axes)1505 new_axes[1] = Index(qs, dtype=np.float64)1507 blocks = [
-> 1508     blk.quantile(qs=qs, interpolation=interpolation) for blk in self.blocks1509 ]1511 return type(self)(blocks, new_axes)File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\internals\blocks.py:1587, in Block.quantile(self, qs, interpolation)1584 assert self.ndim == 21585 assert is_list_like(qs)  # caller is responsible for this
-> 1587 result = quantile_compat(self.values, np.asarray(qs._values), interpolation)1588 # ensure_block_shape needed for cases where we start with EA and result1589 #  is ndarray, e.g. IntegerArray, SparseArray1590 result = ensure_block_shape(result, ndim=2)File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\array_algos\quantile.py:39, in quantile_compat(values, qs, interpolation)37     fill_value = na_value_for_dtype(values.dtype, compat=False)38     mask = isna(values)
---> 39     return quantile_with_mask(values, mask, fill_value, qs, interpolation)40 else:41     return values._quantile(qs, interpolation)File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\array_algos\quantile.py:97, in quantile_with_mask(values, mask, fill_value, qs, interpolation)95     result = np.repeat(flat, len(values)).reshape(len(values), len(qs))96 else:
---> 97     result = _nanpercentile(98         values,99         qs * 100.0,100         na_value=fill_value,101         mask=mask,102         interpolation=interpolation,103     )105     result = np.array(result, copy=False)106     result = result.TFile D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\array_algos\quantile.py:218, in _nanpercentile(values, qs, na_value, mask, interpolation)216     return result217 else:
--> 218     return np.percentile(219         values,220         qs,221         axis=1,222         # error: No overload variant of "percentile" matches argument types223         # "ndarray[Any, Any]", "ndarray[Any, dtype[floating[_64Bit]]]",224         # "int", "Dict[str, str]"  [call-overload]225         method=interpolation,  # type: ignore[call-overload]226     )File D:\miniconda3\envs\python3.12\Lib\site-packages\numpy\lib\function_base.py:4277, in percentile(a, q, axis, out, overwrite_input, method, keepdims, interpolation)4275 a = np.asanyarray(a)4276 if a.dtype.kind == "c":
-> 4277     raise TypeError("a must be an array of real numbers")4279 q = np.true_divide(q, 100)4280 q = asanyarray(q)  # undo any decay that the ufunc performed (see gh-13105)TypeError: a must be an array of real numbers

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java层序遍历二叉树

二叉树准备: public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) {this.val val;}TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.right right;} } 思路:我们需要创建一个队…

前后端分离,使用vue3整合SpringSecurity加JWT实现登录校验

前段时间写了一篇spring security的详细入门,但是没有联系实际。 所以这次在真实的项目中来演示一下怎样使用springsecurity来实现我们最常用的登录校验。本次演示使用现在市面上最常见的开发方式,前后端分离开发。前端使用vue3进行构建,用到…

算法每日一题: 分割数组的最大值 | 动归 | 分割数组 | 贪心+二分

Hello,大家好,我是星恒 呜呜呜,今天给大家带来的又是一道经典的动归难题。 题目:leetcode 410给定一个非负整数数组 nums 和一个整数 k ,你需要将这个数组分成 k_ 个非空的连续子数组。设计一个算法使得这 k _个子数组…

Mybatis 动态SQL(set)

我们先用XML的方式实现 : 把 id 为 13 的那一行的 username 改为 ip 创建一个接口 UserInfo2Mapper ,然后在接口中声明该方法 package com.example.mybatisdemo.mapper; import com.example.mybatisdemo.model.UserInfo; import org.apache.ibatis.annotations.*; import jav…

mybatis的缓存机制

视频教程_免费高速下载|百度网盘-分享无限制 (baidu.com) MyBatis 有一套灵活而强大的缓存机制,主要分为两级缓存:一级缓存(本地缓存)和二级缓存(全局缓存)。 一级缓存(本地缓存)&a…

【网络奇遇记】揭秘计算机网络性能指标:全面指南

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 速率1.1 数据量1.2 速率 二. 带宽三. 吞吐量四. 时延4.1 发送时延4.2 传播时延…

PCIe-6328 八口USB3.0图像采集卡:专为工业自动化和机器视觉设计

PCIe-6328一块8口USB 3.0主控卡,专为工业自动化和机器视觉相关应用设计。USB 3.0或称作高速USB,是一项新兴总线技术,10倍于USB2.0的传输速度,尤其适用于高速数据存储和图 像设备。 绝大多数现有USB 3.0卡兼用多个接口于一个USB 3…

5. 函数调用过程汇编分析

函数调用约定 __cdecl 调用方式 __stdcall 调用方式 __fastcall 调用方式 函数调用栈帧分析 补充说明 不同的编译器实现不一样,上述情况只是VC6.0的编译实现即便是在同一个编译器,开启优化和关闭优化也不一样即便是同一个编译器同一种模式,3…

光催化专用设备太阳光模拟器装置

什么是光催化材料? 光催化材料是指通过该材料、在光的作用下发生的光化学反应所需的一类半导体催化剂材料。半导体是一种介于导体和绝缘体之间的物质,它有一个特殊的能带结构,即价带和导带之间有一个禁带,禁带的宽度决定了半导体…

linux压缩包形式安装mysql5.7

1. 下载 MySQL 压缩包 在官方网站或者镜像站下载 MySQL 压缩包。mysql-5.7.29-linux-glibc2.12.tar 下载地址: MySQL :: Download MySQL Community Server (Archived Versions) 2. 解压缩文件 使用以下命令解压 MySQL 压缩包: tar xvf mysql-5.7.29…

软考高项论文范文 | 进度管理

2017年5月,受某政府部门的委托,我单位承接了某信息共享与服务系统的建设工作,在本项目中我担任项目经理,负责项目的整体规划、组织实施和管理控制。某政府部门拥有多年积累的大量工作资源,这些信息是其开展各项行业服务…

南南合作里程碑!批量苏州金龙纯电公交正式交付哥斯达黎加

1月17日,哥斯达黎加电力研究所(ICE)收到了中国援助的批量苏州金龙海格纯电公交,该批车是中国应对气候变化南南合作援助哥斯达黎加项目的重要物资之一。中国驻哥斯达黎加特命全权大使汤恒出席交付仪式。 中国驻哥斯达黎加大使汤恒&…

esp8266小车智能wifi小车寒假营实战背篼酥老师

esp8266小车智能wifi小车寒假营实战 10节课 整车效果图如下 第一课 esp8266开发环境搭建和库文件加载 课程如下: 环境搭建 库文件下载链接:见文章末尾 第二课 小车模块组成和例程简介 课程如下: 车身PCB 小车电机 esp8266扩展板 esp8…

Flink实战之DataStream API

接上文:Flink实战之运行架构 Flink的计算功能非常强大,提供的应用API也非常丰富。整体上来说,可以分为DataStreamAPI,DataSet API 和 Table与SQL API三大部分。 其中DataStream API是Flink中主要进行流计算的模块。 DateSet API是…

vue3-组件通信

1. 父传子-defineProps 父组件&#xff1a; <script setup> import { ref } from vueimport SonCom from /components/Son-com.vueconst message ref(parent)</script><template><div></div><SonCom car"沃尔沃" :message"…

ctfshow-反序列化(web267-web270)

目录 web267 web268 web269 web270 总结 web267 页面用的什么框架不知道 看源码看一下 框架就是一种软件工具&#xff0c;它提供了一些基础功能和规范&#xff0c;可以帮助开发者更快地构建应用程序。比如Yii框架和ThinkPHP框架就是两个流行的PHP框架&#xff0c;它们提供…

Golang 中如何实现 Set

在Go编程中&#xff0c;数据结构的选择对解决问题至关重要。本文将探讨如何在 GO 中实现 set 和 bitset 两种数据结构&#xff0c;以及它们在Go中的应用场景。 Go 的数据结构 Go 内置的数据结构并不多。工作中&#xff0c;我们最常用的两种数据结构分别是 slice 和 map&#…

如何本地安装Python Flask并结合内网穿透实现远程开发

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

flutter 实现定时滚动的公告栏的两种不错方式

相同的部分 自定义一个类继承StatefulWidget 所有公告信息存放在list里 第一种 scrollControllerAnimatedContainer 逻辑如下 我们可以发现启动了一个timer计时器计时5秒&#xff0c;hasClients检查其目标对象&#xff08;我们用的是listview&#xff09;是否被渲染&#x…

HarmonyOS鸿蒙应用开发(三、轻量级配置存储dataPreferences)

在应用开发中存储一些配置是很常见的需求。在android中有SharedPreferences&#xff0c;一个轻量级的存储类&#xff0c;用来保存应用的一些常用配置。在HarmonyOS鸿蒙应用开发中&#xff0c;实现类似功能的也叫首选项&#xff0c;dataPreferences。 相关概念 ohos.data.prefe…