Python 数据统计入门必学:描述性统计的实现方法与案例

一、描述性统计核心指标

描述性统计通过关键指标概括数据特征:

  1. 集中趋势

    • 均值:$\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i$
    • 中位数:有序数据中间位置的值
    • 众数:出现频率最高的值
  2. 离散程度

    • 方差:$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)$
  3. 分布形态

    • 偏度:$\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存在离散值

四、注意事项
  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)]
    

  2. 指标选择原则

    • 对称分布:均值+标准差
    • 偏态分布:中位数+四分位距
    • 分类数据:频数统计+众数

掌握描述性统计是数据分析的基石,结合可视化可快速洞察数据本质特征。建议在Jupyter Notebook中逐步运行代码,实时观察统计结果与图形的对应关系。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐