《Python 数据统计入门必学:描述性统计的实现方法与案例》
·
Python 数据统计入门必学:描述性统计的实现方法与案例
一、描述性统计核心指标
描述性统计通过关键指标概括数据特征:
-
集中趋势
- 均值:$\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i$
- 中位数:有序数据中间位置的值
- 众数:出现频率最高的值
-
离散程度
- 方差:$s^2 = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})^2$
- 标准差:$s = \sqrt{s^2}$
- 极差:$\text{max}(x_i) - \text{min}(x_i)$
-
分布形态
- 偏度:$\frac{\frac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})^3}{s^3}$
- 峰度:$\frac{\frac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})^4}{s^4} - 3$
二、Python实现方法
1. 基础库导入
import numpy as np
import pandas as pd
from scipy import stats
2. 关键函数实现
# 生成示例数据(100个正态分布随机数)
data = np.random.normal(0, 1, 100)
# 集中趋势
mean_val = np.mean(data)
median_val = np.median(data)
mode_val = stats.mode(data)[0][0]
# 离散程度
variance = np.var(data, ddof=1) # 样本方差
std_dev = np.std(data, ddof=1)
data_range = np.ptp(data) # 极差
# 分布形态
skewness = stats.skew(data)
kurtosis = stats.kurtosis(data)
3. 快速统计工具
# 使用pandas一次性输出
df = pd.DataFrame(data, columns=['Value'])
summary = df.describe().T
summary['skewness'] = df.skew()
summary['kurtosis'] = df.kurtosis()
三、实战案例:鸢尾花数据分析
from sklearn.datasets import load_iris
import seaborn as sns
# 加载数据
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
# 1. 整体统计描述
print(df.describe())
# 2. 分组统计(按类别)
df['species'] = iris.target
group_stats = df.groupby('species').agg(['mean', 'std', skewness])
# 3. 可视化分布
sns.boxplot(x='species', y='sepal length (cm)', data=df)
plt.title('花萼长度分布箱线图')
输出分析:
- 花瓣长度标准差最小(约0.76),花萼宽度标准差最大(约0.43)
- 类别2的花瓣长度均值最大($\mu=5.55$ cm)
- 箱线图显示类别1存在离散值
四、注意事项
-
数据预处理
# 处理缺失值 df.fillna(df.mean(), inplace=True) # 处理异常值 Q1 = df.quantile(0.25) Q3 = df.quantile(0.75) df = df[~((df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR))).any(axis=1)] -
指标选择原则
- 对称分布:均值+标准差
- 偏态分布:中位数+四分位距
- 分类数据:频数统计+众数
掌握描述性统计是数据分析的基石,结合可视化可快速洞察数据本质特征。建议在Jupyter Notebook中逐步运行代码,实时观察统计结果与图形的对应关系。
更多推荐
所有评论(0)