赞
踩
在大数据时代的背景下,数据分析已经成为了商业决策、科研、甚至日常生活中不可或缺的一部分。但面对海量的数据如何从中提取有用的信息,进而做出明智的决策呢?描述性统计数据分析,就是解决这一问题的关键所在。本文通过Python这一流行的编程语言提供一份详尽而易于理解的描述性统计数据分析指南。
Python凭借其丰富的库和高度可定制的特性,已经成为数据科学领域中最受欢迎的工具之一。但无论工具有多么强大,正确和高效地使用它们始终是最重要的。因此本文不仅会介绍各种描述性统计的基础概念,如度量类型、总体和样本、异常值等,还将深入探讨如何使用Python进行实际的数据分析。包括但不限于集中趋势测度、变异性测量,以及数据对之间相关性的度量等。
通过生活中的实际案例,如消费行为分析、气象数据解读等,来演示描述性统计在解决实际问题中的应用,使得即便是对数据科学和编程毫无基础的读者,也能轻松地理解和掌握这一领域的核心概念和技巧。
描述性统计是一种科学分析数据的方法,不仅仅是对数据进行描述和概括,它更是一种科学地分析和解释数据的手段。这一过程涵盖了两种主要的方法:
描述性统计可以广泛应用于单一或多重数据集和变量。在处理单一变量时通常进行单变量分析;而在探究两个变量间的关系时,双变量分析更为合适。对于涉及多个变量的复杂数据集,多变量分析是必不可少的。
要进行有效的描述性统计分析,了解以下三种主要的度量类型是必要的:
在统计学中,需要进行一种取舍策略,总体指的是研究对象全体的集合。由于总体通常规模庞大,直接对其进行全面分析是不现实的。因此统计学家通常会选择一个能代表总体特性的样本进行研究。这样通过样本分析所得出的结论就可以在一定程度上推广到整个总体。
异常值是需特别关注的数据点,是那些与大多数数据点有显著差异的元素。这些差异可能源自数据的自然波动、观测系统的变化或是数据收集过程中的错误。识别异常值没有固定的数学规则,而是依赖于专业经验、主题知识以及逻辑推理。
scipy.stats
模块专门用于进行复杂的统计分析。需要导入一些用于数据分析和统计计算的第三方库。
import math
import statistics
import numpy as np
import scipy.stats
import pandas as pd
进行数据准备将创建几个示例数据集。在数据分析中,缺失值通常使用 nan
(Not a Number)来表示。Python 提供了多种方式来生成 nan
,包括 float('nan')
、math.nan
和 np.nan
。
x = [1.0, 5, 7.5, 4, 99.1]
x_with_nan = [1.0, 5, 7.5, math.nan, 4, 99.1]
还将创建几个 NumPy 数组和 Pandas Series 对象,这些都是常用的一维数据结构。
# 创建 NumPy 数组
y, y_with_nan = np.array(x), np.array(x_with_nan)
# 创建 Pandas Series 对象
z, z_with_nan = pd.Series(x), pd.Series(x_with_nan)
# 输出 NumPy 数组和 Pandas Series
y
# Output: array([ 8. , 1. , 2.5, 4. , 28. ])
y_with_nan
# Output: array([ 8. , 1. , 2.5, nan, 4. , 28. ])
z
# Output:
# 0 8.0
# 1 1.0
# 2 2.5
# 3 4.0
# 4 28.0
# dtype: float64
z_with_nan
# Output:
# 0 8.0
# 1 1.0
# 2 2.5
# 3 NaN
# 4 4.0
# 5 28.0
# dtype: float64
集中趋势的测量方法用于揭示数据集的“中心”或“平均”值,这里有多种方式来描述这一“中心”。
这些方法各有利弊和适用场景,理解它们的工作原理和适用性是进行有效数据分析的关键。
方差(Variance) 是一种衡量数据分布的广度的指标。它量化了数据点相对于算术平均值的偏离程度。数学表达式为:
样本方差 = Σ i = 1 n ( x i − mean ( x ) ) 2 n − 1 \text{样本方差} = \frac{\Sigma_{i=1}^{n}(x_i - \text{mean}(x))^2}{n-1} 样本方差=n−1Σi=1n(xi−mean(x))2
其中 n n n 是样本大小, x i x_i xi 是每一个数据点, mean ( x ) \text{mean}(x) mean(x) 是算术平均值。
# 使用 Python 的多种方式来计算样本方差
var_ = statistics.variance(x)
var_ = np.var(y, ddof=1)
var_ = z.var(ddof=1)
标准偏差(Standard Deviation)是方差的平方根,用于量化数据的分布范围。其数学表达式为: s = 方差 s = \sqrt{\text{方差}} s=方差 。
# 计算样本标准偏差的 Python 示例
std_ = statistics.stdev(x)
std_ = np.std(y, ddof=1)
std_ = z.std(ddof=1)
偏度(Skewness) 是衡量数据分布偏斜程度的统计量。它用于识别数据分布的对称性。
# 计算样本偏度的 Python 示例
skew_ = scipy.stats.skew(y, bias=False)
skew_ = z.skew()
百分位数(Percentiles)是将数据集从小到大排序后,位于特定百分比位置的数据点。
# 计算百分位数的 Python 示例
q25, q50, q75 = np.percentile(y, [25, 50, 75])
极差(Ranges),数据范围或极差是数据集中最大值与最小值的差。
# 计算数据范围的 Python 示例
range_ = np.ptp(y)
理解这些变异性测量方法有助于更全面地了解数据的分布特性,从而进行更准确的分析和决策。
在数据分析过程中,有时需要快速地获取数据集的核心统计指标。这些指标可以提供数据集的“大致轮廓”,帮助了解数据的分布、集中趋势和变异性。Python 中有一些工具可以方便地完成这项任务。
scipy.stats.describe()
函数提供了一种快速获取数据集多个描述性统计量的方法。它返回以下几个重要的统计量:
# 使用 scipy.stats.describe() 获取描述性统计摘要
result = scipy.stats.describe(y, ddof=1, bias=False)
使用 Pandas 的 .describe()
方法也提供了数据集的基础描述性统计信息,虽然不如 SciPy 全面,但对于快速了解数据集还是非常方便的。
# 使用 Pandas 的 .describe() 方法获取描述性统计摘要
result = z.describe()
经常需要检查数据集中两个变量的对应元素之间的关系。假设有两个变量
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。