统计分析是数据科学的核心,帮助我们从数据中提取有意义的洞察。本章涵盖从描述性统计到推断性统计,从数据分组到相关回归分析的全套统计方法。
import pandas as pd
import numpy as np
# 创建示例数据
data = {
'年龄': np.random.normal(35, 8, 100),
'收入': np.random.normal(50000, 15000, 100)
}
df = pd.DataFrame(data)
// 描述性统计
print(df.describe())
// 偏度和峰度
print(f"年龄偏度: {df['年龄'].skew():.3f}")
print(f"收入峰度: {df['收入'].kurtosis():.3f}")
from scipy import stats
// 创建两组样本
group_a = np.random.normal(75, 10, 50)
group_b = np.random.normal(72, 12, 50)
// 独立样本t检验
t_stat, p_value = stats.ttest_ind(group_a, group_b)
print(f"t统计量: {t_stat:.3f}, p值: {p_value:.3f}")
if p_value < 0.05:
print("两组均值有显著差异")
// 创建含分类变量的数据
data = {
'地区': np.random.choice(['东部', '西部', '南部'], 100),
'销售额': np.random.uniform(1000, 50000, 100)
}
df = pd.DataFrame(data)
// 分组统计
region_stats = df.groupby('地区')['销售额'].agg(['mean', 'sum', 'count'])
print(region_stats)
// 透视表
pivot = pd.pivot_table(df, values='销售额', index='地区', aggfunc='mean')
print(pivot)
from scipy.stats import pearsonr
from sklearn.linear_model import LinearRegression
// 创建示例数据
X = np.random.normal(50, 15, 100) // 广告投入
Y = 2 * X + 30 + np.random.normal(0, 10, 100) // 销售额
// 相关分析
corr, p_value = pearsonr(X, Y)
print(f"相关系数: {corr:.3f}")
// 线性回归
X_reshaped = X.reshape(-1, 1)
model = LinearRegression()
model.fit(X_reshaped, Y)
print(f"系数: {model.coef_[0]:.3f}, 截距: {model.intercept_:.3f}")
// 电商数据分析案例
data = {
'年龄': np.random.normal(35, 10, 200),
'收入': np.random.normal(50000, 20000, 200),
'访问频率': np.random.poisson(8, 200),
'地区': np.random.choice(['东部', '西部', '南部'], 200)
}
df = pd.DataFrame(data)
// 地区分组分析
region_analysis = df.groupby('地区').agg({
'收入': 'mean',
'访问频率': 'mean'
})
print(region_analysis)
// 数据分析方法选择指南
methods_guide = {
"了解数据特征": "描述性统计",
"比较组间差异": "t检验/方差分析",
"分析变量关系": "相关分析",
"预测建模": "回归分析",
"分类分析": "分组聚合"
}
for scenario, method in methods_guide.items():
print(f"{scenario} → {method}")