当前位置: 首页 > news >正文

Python 数据统计分析全攻略:从基础到实战,一文掌握常用方法

在数据分析、机器学习、业务报表开发等场景中,数据统计分析是核心基础环节。Python 凭借丰富的第三方库,成为数据统计分析的首选工具。本文将系统梳理 Python 中数据统计分析的常用方法、核心库、实战代码,从基础统计量到高级分析,覆盖新手到进阶的全场景需求,适合数据分析初学者、开发人员快速上手。

一、Python 统计分析核心库介绍

Python 做统计分析无需从零编写算法,三大核心库覆盖 90% 以上场景:

  1. NumPy:底层数值计算库,提供数组运算、基础统计函数,是所有数据分析库的基础;
  2. Pandas:表格型数据处理神器,支持数据读取、清洗、分组统计、描述性分析,日常统计分析主力;
  3. Scipy:专业科学计算库,提供概率分布、假设检验、相关性分析等高级统计功能。
  4. 源码分享网:https://svipm.com.cn(描述:上千款各行各业的源码)

安装命令(一键安装):

bash

运行

pip install numpy pandas scipy

二、基础数据准备:读取与预处理

统计分析的第一步是数据加载 + 清洗,Pandas 是最佳选择,支持 CSV、Excel、数据库等多种数据源。

1. 数据读取

python

运行

import pandas as pd import numpy as np # 读取CSV文件(最常用) df = pd.read_csv("data.csv") # 读取Excel文件 # df = pd.read_excel("data.xlsx") # 查看数据前5行(快速预览数据结构) print("数据预览:") print(df.head())

2. 数据基础信息查看

python

运行

# 1. 查看数据维度(行数、列数) print("数据形状:", df.shape) # 2. 查看列名、数据类型、缺失值 print("\n数据基础信息:") df.info() # 3. 查看缺失值数量 print("\n各列缺失值统计:") print(df.isnull().sum())

3. 数据清洗(统计分析前提)

缺失值、异常值会导致统计结果失真,必须预处理:

python

运行

# 1. 删除含缺失值的行 df = df.dropna() # 2. 用均值/中位数填充数值型缺失值 df["age"].fillna(df["age"].mean(), inplace=True) # 3. 去除重复数据 df = df.drop_duplicates()

三、描述性统计分析(核心基础)

描述性统计用于快速了解数据整体特征,包括集中趋势、离散程度、分布形态,是所有分析的起点。

1. Pandas 一键生成描述统计

describe()方法自动生成均值、标准差、分位数、最值等核心指标,一行代码搞定基础统计

python

运行

# 对所有数值型列生成描述统计 print("数值型数据描述性统计:") print(df.describe()) # 对指定列做统计 print("\n指定列(score)描述统计:") print(df["score"].describe())

2. 单独计算核心统计量

除了一键生成,还可单独提取需要的统计指标:

表格

统计量函数作用
均值mean()数据平均水平
中位数median()数据中间值(抗异常值)
众数mode()出现次数最多的值
标准差std()数据离散程度
方差var()数据波动程度
最大值 / 最小值max()/min()数据边界
四分位数quantile()数据分布区间

实战代码

python

运行

# 以分数列为例 score = df["score"] print("均值:", score.mean()) print("中位数:", score.median()) print("众数:", score.mode()[0]) # 取第一个众数 print("标准差:", round(score.std(), 2)) print("25%分位数:", score.quantile(0.25)) print("75%分位数:", score.quantile(0.75))

3. 频数统计(分类数据)

针对性别、学历、类别等非数值型数据,统计各类别出现次数:

python

运行

# 统计性别分布 print("性别频数统计:") print(df["gender"].value_counts()) # 统计占比(百分比) print("\n性别占比:") print(df["gender"].value_counts(normalize=True) * 100)

四、分组统计分析(业务高频场景)

实际业务中,常需要按类别分组统计(如按部门统计薪资、按班级统计成绩),Pandas 的groupby是核心工具。

1. 单字段分组统计

python

运行

# 按性别分组,计算分数的均值、最大值、最小值 group_stats = df.groupby("gender")["score"].agg( 平均分数="mean", 最高分数="max", 最低分数="min", 人数="count" ) print("按性别分组统计分数:") print(group_stats.round(2))

2. 多字段分组统计

python

运行

# 按性别+班级分组,统计分数 multi_group = df.groupby(["gender", "class"])["score"].mean() print("\n多字段分组统计:") print(multi_group.unstack()) # 格式化输出

五、高级统计分析:相关性与假设检验

完成基础统计后,进阶分析可挖掘数据间的关系、验证业务假设,Scipy 库是核心。

1. 相关性分析

分析两个变量的线性关系(如身高与体重、广告投入与销量),取值范围[-1,1]

  • 绝对值越接近 1,相关性越强;
  • 正数:正相关,负数:负相关。

python

运行

# 1. Pandas计算相关系数矩阵 print("变量相关性矩阵:") corr_matrix = df[["age", "score", "income"]].corr() print(corr_matrix) # 2. Scipy精确计算相关系数+显著性p值 from scipy.stats import pearsonr # 计算年龄和分数的相关性 corr, p_value = pearsonr(df["age"], df["score"]) print(f"\n年龄与分数相关系数:{round(corr,2)},p值:{round(p_value,4)}") # p<0.05 表示相关性显著

2. 假设检验(T 检验)

验证两组数据是否存在显著差异(如男女成绩是否有差异):

python

运行

from scipy.stats import ttest_ind # 分组数据 male_score = df[df["gender"]=="男"]["score"] female_score = df[df["gender"]=="女"]["score"] # 独立样本T检验 t_stat, p_value = ttest_ind(male_score, female_score) print(f"T统计量:{round(t_stat,2)},p值:{round(p_value,4)}") # 结果判断 if p_value < 0.05: print("男女分数存在显著差异") else: print("男女分数无显著差异")

3. 数据分布检验

判断数据是否符合正态分布(机器学习、统计检验的前提):

python

运行

from scipy.stats import shapiro # Shapiro正态性检验 stat, p_value = shapiro(df["score"]) if p_value > 0.05: print("分数数据符合正态分布") else: print("分数数据不符合正态分布")

六、数据可视化:让统计结果更直观

统计分析离不开可视化,Matplotlib/Seaborn 快速绘制图表:

python

运行

import matplotlib.pyplot as plt import seaborn as sns # 设置中文显示 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False # 1. 直方图(查看数据分布) plt.figure(figsize=(10,4)) plt.subplot(1,2,1) sns.histplot(df["score"], kde=True) plt.title("分数分布直方图") # 2. 箱线图(查看异常值) plt.subplot(1,2,2) sns.boxplot(x="gender", y="score", data=df) plt.title("男女分数箱线图") plt.tight_layout() plt.show() # 3. 热力图(展示相关性) plt.figure(figsize=(8,6)) sns.heatmap(corr_matrix, annot=True, cmap="coolwarm") plt.title("变量相关性热力图") plt.show()

七、完整实战案例

结合以上方法,做一个完整的学生成绩统计分析:

python

运行

# 1. 导入库 import pandas as pd import numpy as np from scipy.stats import pearsonr, ttest_ind import matplotlib.pyplot as plt import seaborn as sns # 2. 数据加载与清洗 df = pd.read_csv("student_score.csv") df = df.dropna().drop_duplicates() # 3. 描述性统计 print("===== 成绩描述统计 =====") print(df["score"].describe().round(2)) # 4. 分组统计 print("\n===== 班级成绩统计 =====") print(df.groupby("class")["score"].agg(["mean", "max", "min"]).round(2)) # 5. 相关性分析 corr, p = pearsonr(df["study_time"], df["score"]) print(f"\n学习时长与成绩相关系数:{round(corr,2)}") # 6. 可视化 plt.figure(figsize=(12,5)) sns.boxplot(x="class", y="score", data=df) plt.title("各班级成绩分布") plt.show()

八、总结

Python 数据统计分析核心逻辑:数据清洗 → 描述统计 → 分组分析 → 进阶检验 → 可视化,对应工具:

  1. 基础数据处理:Pandas(必学);
  2. 数值计算:NumPy
  3. 高级统计:Scipy
  4. 可视化:Matplotlib/Seaborn

本文覆盖了日常工作中 90% 的统计分析场景,从基础函数到实战代码,新手可直接复制使用,进阶可在此基础上拓展机器学习、时间序列分析等场景。


💡 原创不易,欢迎点赞、收藏、关注,后续会更新 Python 数据分析进阶实战~

http://www.jsqmd.com/news/551417/

相关文章:

  • 全面解析数据库锁机制:从行锁到死锁的深度剖析
  • 一文搞懂:Agent、Harness Engineering、MCP、Skill 到底是什么
  • 3月28日洛谷蓝桥杯省赛模拟补题
  • [算法训练] LeetCode Hot100 学习笔记#16
  • RDP Wrapper终极指南:解锁Windows多用户远程桌面完整功能
  • Python AI用例生成全链路实践(含12个工业级代码片段+GPT-4/Claude/Llama3对比基准)
  • RedisInsight可视化管理工具:面向开发者的Redis数据库高效管理指南
  • 汉语与英语对比分析
  • 2026年OpenClaw 两种部署方案实战(阿里云+本地私有化)
  • 如何快速扩展PDF补丁丁功能:零基础插件开发指南
  • 家庭时光 - OpenClaw让周末更美好
  • 告别串口!用应广单片机玩转单线调试,这4种编码方案你试过几种?
  • Audacity:免费开源的全能音频编辑与录制解决方案
  • 终极指南:3分钟掌握mimalloc,微软出品的高性能内存分配器
  • 终极免费AI图像放大神器Upscayl:3步让模糊照片秒变高清画质
  • Ubuntu20.04+Docker+Autoware.AI:一站式部署与避坑指南
  • Sparrow高级技巧:函数级别搭建与业务逻辑代码组装
  • OpenClaw 5大高频自动化场景落地(附代码/配置)
  • 如何快速安装xbmc-addons-chinese:10分钟搞定Kodi中文插件配置
  • FLAC 3D单轴静载试验技术详解:源文件解读、代码解析与结果精细分析
  • OpenClaw 2026最新版更新日志+常见问题排查(新手必看)
  • 基于STM32与PWM技术的智能饮水机双温控制方案
  • SmartRefreshLayout架构深度解析:构建高性能Android刷新体验的技术实践
  • 可乐喵大战构造题
  • 【技术实战】RK356X Ubuntu下USB摄像头多终端RTSP推流方案
  • OneMore:重新定义OneNote效率的开源知识管理工具
  • 抖音批量采集工具:从零构建你的个人视频资源库
  • 从标准到实战:网络变压器在POE应用中的AF/AT/BF/BT详解与电路设计指南
  • RDP Wrapper Library完全指南:解锁Windows远程桌面多用户连接功能
  • AWPortrait-Z高级参数详解:推理步数/引导系数/随机种子组合策略