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)的方法 |
Series.std([axis, skipna, ddof, numeric_only]) | 用于计算 Series 对象的标准差(Standard Deviation, STD)的方法 |
pandas.Series.std
pandas.Series.std
是 pandas 库中用于计算 Series 对象的标准差(Standard Deviation, STD)的方法。标准差是衡量数据集分散程度的统计量,它表示数据点相对于均值的离散程度。下面将详细描述该方法及其参数,并给出示例及结果。
函数描述
-
功能:返回 Series 中所有元素的标准差。
-
参数:
axis
:{0 or 'index'},默认为 0。对于 Series 来说,这个参数通常不需要更改,因为 Series 只有一个轴。skipna
:布尔值,默认为 True,表示是否跳过缺失值(NaN)。如果设置为 False,则在遇到 NaN 时返回 NaN。ddof
:整数,默认为 1,表示自由度调整。标准差的分母是 N-ddof,其中 N 是观测值的数量。默认情况下,使用无偏估计(即样本标准差),此时 ddof=1。numeric_only
:布尔值,默认为 False。此参数对 Series 影响不大,因为它只包含单一数据类型。对于 DataFrame,此参数用于限制仅计算数值列(float、int、boolean)的标准差。
-
返回值:返回一个标量值,表示 Series 的标准差。
示例代码及结果
示例 1:基本用法
python
import pandas as pd
# 创建一个简单的数值型 Series
s = pd.Series([1, 2, 3, 4, 5])
# 使用 std 方法计算标准差
std_result = s.std()
print(f"基本用法结果: {std_result}")
输出结果:
python
基本用法结果: 1.5811388300841898
在这个例子中,std
方法计算了 Series
数据的标准差。具体来说,它是样本标准差,即:
[ \text{STD} = \sqrt{\frac{\sum_{i=1}^{n}(x_i - \bar{x})^2}{n-1}} ]
其中 ( x_i ) 是每个观测值,( \bar{x} ) 是样本均值,( n ) 是样本数量。对于给定的数据 [1, 2, 3, 4, 5],样本标准差约为 1.5811。
示例 2:包含缺失值的 Series
python
# 创建一个包含缺失值的数值型 Series
s_with_nan = pd.Series([1, 2, None, 4, 5])
# 使用 std 方法计算标准差,并跳过缺失值
std_skipna_true = s_with_nan.std(skipna=True)
# 使用 std 方法计算标准差,不跳过缺失值
std_skipna_false = s_with_nan.std(skipna=False)
print(f"跳过缺失值的结果: {std_skipna_true}")
print(f"\n不跳过缺失值的结果: {std_skipna_false}")
输出结果:
python
跳过缺失值的结果: 1.8257418583505538
不跳过缺失值的结果: nan
在这个例子中,std
方法分别在跳过和不跳过缺失值的情况下进行了计算。当 skipna=True
时,忽略 NaN
值,结果为 1.5811;当 skipna=False
时,包含 NaN
值,结果为 NaN
。
示例 3:使用不同的自由度调整 (ddof
参数)
python
# 使用 std 方法计算标准差,并指定 ddof 参数
std_ddof_0 = s.std(ddof=0)
std_ddof_2 = s.std(ddof=2)
print(f"ddof=0 的结果: {std_ddof_0}")
print(f"\nddof=2 的结果: {std_ddof_2}")
输出结果:
python
ddof=0 的结果: 1.4142135623730951
ddof=2 的结果: 1.8257418583505538
在这个例子中,std
方法根据 ddof
参数的不同进行了计算。具体来说:
- 当
ddof=0
时,自由度调整为 0,即分母为 ( n ),结果为 1.4142。 - 当
ddof=2
时,自由度调整为 2,即分母为 ( n-2 ),结果为 1.9236。
示例 4:处理非数值类型的 Series
std
方法主要适用于数值型数据。如果 Series 包含非数值类型的数据,则会抛出异常。
python
# 创建一个包含混合类型的 Series
s_mixed = pd.Series([1, 'a', 3, 4, 5], dtype=object)
# 尝试计算标准差
try:
std_mixed = s_mixed.std()
print(f"标准差结果: {std_mixed}")
except TypeError as e:
print(f"错误信息: {e}")
输出结果:
python
错误信息: could not convert string to float: 'a'
在这个例子中,由于 Series
包含非数值类型的元素(如字符串 'a'
),std
方法无法执行计算,因此抛出了 TypeError
异常。
示例 5:空的 Series
python
import pandas as pd
# 创建一个空的 Series
empty_data = pd.Series([])
# 使用 std 方法计算标准差
std_empty = empty_data.std()
print(f"空的 Series 结果: {std_empty}")
输出结果:
python
空的 Series 结果: nan
在这个例子中,std
方法计算了一个空的 Series
的标准差,结果为 NaN
。因为没有有效的观测值,所以无法计算标准差。
示例 6:包含布尔类型的 Series
python
# 创建一个布尔类型的 Series
s_bool = pd.Series([True, False, True, False, True])
# 使用 std 方法计算标准差
std_bool = s_bool.std()
print("布尔类型 Series 的标准差结果:")
print(std_bool)
输出结果:
python
布尔类型 Series 的标准差结果:
0.5477225575051662
在这个例子中,std
方法计算了布尔类型 Series
数据的标准差。由于布尔值可以被视为 1(True)和 0(False),因此它们也可以参与标准差的计算。
示例 7:自定义数据生成随机分布
python
import pandas as pd
import numpy as np
# 设置随机种子以确保结果可复现
np.random.seed(0)
# 创建一个随机生成的数值型 Series
random_data = pd.Series(np.random.randn(100))
# 使用 std 方法计算标准差
std_random = random_data.std()
print("随机生成的数据结果:")
print(std_random)
输出结果:
python
随机生成的数据结果:
1.0129597692685017
在这个例子中,std
方法计算了一组随机生成的 Series
数据的标准差。由于这些数据是从标准正态分布中随机抽取的,理论上其标准差接近于 1,但实际计算结果可能会略有偏差,这是因为样本大小有限。
示例 8:处理右偏分布的数据
python
# 创建一个右偏分布的数值型 Series
s_right_skewed = pd.Series([1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10])
# 使用 std 方法计算标准差
std_right_skewed = s_right_skewed.std()
print("右偏分布数据的结果:")
print(std_right_skewed)
输出结果:
python
右偏分布数据的结果:
2.8975564417856186
在这个例子中,std
方法计算了 Series
数据的标准差。由于数据集中在较小的值附近且有较少的大值,导致分布呈现右偏(正偏度),标准差反映了这种分布的离散程度。
示例 9:处理左偏分布的数据
python
# 创建一个左偏分布的数值型 Series
s_left_skewed = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 10, 10, 10])
# 使用 std 方法计算标准差
std_left_skewed = s_left_skewed.std()
print("左偏分布数据的结果:")
print(std_left_skewed)
输出结果:
python
左偏分布数据的结果:
3.25
在这个例子中,std
方法计算了 Series
数据的标准差。尽管数据集中在较大的值附近且有较少的小值,导致分布呈现左偏(负偏度),标准差仍然反映了这种分布的离散程度。
示例 10:处理重复值的情况
python
# 创建一个包含重复值的数值型 Series
s_with_duplicates = pd.Series([1, 2, 2, 3, 3, 4, 5])
# 使用 std 方法计算标准差
std_with_duplicates = s_with_duplicates.std()
print("包含重复值的数据结果:")
print(std_with_duplicates)
输出结果:
python
包含重复值的数据结果:
1.3451854182690985
在这个例子中,std
方法计算了包含重复值的 Series
数据的标准差。尽管有重复值,标准差仍然能够准确反映数据的离散程度。
总结
pandas.Series.std
方法用于计算 Series 中所有元素的标准差。axis
参数在 Series 中通常不需要设置,因为 Series 是一维数据结构。skipna=True
时,std
方法会忽略 NaN 值并计算剩余数值的标准差。skipna=False
且存在 NaN 值时,结果将为 NaN。ddof
参数指定自由度调整,默认为 1。这影响了标准差的计算方式,默认情况下使用无偏估计。std
方法主要适用于数值型数据,对于非数值类型的数据会抛出异常。- 对于空的 Series 或者所有元素都是缺失值的情况,
std
方法将返回NaN
。
通过这些示例可以看到,std
方法能够有效地计算数据的标准差,帮助我们了解数据的离散程度。这对于数据分析和统计分析非常重要,可以帮助我们更好地理解数据的分布情况。