新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python数据分析三件套:Numpy、Pandas、Matplotlib 入门教程

发布时间:2026/9/2 16:08:08来源:尧图网络
Python数据分析三件套:Numpy、Pandas、Matplotlib 入门教程
Python 数据分析这个方向绕不开的三件套就是 Numpy、Pandas、Matplotlib。Numpy 提供高性能数组运算Pandas 负责把 CSV、Excel 等表格数据读进来、清洗好、聚合好Matplotlib 再把结果画成折线图、柱状图、散点图。对零基础的人来说最容易犯的错不是学不会某个函数而是不知道什么时候该用哪个库。这篇教程按我自己的上手路径写先讲清楚三个库的分工和环境准备再分别过一遍核心操作最后用一个完整的销量分析案例把整个流程串起来并把最常见的报错和排查顺序放在末尾。你不需要背 API只需要跟着步骤跑通一遍后面遇到具体需求再查看文档。1. 先搞清楚三件套的分工这是入门最重要的判断1.1 什么时候用 NumpyNumpy 的核心是 ndarray 数组对象。它的优势在于同类型数据、连续内存、矢量化运算。适合做矩阵运算、科学计算、随机数生成、条件映射这类数值任务。比如要对一个数组里所有大于 100 的元素清零Numpy 里一行arr[arr 100] 0就能完成而 Python 原生列表要写 for 循环数据量一大速度差距就非常明显。Numpy 不需要你手动管理内存也不要求你理解编译原理但你要知道它的运算方式是“整体生效”的。它处理的是数值块不是单个数字。这个意识建立起来之后你再去看 Pandas 的很多操作会发现底层逻辑是相通的。1.2 什么时候用 PandasPandas 更适合处理表格型数据。它有 DataFrame 和 Series 两个核心对象。DataFrame 可以理解成一张 Excel 表有行索引和列名每一列可以是不同类型。读 Excel、CSV、数据库导出文件做筛选、去重、缺失值处理、分组聚合这些都是 Pandas 的主场。Numpy 可以直接用于 Pandas 列内部的计算但日常打交道最多的是 Pandas 的 API。Pandas 解决的是“数据落地”的问题。文件读进来之后你可以先看行列数量、列名、每列类型、缺失值情况再做清洗和加工。这些操作如果在 Excel 里手动做几十万行数据能把人折磨到怀疑人生而 Pandas 只需要几条语句。1.3 什么时候用 MatplotlibMatplotlib 只负责一件事把分析结果变成图形。它本身不处理表格逻辑你给它 x 和 y它负责画坐标轴、折线、柱子、图例和标题。在分析流程里通常放在最后一步但它的输出质量直接影响读图的人能否快速理解结论。画图不是简单地把数据摆上去而是要考虑图表类型、坐标轴范围、标题、图例、颜色、网格线。这些细节决定了图是“能看”还是“看得舒服”。Matplotlib 在这方面的控制能力很强只要你能把数据整理成它需要的结构它就能把图调整到适合汇报的状态。1.4 三者的固定协作流程大多数情况下你不需要在任务开始时决定用哪个库而是顺着流程走。这里给一个判断方法拿到的数据是 .csv、.xlsx、.json 或数据库表先用 Pandas 读。要对某列做数学计算、条件替换、随机抽样直接用 Numpy 函数或 Pandas 内置的 Numpy 风格写法。分析结果需要展示给别人或看趋势再用 Matplotlib 画图。有一次我处理一个订单明细文件里面既有客户名称又有金额明细第一步就是pd.read_excel读取然后groupby聚合聚合结果需要按金额排序就用sort_values最后要画月度销售额曲线直接用聚合结果的两列传给plt.plot。整个流程中 Numpy 没有直接出现在代码里但它负责了排序、求和这些底层操作。这种分工在真实项目中几乎每天发生。下面给一个更直观的任务选择表。任务使用库典型方法矩阵乘法Numpynp.dot(a, b)或a b读取 Excel 表Pandaspd.read_excel去掉重复订单Pandasdf.drop_duplicates月度销量趋势Matplotlibplt.plot按部门算平均工资Pandasdf.groupby(部门)[工资].mean()把一组数据转换为均值为 0 的标准分Numpy(x - x.mean()) / x.std()2. 环境搭建Python、三个库、IDE 一次配好2.1 安装 Python 并加入系统环境变量访问 python.org 下载对应平台的安装包。Windows 用户注意第一个勾选页面必须勾选 Add Python to PATH不然后面执行pip会提示找不到命令。macOS 用户建议直接用 Homebrew 安装Linux 用户可以用 apt 或 yum也可源码编译。标题里说 2026 最新版事实上这三件套不需要追最新测试版。只要 Python 版本在 3.9 以上主流组合基本都能正常安装。如果你电脑里已经装过 Python装库之前先用下面命令确认 pip 对应的是哪个版本python --version pip --version我见过很多人在这一步踩坑python是 3.10pip却指向另一个目录的 Python最后库装了一大堆导入时全部报 ModuleNotFoundError。最好确认python和pip属于同一个安装路径。2.2 用 pip 安装三个库安装命令pip install numpy pandas matplotlib如果下载速度慢可以换成国内镜像源pip install numpy pandas matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simplepip install pandas openpyxl这种方式也比较常见openpyxl 只是读取 Excel 时的可选依赖。建议一开始就把 openpyxl 一起装上否则后面读 .xlsx 文件会报错。如果你用的是 PyCharm也可以直接在 Settings 的 Project Interpreter 里搜索这三个库点安装但要确保右下角或设置里选中的解释器和你命令行里用的是同一个。安装完成后进入 Python 环境运行下面的验证代码import numpy as np import pandas as pd import matplotlib.pyplot as plt print(np.__version__) print(pd.__version__) print(plt.__version__)如果能正常输出三个版本号说明安装成功。这一步不能只看 pip 提示安装成功因为很可能你的电脑里有多个 Python 环境pip 装到了某个解释器里而你的 IDE 用的是另一个解释器。2.3 IDEJupyter Notebook 还是 VS Code学习阶段我更推荐 Jupyter Notebook。它的单元格适合一步一步看中间结果比如读取数据后马上打印前几行清洗后再查看是否生效。VS Code 也内置了 Jupyter 支持也可以在它里面安装 Python 扩展后直接跑 .py 脚本。我的建议是入门用 Jupyter把流程跑通写独立工具或部署到服务器时改成脚本文件。不要在这个问题上纠结太久。工具只是入口核心是把代码跑起来、看到结果。先选一个你最容易打开的用起来之后自然会发现是否顺手。2.4 版本兼容问题怎么确认新手经常见到两类版本报错。第一类是numba needs numpy 2.4 or less. got numpy 2.5.这种说明项目里某个库对新版 numpy 不兼容需要降级 numpy。第二类是安装时提示RuntimeError: numpy was built with baseline optimizations: (x86_v2) ...这个提示多数情况下不需要处理只是说你当前安装的 numpy 是按基础指令集编译的运行会略慢但不是不能跑如果你用源码安装或自定义编译可以考虑换官方 pre-built wheel。判断版本是否合适的最快方式是先看报错信息里的库名和版本号再决定升级还是降级不要把依赖全部升到最新。3. Numpy 上手从创建数组到矢量化运算3.1 从 Python 列表到 ndarray创建一个 ndarray 非常简单import numpy as np data [1, 2, 3, 4, 5] arr np.array(data) print(arr) # [1 2 3 4 5] print(arr.shape) # (5,) print(arr.dtype) # int64二维数组就是矩阵matrix np.array([[1, 2, 3], [4, 5, 6]]) print(matrix.shape) # (2, 3) print(matrix[1, 2]) # 6ndarray 和 Python 原生 list 最核心的差异是类型和内存布局。list 里可以同时放数字、字符串、对象ndarray 要求同一类型。正因为类型统一Numpy 才能做底层矢量化运算。3.2 零基础也要记住的创建方式实际分析里很少自己敲一个数组更多是生成初始化数组、等差数列、随机数。常用创建方式np.zeros((3, 4)) # 全 0 np.ones((2, 5)) # 全 1 np.arange(0, 10, 2) # [0 2 4 6 8] np.linspace(0, 1, 5) # 等间隔取 5 个数 np.random.randn(3, 3) # 标准正态分布随机数 np.random.randint(0, 100, 10) # 0 到 99 的随机整数要特别提醒一个习惯只要代码里用到随机数又在做正式分析务必先设置随机种子np.random.seed(2026)随机种子不设置每次运行结果可能不同。写教程、做实验对比、复现别人结果时种子不固定会浪费大量时间。3.3 矢量化运算尽量避免 for 循环Numpy 的强大来自矢量化。同样是让数组每个元素乘以 2原生列表要写循环ndarray 只需要a np.array([1, 2, 3]) b np.array([4, 5, 6]) print(a b) # [5 7 9] print(a * 2) # [2 4 6] print(a 2) # [False False True]条件筛选更是高频操作scores np.array([88, 92, 67, 45, 99]) passed scores[scores 60] print(passed) # [88 92 67 99]如果要做不同条件下的映射用np.wherelabels np.where(scores 60, 及格, 不及格)这条规则同样适用于 Pandas 里的列级操作。只要能用数组运算表达就不要写成逐行循环。小数据量看不出差距几十万行时性能差异可能是几十倍。3.4 聚合和其他高频函数sum、mean、max、argmax、argmin是最常用聚合方法。需要注意argmax返回的是最大值第一次出现的位置不是最大值本身。数组合并使用np.concatenate、np.vstack、np.hstack要生成网格坐标可以用np.mgrid或np.meshgrid。Numpy 的 API 很多入门阶段只记上面这些就够用了其余遇到具体需求再查。4. Pandas 核心操作读表、清洗、聚合4.1 Series 和 DataFrame 先分清Series 是带索引的一列数据DataFrame 是多列表格。两者在 Pandas 中地位不同但日常项目中最常操作的是 DataFrame。import pandas as pd df pd.DataFrame({ 姓名: [张三, 李四, 王五], 部门: [技术部, 市场部, 技术部], 工资: [8000, 7000, 9000] }) print(df.head())head()默认看前 5 行是入门阶段最应该养成的习惯。读完表先别急着算先看结构。4.2 读取 CSV 和 Excel 文件df_csv pd.read_csv(sales.csv, encodingutf-8) df_excel pd.read_excel(sales.xlsx, sheet_nameSheet1, engineopenpyxl)最常见的读文件问题就是编码。CSV 文件可能是 utf-8、gbk 或 gb2312。遇到乱码时尝试把 encoding 改成gbk或utf-8-sig。如果是 Excel 文件报缺少 openpyxl执行pip install openpyxl。路径问题也很常见建议先确认当前工作目录再用绝对路径读取。4.3 数据清洗drop、去重、缺失值拿到表后第一步应该是df.info()和df.isnull().sum()看每一列类型是否合理有没有缺失值。df.info() df.isnull().sum() df df.drop(columns[备注]) df df.drop_duplicates(subset[姓名, 部门], keepfirst) df[工资] df[工资].fillna(df[工资].mean())drop_duplicates的keepfirst表示当指定列组合出现重复值时保留第一条。业务上经常遇到“两列值均相同则取第一条数据即可”的需求比如订单流水按订单号和商品去重。如果不指定 subsetPandas 会对整行所有列去重这一点很容易被忽略。fillna用来填充缺失值。填平均值、0、前一行值都可以但你要明确为什么这样填。是均值填充、中位数填充还是删除取决于业务含义。4.4 数据类型转换和日期处理数据类型不对会导致排序、分组、绘图全部出错。常见处理df[工资] df[工资].astype(float) df[日期] pd.to_datetime(df[日期], format%Y-%m-%d)astype转换失败时先看数据里有没有 3,200、3,200 元 这类带符号的内容先替换掉再转换。日期列是字符串时无法直接按月份聚合必须先用pd.to_datetime转成时间类型。4.5 分组聚合和排序分组是 Pandas 最重要的能力之一。按部门统计工资总和、平均工资、人数一条语句能完成result df.groupby(部门)[工资].agg([sum, mean, count]) print(result) top df.sort_values(工资, ascendingFalse).head(3) print(top)agg里可以放多个聚合函数一次统计多种指标。排序后用head取前三名这是查看最高值时最顺手的方式。4.6 列名和索引调整读取数据后列名可能包含空格、中文或不规范大小写。建议先df.columns查看再用rename修改df df.rename(columns{工资元: 工资})如果列名里有空格访问列名时很容易踩坑比如df[工资 ]和df[工资]是两个完全不同的列。做大批量数据处理前先把列名整理好能省下非常多的排错时间。5. Matplotlib 可视化从单张图到组合图5.1 画图的基本流程Matplotlib 的用法
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

win本机设置服务启停脚本 2026/9/2 17:02:21

win本机设置服务启停脚本

将以下内容放到新建的.bat文件 脚本示例MySQL服务,更换服务中对应的名称即可启停其他服务,例如Redis服务等echo off chcp 65001 >nul setlocal EnableExtensions rem 到服务中找mysql对应名称复制(需要区分大小写) set "S…

阅读更多 →
售价749美元的FP-40:连接Piano Sphere应用,实现个性化学习反馈与激励 2026/9/2 17:02:21

售价749美元的FP-40:连接Piano Sphere应用,实现个性化学习反馈与激励

FP - 40:连接应用开启个性化音乐学习售价749美元的FP - 40具备独特功能,它能够与该公司的Piano Sphere应用程序相连接。通过这种连接,用户可以获得“个性化学习、反馈和激励”的体验,为学习钢琴提供了新途径。直击音乐学习痛点的产…

阅读更多 →
PID参数整定实战:三分钟快速调参流程与工程实践指南 2026/9/2 17:02:21

PID参数整定实战:三分钟快速调参流程与工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
计算机毕业设计之基于HTML+CSS+JavaScript技术的电影推荐网站的设计与实现 2026/9/2 17:02:21

计算机毕业设计之基于HTML+CSS+JavaScript技术的电影推荐网站的设计与实现

信息技术是当今社会发展的重要方向之一,它已经深入到各个行业中。随着计算机技术的发展,信息技术已经从传统的数据处理转变为网络信息的处理和交互。在管理方面,通过信息管理技术,系统可以快速的处理大量的数据,并且能…

阅读更多 →
从零实现CW Morse Code Trainer:莫尔斯码训练器的开源实践 2026/9/2 17:02:21

从零实现CW Morse Code Trainer:莫尔斯码训练器的开源实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
基于微信小程序的文化旅游系统毕业设计项目源码 2026/9/2 16:59:21

基于微信小程序的文化旅游系统毕业设计项目源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞