当前位置:首页>python>《Python 从入门到精通》145|Pandas 入门:最强表格数据处理工具之一

《Python 从入门到精通》145|Pandas 入门:最强表格数据处理工具之一

  • 2026-09-09 01:07:41
《Python 从入门到精通》145|Pandas 入门:最强表格数据处理工具之一

一、为什么一到数据处理,大家几乎都会提 Pandas

如果你前面已经学过列表、字典、NumPy,那么你会慢慢发现一个问题:

这些工具都能处理数据,但一旦数据长得像表格,事情就会开始变麻烦。

比如你有一份销售表:

日期、商品、销量、单价、门店

你想做这些操作:

筛出某个门店的数据 找出销量大于 100 的记录 统计每个商品的总销量 按日期排序 把缺失值补上 导出成新的 Excel 或 CSV

如果只靠列表套字典,当然不是不能做,但代码通常会越来越碎,越来越难维护。 而 Pandas 就是专门为这种表格型数据而生的。

它最大的价值,不只是快,而是特别适合处理真实世界里最常见的数据形态:

表格 清单 报表 日志 CSV Excel 数据库查询结果

所以很多人一学数据分析、数据清洗、自动化办公,都会很快接触到 Pandas。 不是因为它听起来高级,而是因为它真的很实用。

二、Pandas 到底是什么

Pandas 是 Python 里最常用的数据分析与表格处理库之一。

你可以先把它理解成:

一个专门用来处理二维表格数据的强大工具库。

它特别擅长做这些事:

读取表格文件 查看数据 筛选数据 清洗脏数据 统计分析 按条件过滤 分组汇总 排序 补空值 导出结果

如果说 NumPy 更像“高效数值数组工具”,那 Pandas 更像“表格数据处理专家”。

两者不是对立关系,而是经常配合使用。 很多时候,Pandas 底层就依赖 NumPy 来完成高效计算。

三、为什么 Pandas 这么受欢迎

根本原因很简单:

它让表格处理这件事,从麻烦变得顺手。

举个很现实的对比。

你要从一堆销售记录里筛出销量大于 100 的数据。 如果你用纯 Python 循环,往往要一条条判断。 如果你用 Pandas,很多时候一行就能完成。

你要统计每一列的平均值。 你要按某一列排序。 你要找空值。 你要删掉重复行。 这些动作在 Pandas 里都非常自然。

所以 Pandas 的强,不只是功能多,而是它特别符合表格数据处理的思维方式。 你想做什么,它往往都有现成、清晰、可读性高的写法。

四、先安装 Pandas

如果当前环境还没有安装,可以先装:

python -m pip install pandas

导入时,最常见的写法是:

import pandas as pd

和 NumPy 用 np 一样,Pandas 几乎约定俗成都写成 pd。 以后你看到:

import pandas as pd

要立刻反应过来,这就是在用 Pandas。

五、Pandas 里最重要的两个对象

入门阶段,你先记住两个名字就够了:

Series DataFrame

1. Series

它可以理解成“带索引的一维数据”。

有点像一列数据。 比如一列成绩、一列商品价格、一列姓名。

2. DataFrame

它可以理解成“带行列标签的二维表格”。

这才是 Pandas 最常用、最核心的对象。 你可以把它想成 Excel 里的一张工作表,或者数据库查询出来的一张结果表。

这一章是 Pandas 入门,所以你先知道有这两个对象。 后面下一章会更系统地讲 DataFrame。

六、先看一个最简单的 Series

import pandas as pds = pd.Series([88, 92, 75, 60])print(s)

输出大致会像这样:

088192275360dtype: int64

左边这一列是索引。 右边这一列是数据。

你也可以自己指定索引:

import pandas as pds = pd.Series([88, 92, 75], index=["张三", "李四", "王五"])print(s)

输出大致是:

张三    88李四    92王五    75dtype: int64

这时候它就不像普通列表了。 因为它不仅有值,还有标签。

你可以这样取值:

print(s["李四"])

所以 Series 可以看成:

列表 + 索引标签 或者 字典风格的一维数据结构

七、真正的主角:DataFrame

Pandas 最常用的其实不是 Series,而是 DataFrame。

先看一个最基础的创建方式:

import pandas as pddata = {"姓名": ["张三", "李四", "王五"],"年龄": [20, 22, 21],"成绩": [88, 92, 75]}df = pd.DataFrame(data)print(df)

输出大致是:

   姓名  年龄  成绩0  张三  20881  李四  22922  王五  2175

你会发现,这已经非常像一张表了。

列名就是:

姓名 年龄 成绩

左边的 0、1、2 是默认行索引。

这就是 Pandas 最迷人的地方之一。 你拿到一份结构化数据后,很快就能把它变成一张可操作的表。

八、为什么 DataFrame 比列表套字典更适合表格处理

先想象不用 Pandas 时,你可能会这样存数据:

students = [    {"姓名": "张三", "年龄": 20, "成绩": 88},    {"姓名": "李四", "年龄": 22, "成绩": 92},    {"姓名": "王五", "年龄": 21, "成绩": 75}]

这当然没问题。 但如果你想:

取出整列成绩 找出成绩大于 80 的学生 按年龄排序 增加一列是否及格 导出成 CSV

代码就会越来越长。

而 DataFrame 天然就是表格结构,所以这些操作会变得非常顺手。 这就是为什么只要数据是“按行按列组织的”,Pandas 往往就比原生结构更舒服。

九、DataFrame 的基本信息先怎么看

拿到一张表后,第一件事通常不是立刻分析,而是先“认识它”。

比如:

import pandas as pddata = {"姓名": ["张三", "李四", "王五"],"年龄": [20, 22, 21],"成绩": [88, 92, 75]}df = pd.DataFrame(data)

先看前几行:

print(df.head())

默认看前 5 行。 数据量大时非常有用。

看后几行:

print(df.tail())

看行列形状:

print(df.shape)

输出大致是:

(3, 3)

表示 3 行 3 列。

看列名:

print(df.columns)

看索引:

print(df.index)

看每列的数据类型:

print(df.dtypes)

这些都是刚接触一份表格时特别实用的操作。 你可以把它理解成先“摸清这张表长什么样”。

十、info 和 describe 是入门阶段非常值钱的两个方法

1. info()

它能快速告诉你:

一共有多少行 每列有没有空值 每列是什么类型 整体内存占用大概怎样

print(df.info())

你会看到类似这样的信息:

列名 非空数量 数据类型

这对判断脏数据特别有帮助。

2. describe()

它会对数值列做统计摘要,比如:

计数 平均值 标准差 最小值 四分位数 最大值

print(df.describe())

如果你拿到的是销售数据、成绩数据、价格数据,这个方法能非常快地帮你对整体分布有个感觉。

所以以后拿到一份新表格,建议先来一套:

head()info()describe()

很多问题,一眼就能先看出个大概。

十一、怎么取一列数据

DataFrame 本质上是一张表。 取一列,是最常见操作之一。

比如:

print(df["成绩"])

输出会是一个 Series。

也就是说,DataFrame 取出单列后,通常就变成一维结构了。

你也可以一次取多列:

print(df[["姓名", "成绩"]])

注意这里是双层中括号。 因为你传进去的是“列名列表”。

单列是 Series。 多列还是 DataFrame。

这点特别重要,后面很多操作都和这个差别有关。

十二、怎么新增一列

这也是 Pandas 非常好用的地方。

比如给学生新增一列是否及格:

df["是否及格"] = df["成绩"] >= 60print(df)

输出大致会多出一列:

   姓名  年龄  成绩  是否及格0  张三  2088True1  李四  2292True2  王五  2175True

再比如加一列总评等级:

df["等级"] = ["良好", "优秀", "中等"]print(df)

你会发现,Pandas 特别适合在表格上做“加工”。 增加一列、修改一列,思路都很自然。

十三、按条件筛选数据,是 Pandas 最常用的操作之一

比如筛出成绩大于 80 的学生:

print(df[df["成绩"] > 80])

这行代码很值得你体会。

df["成绩"] > 80会先得到一个布尔序列:

True True False

然后 df[...] 再根据这个条件把符合的行筛出来。

这就是 Pandas 特别强的一点:

你可以像写条件一样,直接筛表。

再比如筛出年龄大于 20 的学生:

print(df[df["年龄"] > 20])

多个条件一起筛:

print(df[(df["成绩"] > 80) & (df["年龄"] > 20)])

注意这里要用 &,不能用 and。 这个规则和 NumPy 很像。

如果你想筛出“成绩大于 90 或年龄小于 21”的:

print(df[(df["成绩"] > 90) | (df["年龄"] < 21)])

所以以后你处理表格时,一定要熟悉这种写法。 它是 Pandas 入门后的高频动作。

十四、排序也非常简单

按成绩升序:

print(df.sort_values("成绩"))

按成绩降序:

print(df.sort_values("成绩", ascending=False))

按多列排序:

print(df.sort_values(["年龄", "成绩"], ascending=[True, False]))

这类需求在真实工作里非常常见。 比如:

按销售额排序 按日期排序 按门店和商品双重排序 按成绩排名

如果没有 Pandas,这些操作通常就得自己写排序逻辑。 而 Pandas 已经把它们做得很顺手了。

十五、读取文件,是 Pandas 真正进入实战的开始

很多时候你不是手写数据,而是从文件里读。

最常见的是 CSV。

import pandas as pddf = pd.read_csv("data.csv")print(df.head())

如果是 Excel:

df = pd.read_excel("data.xlsx")print(df.head())

这两句有多重要。

因为现实里绝大多数表格数据,都是从文件来的。 不是你在代码里手敲,而是外部已经有现成的数据源。

所以 Pandas 的强,不只是能创建表,而是能非常顺畅地把外部表格读进来再处理。

当然,读取 Excel 往往还需要配合安装相关依赖,比如 openpyxl。 这个你后面实战中会慢慢熟悉。

十六、导出结果同样非常常见

你处理完数据,通常还要保存回去。

导出 CSV:

df.to_csv("result.csv", index=False)

导出 Excel:

df.to_excel("result.xlsx", index=False)

这里的 index=False 很常见。 它表示导出时不要把左边那列索引也写进去。

因为很多时候,那只是程序内部默认编号,不一定是你想给别人看的正式数据列。

所以 Pandas 的一个非常完整的工作流其实是:

读进来 看一看 筛一筛 改一改 算一算 排一排 再导出去

这就是它为什么在办公自动化和数据处理里这么常见。

十七、缺失值,是表格数据处理中绕不开的问题

真实数据很少像练习题那样完美。 经常会有空白、缺漏、没填、异常值。

看一个例子:

import pandas as pddata = {"姓名": ["张三", "李四", "王五"],"年龄": [20, None, 21],"成绩": [88, 92, None]}df = pd.DataFrame(data)print(df)

你会看到有些位置显示成 NaN。 这表示缺失值。

先判断哪些位置缺失:

print(df.isnull())

统计每列缺失数量:

print(df.isnull().sum())

删除含缺失值的行:

print(df.dropna())

把缺失值补成 0:

print(df.fillna(0))

把年龄缺失值补成平均年龄:

df["年龄"] = df["年龄"].fillna(df["年龄"].mean())print(df)

这部分非常实用。 因为现实数据处理,很多时间都不是花在“炫技分析”,而是花在清洗脏数据。

十八、简单统计,Pandas 非常擅长

比如求成绩平均值:

print(df["成绩"].mean())

求最大值:

print(df["成绩"].max())

求最小值:

print(df["成绩"].min())

求总和:

print(df["成绩"].sum())

统计有多少人:

print(df["姓名"].count())

如果是数值列很多的一张表,直接:

print(df.mean(numeric_only=True))

就能看到各数值列的平均值。

所以从“表格”转成“统计结果”,Pandas 这条路非常顺。

十九、唯一值、去重,也是很高频的需求

比如看成绩这一列有哪些不同值:

print(df["成绩"].unique())

看有多少种不同成绩:

print(df["成绩"].nunique())

去掉重复行:

print(df.drop_duplicates())

按某列去重:

print(df.drop_duplicates(subset=["姓名"]))

现实里你做订单数据、用户数据、日志数据时,这些动作会非常常见。 而 Pandas 已经把它们封装得非常直接了。

二十、一个小案例:销售表快速处理

假设有这样一张销售表:

import pandas as pddata = {"商品": ["苹果", "香蕉", "苹果", "橙子", "香蕉"],"销量": [100, 80, 120, 60, 90],"单价": [5, 3, 5, 4, 3]}df = pd.DataFrame(data)print(df)

先新增一列销售额:

df["销售额"] = df["销量"] * df["单价"]print(df)

筛出销量大于 80 的记录:

print(df[df["销量"] > 80])

按销售额降序排序:

print(df.sort_values("销售额", ascending=False))

统计总销售额:

print(df["销售额"].sum())

看每列平均值:

print(df.mean(numeric_only=True))

你会发现,哪怕现在还没学分组聚合,Pandas 已经能让很多常见表格任务变得相当轻松。

二十一、Pandas 为什么特别适合办公和数据分析

因为现实里的很多数据,天然就是二维表。

Excel 表 CSV 表 数据库查询结果 接口返回整理后的表 日志抽取后的结构化数据

这些数据最常做的事,也不是特别复杂的数学,而是:

选列 选行 过滤 排序 补值 去重 统计 导出

而 Pandas 对这些动作几乎是原生友好的。 所以它不是一个“只适合算法工程师”的工具,反而非常适合:

数据分析 运营分析 自动化办公 报表处理 爬虫结果整理 日志清洗 初级 BI 脚本

也正因为这样,它的使用人群特别广。

二十二、初学 Pandas 最容易踩的几个坑

1. 把 Series 和 DataFrame 混了

取一列出来,很多时候就不是表了,而是一维结构。 后面方法行为可能不一样。

2. 条件筛选时用 and 和 or

在 Pandas 里,多条件通常用 & 和 |,并且每个条件要加括号。

3. 忘记数据类型问题

比如数字列读进来却变成字符串,后面算平均值就会出问题。

4. 对原数据和新数据分不清

有些操作会返回新对象,有些可以原地改。 刚入门时要多观察输出,别想当然。

5. 一上来就学很复杂的功能

其实先把读文件、看数据、选列、过滤、排序、缺失值处理学熟,已经能解决很多实际问题。

二十三、这一章学到什么程度算入门了

这一章结束后,如果你能做到这些,就已经很不错:

知道 Pandas 是做什么的 知道 Series 和 DataFrame 是什么 会创建简单 DataFrame 会看 head()、info()、describe()会取列、加列 会按条件筛选 会排序 会处理简单缺失值 会读 CSV、Excel 会导出结果

这已经足够支撑你进入下一章,去真正理解 DataFrame 的结构和思维方式。

二十四、本章要点整理

Pandas 是 Python 里最重要的表格数据处理库之一。 它特别适合处理 CSV、Excel、报表、日志、清单这类二维结构数据。 Pandas 最核心的两个对象是 Series 和 DataFrame,其中 DataFrame 最常用。 常见入门操作包括查看数据、取列、加列、条件筛选、排序、统计、缺失值处理。read_csv() 和 read_excel() 是读取外部表格数据的高频入口。to_csv() 和 to_excel() 常用于导出处理结果。 Pandas 强的地方,不只是功能多,而是特别符合表格处理的思维方式。 学会 Pandas,很多原本要写大量循环的表格操作都会变得更直接、更清晰。

最新文章

随机文章