当前位置: 首页 > news >正文

【Pandas】pandas DataFrame kurt

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)

pandas.DataFrame.kurt()

pandas.DataFrame.kurt() 方法用于计算 DataFrame 中每列或每行的峰度(Kurtosis),即衡量数据分布尾部厚度的统计量。峰度描述了数据分布相对于正态分布的“陡峭”或“平坦”程度。


📌 方法签名:
DataFrame.kurt(axis=0, skipna=True, numeric_only=False)

🧾 参数说明:
参数类型描述
axis{0/‘index’, 1/‘columns’}, 默认 0
  • 0:按列计算(返回每列的峰度)
  • 1:按行计算(返回每行的峰度) |
    | skipna | bool, 默认 True | 是否跳过 NaN 值。若为 False,含 NaN 的行/列结果也为 NaN。 |
    | numeric_only | bool, 默认 False | 是否只考虑数值类型列(int、float)。若为 True,忽略布尔、字符串等非数值列。 |

📊 返回值:
  • 返回一个 Series,表示每列(或每行)的峰度值。
  • 峰度的含义如下:
    • 峰度 = 3:与正态分布相同(mesokurtic)
    • 峰度 > 3:高峰度(leptokurtic),尾部更厚,数据更集中
    • 峰度 < 3:低峰度(platykurtic),尾部更薄,分布更平坦

✅ 示例及结果:
示例1:基本用法(按列计算峰度)
import pandas as pd
import numpy as npdf = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [10, 100, 10, 100, 10],'C': [2, 2, 2, 2, 2]  # 所有值相同 → 无变化
})print(df.kurt())
输出结果:
A   -1.3
B    4.0
C   NaN
dtype: float64

解释:

  • 列 A:数据均匀分布,峰度 < 3 → 分布较平坦
  • 列 B:存在极端值(10 和 100 交替出现),峰度 = 4 → 尾部比正态分布厚
  • 列 C:所有值相同 → 标准差为 0,无法计算峰度 → NaN

示例2:按行计算峰度(axis=1
print(df.kurt(axis=1))
输出结果:
0   -1.5
1   -1.5
2   -1.5
3   -1.5
4   -1.5
dtype: float64

解释:

  • 每一行的三个数分别为 [1, 10, 2], [2, 100, 2], …,它们的分布形态相似,因此峰度一致。

示例3:包含 NaN 值时设置 skipna=False
df_with_nan = pd.DataFrame({'X': [1, 2, np.nan],'Y': [np.nan, 10, 20]
})print(df_with_nan.kurt(skipna=False))
输出结果:
X   NaN
Y   NaN
dtype: float64

解释:

  • 含有 NaN 的列无法计算峰度 → 结果为 NaN

🎯 适用场景:
场景描述
数据分析检查数据分布是否接近正态分布
异常检测高峰度可能表示存在极端值或异常点
金融分析评估资产收益率分布的风险特性
特征工程在建模前了解特征分布形状,决定是否进行变换(如对数变换)

⚠️ 注意事项:
  • 只适用于数值型列(int、float)
  • 若某列标准差为 0(所有值相等),则峰度为 NaN
  • 默认不跳过 NaN 值(可通过 skipna=False 控制)
  • 不会影响原始 DataFrame,返回新 Series

📋 总结:
特性描述
功能计算 DataFrame 每列或每行的峰度
默认行为按列计算,跳过 NaN,处理所有列
是否修改原数据否,返回新 Series
适用类型数值型列(int、float)
输出范围浮点数,通常在 1~6 之间(极端情况可能更大)

kurt() 是一个非常有用的统计工具,适合用于探索数据分布特性、识别异常值和风险分析等任务。

相关文章:

  • 深度剖析:Dify+Sanic+Vue+ECharts 搭建 Text2SQL 项目 sanic-web 的 Debug 实战
  • 【Unity】用事件广播的方式实现游戏暂停,简单且实用!
  • 单元化架构
  • <PLC><视觉><机器人>基于海康威视视觉检测和UR机械臂,如何实现N点标定?
  • IEEE 列表会议第五届机器人、自动化与智能控制国际会议
  • 软件架构风格系列(4):事件驱动架构
  • Python打卡 DAY 27
  • 大模型在数据分析领域的研究综述
  • CSS:颜色的三种表示方式
  • 学习以任务为中心的潜动作,随地采取行动
  • Servlet 深度解析:生命周期、请求响应与状态管理
  • PCIe数据采集系统详解
  • JAVA:线程调度器与时间分片的技术指南
  • 数据通信原理 光纤通信 期末速成
  • Android minSdk从21升级24后SO库异常
  • linux防火墙
  • 单序列双指针---初阶篇
  • 原生小程序+springboot+vue+协同过滤算法的音乐推荐系统(源码+论文+讲解+安装+部署+调试)
  • 文件上传Ⅲ
  • css:倒影倾斜效果
  • 当智慧农场遇见绿色工厂:百事如何用科技留住春天的味道?
  • 专访|《内沙》导演杨弋枢:挽留终将失去的美好
  • 混乱的5天:俄乌和谈如何从充满希望走向“卡壳”
  • 温州通报“一母亲殴打女儿致其死亡”:嫌犯已被刑拘
  • 专家:家长要以身作则,孩子是模仿者学习者有时也是评判者
  • 《大风杀》导演张琪:为了不算计观众,拍了部不讨好的警匪片