尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python数据分析三件套高效入门:NumPy+Pandas+Matplotlib实战

Python数据分析三件套高效入门:NumPy+Pandas+Matplotlib实战 如果你现在正打算从零开始学 Python 数据分析那么你大概率遇到过这样的窘境搜索框里输入“数据分析入门”收藏了十几篇文章每篇都从环境搭建开始讲但真正跟着做完一遍面对自己手里那份乱糟糟的数据表还是不知道从哪一步开始处理。这篇文章想给出一条更务实的路线不要一个一个地孤立去学 NumPy、Pandas、Matplotlib而是把这三个库当成一套组合拳来用。它们各自只需掌握最核心的 20% 操作组合起来就足够覆盖数据读取、清洗、聚合、可视化这条完整链路。不仅免费而且不需要依赖任何付费课程这也是标题里“吊打付费”想表达的意思入门数据分析所需的核心知识完全可以通过开源工具和免费资料学好付费课程的价值更多在于体系化引导和问题解答不是必需品。下面我会从环境搭建开始用一个最小项目带你跑通三件套最后附上常见问题和最佳实践方便你直接跟着操作。1. 这篇文章真正要解决的问题1.1 为什么非学这三件套不可先给这三件套做一个最直观的分工说明。库角色对应能力NumPy计算引擎多维数组运算、随机数生成、数学函数、广播计算Pandas数据工作台读写数据、筛选、清洗、分组聚合、透视表Matplotlib报告画笔折线图、柱状图、散点图、直方图、子图布局如果你处理的数据只有几十行用 Excel 确实够了。可一旦数据量到几万行甚至几十万行或者每天都要重复处理一份格式固定的报表Excel 就会变得非常低效。Python 三件套的价值不只是“画图比 Excel 好看”而是整个流程可以脚本化、自动化运行一次就能输出一份报告这是任何交互式表格工具难以替代的能力。1.2 付费课程教的核心到底是什么很多付费目录看起来很充实从 NumPy 的每一个函数讲到 Pandas 的每一个参数再到 Matplotlib 的每一种图表。但零基础学员听完之后最大的空缺是不知道怎么把这一大堆 API 串成一条针对真实数据的分析流程。所以这篇教程不追求 API 全覆盖而是优先讲清楚三件事每一个工具负责解决哪一类问题。三件工具之间如何衔接。在实际跑数据时最容易在哪里翻车。1.3 这篇文章适合谁刚学完 Python 基础语法准备转向数据分析方向工作中经常用 Excel 处理表格希望提升自动化水平学了三件套但不成体系遇到数据还是无从下手需要完成数据分析相关课程设计、毕业设计或小项目。如果你已经能熟练使用 Pandas 做复杂清洗可以跳过前四章直接看第 6 节综合案例和第 7 节排查清单。2. 环境准备与前置条件2.1 Python 版本选择本文代码基于 Python 3.8 及以上版本编写推荐安装官网提供的最新稳定版。版本以你实际安装为准因为三件套的核心 API 在这些版本中保持稳定不会影响本文示例运行。安装 Python 时Windows 用户注意勾选“Add Python to PATH”否则命令行里会出现“python 不是内部或外部命令”的提示。安装完成后打开命令行验证python --version pip --version如果提示找不到命令需要检查 Python 安装目录和 Scripts 目录是否已加到环境变量 Path 中。2.2 安装三件套强烈建议在虚拟环境中安装依赖避免和系统其它项目冲突。创建并激活虚拟环境python -m venv>pip install numpy pandas matplotlib如果网络不稳定可以临时使用国内镜像源pip install numpy pandas matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple另外建议安装 Jupyter方便逐段运行代码和做实验pip install jupyter如果你习惯 VSCode也可以只安装 Python 扩展直接在 .ipynb 文件里运行。2.3 验证环境是否就绪在 Python 交互环境或新建的 .py 文件中执行import numpy import pandas import matplotlib print(numpy.__version__) print(pandas.__version__) print(matplotlib.__version__)如果三行都能正常输出版本号说明环境已经就绪可以进入下一步。3. NumPy 核心概念与实战3.1 ndarray 是什么NumPy 的核心数据结构是ndarray也就是 N 维数组。很多初学者认为必须先搞懂底层内存布局才能用 NumPy实际上入门阶段只需要理解三个关键点ndarray里的元素通常是同一类型因此运算效率远高于 Python 普通列表。NumPy 提供了大量针对整个数组的操作不用写for循环。数组切片返回的是视图不是副本修改视图可能影响原数组。第三点是新手最容易踩的坑后面会专门演示。3.2 创建数组的常用方式import numpy as np # 一维数组 arr1 np.array([1, 2, 3, 4, 5]) # 二维数组 arr2 np.array([[1, 2], [3, 4]]) # 等差数列 range_arr np.arange(0, 12, 2) # 线性空间 lin_arr np.linspace(0, 1, 5) # 全零、全一数组 zeros np.zeros((2, 3)) ones np.ones((2, 3)) # 随机数推荐使用 Generator 方式 rng np.random.default_rng(42) random_arr rng.normal(loc0, scale1, size100) print(arr1.dtype) # 元素类型 print(arr1.shape) # 数组形状 print(random_arr[:5]) # 前5个随机数这里值得说明的是np.random.default_rng()是 NumPy 新版本推荐的随机数接口比老的np.random.seed()np.random.rand()方式更稳健也更适合后续项目用到随机数种子时保持结果可复现。3.3 切片与索引一维切片和 Python 列表切片非常接近。arr np.array([10, 20, 30, 40, 50]) print(arr[1:4]) # [20 30 40] print(arr[::-1]) # [50 40 30 20 10]二维数组使用行, 列的索引方式这是一个需要适应的点。matrix np.arange(12).reshape(3, 4) print(matrix) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] print(matrix[1, 2]) # 6 print(matrix[:, 1]) # 第二列的所有行 print(matrix[0:2, 1:3]) # 前两行的第2到3列接下来是视图和副本的问题。sub matrix[:2, :2] sub[0, 0] 99 print(matrix[0, 0]) # 99原数组也被修改了如果希望拿到一份独立副本使用.copy()sub matrix[:2, :2].copy()这个细节在数据清洗中很重要因为后面使用的 Pandas 也存在类似的视图与复制问题。3.4 向量化计算与布尔索引NumPy 的优势在于对数组的数学运算不需要写循环。data rng.normal(loc0, scale1, size1000) print(data.mean()) print(data.sum()) print(data.std()) print(data.min(), data.max()) # 布尔索引选出所有大于0的元素 positive data[data 0] print(positive.size)布尔索引在数据筛选阶段非常常用。进入 Pandas 后你也会经常用同样的思路做条件筛选。3.5 第三章小结NumPy 入门不需要背手册。会创建数组、会切片、会向量化计算、会用布尔索引已经能应对大部分数据预处理需求。4. Pandas 数据处理实战4.1 Series 和 DataFramePandas 的两种核心数据结构是Series一维数组带索引可以看成“带标签的一列数据”。DataFrame二维表格可以看成多个 Series 按列拼接而成。创建 DataFrame 最常见的方式是把字典传进去。import pandas as pd df pd.DataFrame({ name: [Alice, Bob, Charlie], city: [北京, 上海, 广州], salary: [12000, 15000, 13000] }) print(df)4.2
返回列表