本文共 4592 字,大约阅读时间需要 15 分钟。
在数据分析中,描述性统计是了解数据分布、趋势和特征的重要手段。pandas库提供了丰富的函数来实现描述性统计操作,这些函数涵盖了从基本的均值、标准差到更复杂的分位数、众数等多种统计量。
Series和DataFrame支持大量描述性统计方法与操作。这些方法大部分是聚合函数,如sum()、mean()、quantile()等,其输出结果通常比原始数据集小。同时,还有输出结果与原始数据集同样大小的cumsum()、cumprod()等函数。
# DataFrame的描述性统计In [1]: dfOut[1]: one two three# 1.394981 1.772517 NaN# 0.343054 1.912123 -0.050390# 0.695246 1.478369 1.227435# NaN 0.279344 -0.613172In [2]: df.mean(0)Out[2]:one 0.811094two 1.360588three 0.187958dtype: float64In [3]: df.mean(1)Out[3]:a 1.583749b 0.734929c 1.133683d -0.166914dtype: float64
skipnaskipna参数默认为True,用于指定是否忽略缺失值。In [4]: df.sum(0, skipna=False)Out[4]:one NaNtwo 5.442353three NaNdtype: float64In [5]: df.sum(axis=1, skipna=True)Out[5]:a 3.167498b 2.204786c 3.401050d -0.333828dtype: float64
In [6]: ts_stand = (df - df.mean()) / df.std()In [7]: ts_stand.std()Out[7]:one 1.0two 1.0three 1.0dtype: float64
cumsum()和cumprod()函数保留缺失值的位置,与expanding()和rolling()不同。In [8]: df.cumsum()Out[8]: one two three
# 1.394981 1.772517 NaN
#### 常用函数汇总表| 函数 | 描述 ||------------|-----------------------------------------------------------------------|| count | 统计非空值数量 || sum | 汇总值 || mean | 平均值 || mad | 平均绝对偏差 || median | 算术中位数 || min | 最小值 || max | 最大值 || mode | 众数 || abs | 绝对值 || prod | 乘积 || std | 样本标准偏差 || var | 无偏方差 || sem | 平均值的标准误差 || skew | 样本偏度(第三阶) || kurt | 样本峰度(第四阶) || quantile | 样本分位数(不同百分比的值) || cumsum | 累加 || cumprod | 累乘 || cummax | 累积最大值 || cummin | 累积最小值 |#### 数据总结(describe())- `describe()`函数计算Series和DataFrame的数据统计量,默认排除空值。- 示例:```pythonIn [9]: series = pd.Series(np.random.randn(1000))In [10]: series[::2] = np.nanIn [11]: series.describe()Out[11]:count 500.000000mean -0.021292std 1.015906min -2.68376325% -0.69907050% -0.06971875% 0.714483max 3.160915dtype: float64
idxmax()与idxmin()函数返回最大值和最小值对应的索引。In [12]: df3 = pd.DataFrame([2, 1, 1, 3, np.nan], columns=['A'], index=list('edcba'))In [13]: df3['A'].idxmin()Out[13]: 'd' value_counts()方法计算数据值的直方图。In [14]: data = np.random.randint(0, 7, size=50)In [15]: dataOut[15]:array([6, 6, 2, 3, 5, 3, 2, 5, 4, 5, 4, 3, 4, 5, 0, 2, 0, 4, 2, 0, 3, 2, 2, 5, 6, 5, 3, 4, 6, 4, 3, 5, 6, 4, 3, 6, 2, 6, 6, 2, 3, 4, 2, 1, 6, 2, 6, 1, 5, 4])
In [16]: s = pd.Series(data)In [17]: s.value_counts()Out[17]:6 102 104 95 83 80 31 2dtype: int64
#### 离散化与分位数(cut()与qcut())- `cut()`函数按值实现分箱,`qcut()`函数按样本分位数实现分箱。- 示例:```pythonIn [18]: arr = np.random.randn(20)In [19]: factor = pd.cut(arr, 4)In [20]: factorOut[20]:[(-0.251, 0.464], (-0.968, -0.251], (0.464, 1.179], (-0.251, 0.464], (-0.968, -0.251], ..., (-0.251, 0.464], (-0.968, -0.251], (-0.968, -0.251], (-0.968, -0.251], (-0.968, -0.251]]Length: 20Categories (4, interval[float64]): [(-0.968, -0.251] < (-0.251, 0.464] < (0.464, 1.179] < (1.179, 1.893]]
通过以上函数和方法,可以对数据集进行全面而详细的描述性统计,了解数据的分布特性和趋势方向。
转载地址:http://spvfk.baihongyu.com/