Bootstrap

【Pandas】pandas Series value_counts

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)的方法
Series.sum([axis, skipna, numeric_only, …])用于计算 Series 中元素的总和
Series.var([axis, skipna, ddof, numeric_only])用于计算 Series 中元素的样本方差
Series.kurtosis([axis, skipna, numeric_only])用于计算 Series 中元素的峰度
Series.unique()用于返回 Series 中的唯一值
Series.nunique([dropna])用于计算 Series 中唯一值的数量
Series.is_unique用于检查 Series 中的元素是否唯一
Series.is_monotonic_increasing用于检查 Series 中的元素是否按单调递增顺序排列
Series.is_monotonic_decreasing用于检查 Series 中的元素是否按单调递减顺序排列
Series.value_counts([normalize, sort, …])用于计算 Series 中每个唯一值的出现次数

pandas.Series.value_counts

pandas.Series.value_counts() 方法用于计算 Series 中每个唯一值的出现次数。该方法可以返回一个包含唯一值及其频率的 Series,并且可以通过参数进行多种定制化操作。以下是该方法的详细描述:

  • 参数

    • normalize:布尔值,默认为 False。如果设置为 True,则返回的是频率(即比例),而不是计数。
    • sort:布尔值,默认为 True。如果设置为 True,则按降序对结果进行排序;如果设置为 False,则保持原始顺序。
    • ascending:布尔值,默认为 False。仅当 sort=True 时有效,如果设置为 True,则按升序排序。
    • dropna:布尔值,默认为 True。如果设置为 True,则忽略 NaN 值;如果设置为 False,则将 NaN 视为一个唯一值并计算其频率。
    • bins:整数或区间对象,默认为 None。如果提供,则将数值型数据分组到指定数量的等宽区间中。
    • datetime_is_numeric:布尔值,默认为 False。如果设置为 True,则将 datetime 类型的数据视为数值处理。
  • 返回值

    • 返回一个 Series,其中索引是原始 Series 中的唯一值,值是这些唯一值的出现次数或频率(取决于 normalize 参数)。
示例及结果
import pandas as pd

# 创建一个包含重复值和 NaN 的 Series
s = pd.Series([1, 2, 2, 3, 3, 3, 4, 4, 4, 4, None, None])

# 计算每个值的出现次数,默认参数
result_default = s.value_counts()
print("Value counts (default parameters):")
print(result_default)

# 计算每个值的频率(比例)
result_normalize = s.value_counts(normalize=True)
print("\nValue counts with normalize=True:")
print(result_normalize)

# 不对结果进行排序
result_no_sort = s.value_counts(sort=False)
print("\nValue counts with sort=False:")
print(result_no_sort)

# 包含 NaN 值的计数
result_dropna_false = s.value_counts(dropna=False)
print("\nValue counts with dropna=False:")
print(result_dropna_false)

# 将数值分组到 3 个等宽区间
result_bins = s[s.notna()].value_counts(bins=3)
print("\nValue counts with bins=3:")
print(result_bins)
输出结果
Value counts (default parameters):
4.0    4
3.0    3
2.0    2
1.0    1
Name: count, dtype: int64

Value counts with normalize=True:
4.0    0.4
3.0    0.3
2.0    0.2
1.0    0.1
Name: proportion, dtype: float64

Value counts with sort=False:
1.0    1
2.0    2
3.0    3
4.0    4
Name: count, dtype: int64

Value counts with dropna=False:
4.0    4
3.0    3
2.0    2
NaN    2
1.0    1
Name: count, dtype: int64

Value counts with bins=3:
(3.0, 4.0]      4
(0.996, 2.0]    3
(2.0, 3.0]      3
Name: count, dtype: int64
解释
  • 默认参数

    • 返回每个唯一值的出现次数,按降序排列。
  • normalize=True

    • 返回每个唯一值的频率(比例),总和为 1。
  • sort=False

    • 返回每个唯一值的出现次数,但不进行排序,保持原始顺序。
  • dropna=False

    • 将 NaN 视为一个唯一值并计算其频率。
  • bins=3

    • 将数值型数据分组到 3 个等宽区间,并返回每个区间的频率或计数。
注意事项
  • value_counts() 方法主要用于统计唯一值的频率或计数,适用于各种数据类型(数值型、字符串型等)。
  • 使用 bins 参数时,确保 Series 中的数据是数值型,否则会引发错误。
  • 如果需要更复杂的分组或统计,可以结合其他 Pandas 函数(如 groupbyagg)使用。

通过这些示例和解释,您可以更好地理解如何使用 pandas.Series.value_counts() 方法来统计 Series 中唯一值的频率或计数,并根据需要调整参数以获得所需的结果。

;