【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
方法能够有效地计算不同类型的偏度,并帮助我们了解数据分布的不对称性。这对于数据分析和统计分析非常有用,可以帮助我们更好地理解数据的形态特征。