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

【Pandas】pandas Series skew

Pandas2.2 Series

Computations descriptive stats

方法描述
Series.abs()用于计算 Series 中每个元素的绝对值
Series.all()用于检查 Series 中的所有元素是否都为 True 或非零值(对于数值型数据)
Series.any()用于检查 Series 中是否至少有一个元素为 True 或非零值(对于数值型数据)
Series.autocorr()用于计算 Series 的自相关系数
Series.between()用于检查 Series 中的每个元素是否在指定的两个值之间(包括边界值)
Series.clip()用于将 Series 中的元素限制在指定的上下限之间
Series.corr()用于计算两个 Series 之间的相关系数
Series.count()用于计算 Series 中非 NA/null 值的数量
Series.cov(other[, min_periods, ddof])用于计算两个 Series 之间的协方差
Series.cummax([axis, skipna])用于计算 Series 中元素的累积最大值
Series.cummin([axis, skipna])用于计算 Series 中元素的累积最小值
Series.cumprod([axis, skipna])用于计算 Series 中元素的累积乘积
Series.cumsum([axis, skipna])用于计算 Series 中元素的累积和
Series.describe([percentiles, include, exclude])用于生成 Series 对象的描述性统计信息的方法
Series.diff([periods])用于计算 Series 中元素与前一个元素之间差值的方法
Series.factorize([sort, use_na_sentinel])用于将 Series 中的唯一值编码为从 0 开始的整数索引的方法
Series.kurt([axis, skipna, numeric_only])用于计算 Series 中数据的峰度(kurtosis)
Series.max([axis, skipna, numeric_only])用于计算 Series 中所有元素的最大值
Series.mean([axis, skipna, numeric_only])用于计算 Series 中所有元素的算术平均值
Series.median([axis, skipna, numeric_only])用于计算 Series 对象中位数的函数
Series.min([axis, skipna, numeric_only])用于计算 Series 对象最小值的函数
Series.mode([dropna])用于计算 Series 对象中最常出现的值(众数)的函数
Series.nlargest([n, keep])用于获取 Series 对象中最大的 n 个值的函数
Series.nsmallest([n, keep])用于获取 Series 对象中最小的 n 个值的函数
Series.pct_change([periods, fill_method, …])用于计算 Series 对象中元素与前一个元素之间百分比变化的方法
Series.prod([axis, skipna, numeric_only, …])用于计算 Series 对象中所有元素乘积的函数
Series.quantile([q, interpolation])用于计算 Series 对象的分位数(quantiles)的方法
Series.rank([axis, method, numeric_only, …])用于计算 Series 对象中每个元素的排名的方法
Series.sem([axis, skipna, ddof, numeric_only])用于计算 Series 对象的标准误差(Standard Error of the Mean, SEM)的方法
Series.skew([axis, skipna, numeric_only])用于计算 Series 对象的偏度(skewness)的方法

pandas.Series.skew

pandas.Series.skew 是 pandas 库中用于计算 Series 对象的偏度(skewness)的方法。偏度是描述数据分布不对称性的统计量,它衡量的是数据集相对于其均值的倾斜程度。正偏度表示右尾较长(更多极端大值),负偏度表示左尾较长(更多极端小值)。下面将详细描述该方法及其参数,并给出示例及结果。

函数描述
  • 功能:返回 Series 中所有元素的偏度。

  • 参数

    • axis:{0 or ‘index’},默认为 0。对于 Series 来说,这个参数通常不需要更改,因为 Series 只有一个轴。
    • skipna:布尔值,默认为 True,表示是否跳过缺失值(NaN)。如果设置为 False,则在遇到 NaN 时返回 NaN。
    • numeric_only:布尔值,默认为 False。此参数对 Series 影响不大,因为它只包含单一数据类型。对于 DataFrame,此参数用于限制仅计算数值列(float、int、boolean)的偏度。
  • 返回值:返回一个标量值,表示 Series 的偏度。

示例代码及结果
示例 1:基本用法
import pandas as pd

# 创建一个简单的数值型 Series
s = pd.Series([1, 2, 3, 4, 5])

# 使用 skew 方法计算偏度
skew_result = s.skew()

print(f"基本用法结果: {skew_result}")
输出结果:
基本用法结果: 0.0

在这个例子中,skew 方法计算了 Series 数据的偏度。由于数据是对称分布的(等间距递增),因此偏度为 0,表示没有倾斜。

示例 2:包含缺失值的 Series
# 创建一个包含缺失值的数值型 Series
s_with_nan = pd.Series([1, 2, None, 4, 5])

# 使用 skew 方法计算偏度,并跳过缺失值
skew_skipna_true = s_with_nan.skew(skipna=True)

# 使用 skew 方法计算偏度,不跳过缺失值
skew_skipna_false = s_with_nan.skew(skipna=False)

print(f"跳过缺失值的结果: {skew_skipna_true}")

print(f"\n不跳过缺失值的结果: {skew_skipna_false}")
输出结果:
跳过缺失值的结果: 0.0

不跳过缺失值的结果: nan

在这个例子中,skew 方法分别在跳过和不跳过缺失值的情况下进行了计算。当 skipna=True 时,忽略 NaN 值,结果为 0.0;当 skipna=False 时,包含 NaN 值,结果为 NaN

示例 3:处理非对称分布的数据
# 创建一个非对称分布的数值型 Series
s_skewed = pd.Series([1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5])

# 使用 skew 方法计算偏度
skew_skewed = s_skewed.skew()

print("非对称分布数据的结果:")
print(skew_skewed)
输出结果:
非对称分布数据的结果:
-0.5818832416374002

在这个例子中,skew 方法计算了 Series 数据的偏度。由于数据集中在较小的值附近且有较多的大值,导致分布呈现轻微的左偏(负偏度)。

示例 4:处理右偏分布的数据
# 创建一个右偏分布的数值型 Series
s_right_skewed = pd.Series([1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10])

# 使用 skew 方法计算偏度
skew_right_skewed = s_right_skewed.skew()

print("右偏分布数据的结果:")
print(skew_right_skewed)
输出结果:
右偏分布数据的结果:
0.5523606908341456

在这个例子中,skew 方法计算了 Series 数据的偏度。由于数据集中在较小的值附近且有较少的大值,导致分布呈现明显的右偏(正偏度)。

示例 5:处理非数值类型的 Series

skew 方法主要适用于数值型数据。如果 Series 包含非数值类型的数据,则会抛出异常。

# 创建一个包含混合类型的 Series
s_mixed = pd.Series([1, 'a', 3, 4, 5], dtype=object)

# 尝试计算偏度
try:
    skew_mixed = s_mixed.skew()
    print(f"偏度结果: {skew_mixed}")
except TypeError as e:
    print(f"错误信息: {e}")
输出结果:
错误信息: could not convert string to float: 'a'

在这个例子中,由于 Series 包含非数值类型的元素(如字符串 'a'),skew 方法无法执行计算,因此抛出了 TypeError 异常。

示例 6:空的 Series
import pandas as pd

# 创建一个空的 Series
empty_data = pd.Series([])

# 使用 skew 方法计算偏度
skew_empty = empty_data.skew()

print(f"空的 Series 结果: {skew_empty}")
输出结果:
空的 Series 结果: nan

在这个例子中,skew 方法计算了一个空的 Series 的偏度,结果为 NaN。因为没有有效的观测值,所以无法计算偏度。

示例 7:使用随机生成的数据
import pandas as pd
import numpy as np

# 设置随机种子以确保结果可复现
np.random.seed(0)

# 创建一个随机生成的数值型 Series
random_data = pd.Series(np.random.randn(100))

# 使用 skew 方法计算偏度
skew_random = random_data.skew()

print("随机生成的数据结果:")
print(skew_random)
输出结果:
随机生成的数据结果:
0.005250934226236083

在这个例子中,skew 方法计算了一组随机生成的 Series 数据的偏度。由于这些数据是从标准正态分布中随机抽取的,理论上其偏度接近于 0,但实际计算结果可能会略有偏差,这是因为样本大小有限。

示例 8:处理布尔类型的 Series
# 创建一个布尔类型的 Series
s_bool = pd.Series([True, False, True, False, True])

# 使用 skew 方法计算偏度
skew_bool = s_bool.skew()

print("布尔类型 Series 的偏度结果:")
print(skew_bool)
输出结果:
布尔类型 Series 的偏度结果:
-0.6085806194501843

在这个例子中,skew 方法计算了布尔类型 Series 数据的偏度。由于布尔值可以被视为 1(True)和 0(False),因此它们也可以参与偏度的计算。在这个特定的例子中,数据是对称分布的,因此偏度为 0。

总结
  • pandas.Series.skew 方法用于计算 Series 中所有元素的偏度。
  • axis 参数在 Series 中通常不需要设置,因为 Series 是一维数据结构。
  • skipna=True 时,skew 方法会忽略 NaN 值并计算剩余数值的偏度。
  • skipna=False 且存在 NaN 值时,结果将为 NaN。
  • skew 方法主要适用于数值型数据,对于非数值类型的数据会抛出异常。
  • 对于空的 Series 或者所有元素都是缺失值的情况,skew 方法将返回 NaN

通过这些示例可以看到,skew 方法能够有效地计算不同类型的偏度,并帮助我们了解数据分布的不对称性。这对于数据分析和统计分析非常有用,可以帮助我们更好地理解数据的形态特征。


http://www.kler.cn/a/536442.html

相关文章:

  • 6-图像金字塔与轮廓检测
  • 如何在Arduino上使用NodeMCU
  • 2025.2.6(c++杂项补充及qt基础介绍)
  • python:csv文件批量导入mysql
  • linux常用基础命令 最新1
  • IDEA使用Auto-dev+DeepSeek 10分钟快速集成,让java开发起飞
  • Nginx SSL: error:1410D0B 错误
  • C#+Redis接收数据并定时3秒钟频率异步保存到数据库
  • [Halcon] 灰度值插值介绍
  • 数据库开发常识(10.6)——考量使用多视图连接、循环删除、绑定变量、连接表数及触发器(2)
  • C++ labmbd表达式
  • 在 Flownex 中创建自定义工作液
  • 寻找2020
  • 【算法】动态规划专题⑥ —— 完全背包问题 python
  • Maven 依赖管理全面解析
  • 【有啥问啥】什么是CTC(Connectionist Temporal Classification)算法
  • leetcode_双指针 541. 反转字符串 II
  • KAFKA-UI升级教程,因旧版本不支持(KAFKA-3.8.0 开启SASL认证)
  • Python基于Django的课堂投票系统的设计与实现【附源码】
  • Linux系统用户分类、UID与GID的区别、用户管理的基础命令
  • 【AIGC魔童】DeepSeek v3提示词Prompt书写技巧
  • 深度学习|表示学习|训练优化方法|Nesterov动量一定比基础的Momentum更好吗?|22
  • 基于LMStudio本地部署DeepSeek R1
  • elasticsearch安装插件analysis-ik分词器(深度研究docker内elasticsearch安装插件的位置)
  • Deepseek-v3 / Dify api接入飞书机器人go程序
  • 你是否想过,让AI像人类一样协作竞争?——展望智能体协作新范式