【数据分析】统计学基础及 Python 具体实现
统计学是数据分析的基础,它为我们提供了从数据中提取有意义信息的工具和方法。在数据科学、机器学习和数据分析中,统计学扮演着极为重要的角色。本文将介绍一些常见的统计学基础概念,并展示如何使用 Python 进行具体实现,包括常见的统计方法、数据分布、假设检验等。
目录
统计学基础概念
- 描述性统计
- 概率分布
- 假设检验
Python 统计库介绍
- NumPy
- Pandas
- SciPy
- Matplotlib 和 Seaborn
统计学方法实现
- 数据的中心化趋势:均值、中位数、众数
- 数据的离散趋势:方差、标准差、极差
- 数据分布:正态分布、二项分布、泊松分布
- 假设检验:t 检验、卡方检验、相关性检验
- 应用实例
- 总结
1. 统计学基础概念
1.1 描述性统计
描述性统计用于总结和描述数据的基本特征。最常见的描述性统计指标包括:
- 均值 (Mean):数据集的算术平均值。
- 中位数 (Median):将数据排序后位于中间的值。
- 众数 (Mode):数据集中出现频率最高的值。
- 方差 (Variance):数据点偏离均值的程度。
- 标准差 (Standard Deviation):方差的平方根,用于衡量数据的波动性。
- 极差 (Range):数据集中的最大值与最小值之间的差。
1.2 概率分布
概率分布描述了随机变量的所有可能取值及其相应的概率。在数据分析中,我们经常遇到以下几种常见的概率分布:
- 正态分布 (Normal Distribution):也称为高斯分布,具有对称的钟形曲线。
- 二项分布 (Binomial Distribution):描述在固定次数的独立实验中成功的次数。
- 泊松分布 (Poisson Distribution):描述在固定时间间隔内事件发生的次数。
1.3 假设检验
假设检验是一种用于确定数据是否支持某一假设的方法。常见的假设检验包括:
- t 检验:用于比较两个样本均值是否有显著差异。
- 卡方检验:用于检验两个分类变量之间是否独立。
- 相关性检验:用于检验两个变量之间是否存在相关性。
2. Python 统计库介绍
Python 提供了多个库来处理统计学问题,其中最常用的库包括:
2.1 NumPy
NumPy
是 Python 中最常用的数值计算库,提供了高效的数组和矩阵操作,支持基本的统计计算,如均值、方差、标准差等。
2.2 Pandas
Pandas
是一个强大的数据分析库,特别适合处理表格数据(如 CSV、Excel 文件)。它提供了方便的数据结构,如 DataFrame,可以用于数据清洗和统计分析。
2.3 SciPy
SciPy
是一个科学计算库,提供了高级的统计功能,包括概率分布、假设检验等。
2.4 Matplotlib 和 Seaborn
这两个库用于数据可视化,Matplotlib
提供了基本的绘图功能,而 Seaborn
在 Matplotlib
基础上封装了更简便的接口,专注于统计图表的绘制。
3. 统计学方法实现
3.1 数据的中心化趋势:均值、中位数、众数
3.1.1 计算均值、中位数、众数
import numpy as np
import pandas as pd
from scipy import stats
# 示例数据
data = [2, 3, 5, 7, 7, 8, 10, 12, 13, 15]
# 计算均值
mean = np.mean(data)
print(f"Mean: {mean}")
# 计算中位数
median = np.median(data)
print(f"Median: {median}")
# 计算众数
mode = stats.mode(data)
print(f"Mode: {mode.mode[0]}")
3.2 数据的离散趋势:方差、标准差、极差
3.2.1 计算方差、标准差、极差
# 计算方差
variance = np.var(data)
print(f"Variance: {variance}")
# 计算标准差
std_dev = np.std(data)
print(f"Standard Deviation: {std_dev}")
# 计算极差
range_value = np.ptp(data) # ptp = peak to peak
print(f"Range: {range_value}")
3.3 数据分布:正态分布、二项分布、泊松分布
3.3.1 正态分布
import matplotlib.pyplot as plt
import seaborn as sns
# 生成正态分布数据
normal_data = np.random.normal(loc=0, scale=1, size=1000)
# 绘制直方图
sns.histplot(normal_data, kde=True)
plt.title('Normal Distribution')
plt.show()
3.3.2 二项分布
# 生成二项分布数据
binomial_data = np.random.binomial(n=10, p=0.5, size=1000)
# 绘制直方图
sns.histplot(binomial_data, kde=True)
plt.title('Binomial Distribution')
plt.show()
3.3.3 泊松分布
# 生成泊松分布数据
poisson_data = np.random.poisson(lam=5, size=1000)
# 绘制直方图
sns.histplot(poisson_data, kde=True)
plt.title('Poisson Distribution')
plt.show()
3.4 假设检验:t 检验、卡方检验、相关性检验
3.4.1 t 检验
# 两组数据
group1 = [2, 3, 5, 7, 9]
group2 = [4, 6, 8, 10, 12]
# 独立样本 t 检验
t_stat, p_value = stats.ttest_ind(group1, group2)
print(f"T-statistic: {t_stat}, P-value: {p_value}")
3.4.2 卡方检验
# 假设数据
observed = np.array([10, 20, 30, 40])
expected = np.array([15, 25, 35, 25])
# 卡方检验
chi2_stat, p_value = stats.chisquare(observed, expected)
print(f"Chi-squared statistic: {chi2_stat}, P-value: {p_value}")
3.4.3 相关性检验(皮尔逊相关系数)
# 两组数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 计算皮尔逊相关系数
correlation, p_value = stats.pearsonr(x, y)
print(f"Correlation: {correlation}, P-value: {p_value}")
4. 应用实例
4.1 使用 Pandas 进行描述性统计分析
import pandas as pd
# 示例数据集
data = {
'age': [23, 45, 35, 50, 29, 60, 40],
'income': [50000, 100000, 75000, 120000, 65000, 150000, 95000]
}
# 创建 DataFrame
df = pd.DataFrame(data)
# 计算描述性统计
print(df.describe())
4.2 数据可视化
# 绘制年龄和收入的散点图
plt.scatter(df['age'], df['income'])
plt.xlabel('Age')
plt.ylabel('Income')
plt.title('Age vs Income')
plt.show()
5. 总结
在本教程中,我们介绍了统计学的基础概念,如描述性统计、概率分布和假设检验,并展示了如何使用 Python 实现这些概念。Python 提供了许多强大的库,如 NumPy
、Pandas
、SciPy
和 Matplotlib
,它们使得统计分析更加高效和便捷。