本篇文章是 pandas 从入门到精通系列的第 1 篇,带你认识 pandas 是什么、为什么要学它、如何安装、如何导入,并快速上手它的两大核心数据结构。
目录
1. pandas 是什么
2. 为什么要学 pandas
3. pandas 的安装
4. 导入 pandas 的约定
5. 两大核心数据结构概览
6. 你的第一个 pandas 程序
7. 查看版本与帮助信息
8. pandas 与 NumPy 的关系
9. 常见坑与注意事项
10. 本章小结与练习
1. pandas 是什么
pandas 是 Python 生态中最流行的数据处理与分析库,名字来源于 "Panel Data"(面板数据) 和 "Python Data Analysis" 的组合。它由 Wes McKinney 于 2008 年创立,现在由开源社区维护,几乎成了 Python 数据分析的事实标准。
pandas 的核心价值在于:用类似"Excel 表格 + SQL 查询"的体验,在内存中高效地处理结构化数据(表格型数据)。
| 特性 | 说明 |
|------|------|
| 数据类型 | 主要为表格型二维数据(DataFrame)和一维数据(Series) |
| 擅长领域 | 数据清洗、数据变换、聚合统计、时间序列分析、数据可视化配合 |
| 底层依赖 | 构建在 NumPy 之上,运算速度快 |
| 生态地位 | 与 NumPy、Matplotlib、Scikit-learn 并称 Python 数据科学四件套 |
| 学习曲线 | 入门容易,精通需要理解索引、合并、分组等核心概念 |
2. 为什么要学 pandas
对比几种常见的数据处理方式,你会更清楚 pandas 的位置:
| 工具 | 优点 | 缺点 |
|------|------|------|
| Excel | 可视化好、门槛低 | 数据量大(几十万行以上)会卡顿、难以自动化、难以复现 |
| SQL | 适合海量数据、聚合能力强 | 只擅长"查询",复杂的清洗、转换、建模前处理很吃力 |
| 纯 Python(列表/字典) | 灵活 | 代码冗长、性能差、没有现成的统计函数 |
| pandas | 集众长于一身:表格操作 + 统计分析 + 自动化脚本 | 大数据量(超过内存)时需要配合其他工具(如 Dask、Spark) |
典型场景举例:
- 读取一份几十万行的 CSV 销售记录,筛选出"华东区 2025 年销售额 Top10 商品";
- 合并两张表(订单表 + 商品表),按类别统计利润;
- 处理缺失值、去重、统一日期格式;
- 对时间序列做重采样(按天/按周/按月汇总);
- 把清洗好的数据一键导出成 Excel/CSV 供报表使用。
3. pandas 的安装
3.1 使用 pip 安装(最常见)
# 安装最新版
pip install pandas
# 指定版本安装(生产环境推荐锁定版本)
pip install pandas==2.2.3
# 国内加速镜像(清华源)
pip install pandas -i
# 升级
pip install --upgrade pandas
3.2 使用 conda 安装(推荐 Anaconda 用户)
conda install pandas
conda install -c conda-forge pandas
3.3 验证安装是否成功
打开 Python 解释器或任意 IDE,执行:
import pandas as pd
print(pd.__version__)
如果能正常输出版本号(例如 2.2.3),说明安装成功。
3.4 建议的配套环境
# 数据科学全家桶(一次性装齐)
pip install pandas numpy matplotlib seaborn jupyter
# 或者用 conda 一步到位
conda install pandas numpy matplotlib seaborn jupyter
提示:pandas 依赖 NumPy,pip install pandas 会自动帮你装好兼容版本的 NumPy,一般无需手动处理。4. 导入 pandas 的约定
社区通行的导入方式(务必遵守,方便别人阅读你的代码):
import pandas as pd # 主力约定
import numpy as np # 常配合使用
# 可选:让 matplotlib 图表直接在 Jupyter 中显示
import matplotlib.pyplot as plt
几乎全世界所有 pandas 教程和代码都会使用pd作为别名,请不要再使用import pandas这种写法。
5. 两大核心数据结构概览
pandas 有两大核心数据结构,它们是后面所有章节的基础:
5.1 Series —— 一维带标签数组
类似"一列 Excel 数据",每个元素带有一个索引(index)。
索引: 2020 2021 2022 2023
值: 100 150 130 200
5.2 DataFrame —— 二维表格
类似"一张 Excel 工作表",由行索引 + 列名 + 数据组成。
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
| 结构 | 维度 | 类比 | 重要属性 |
|------|------|------|----------|
| Series | 1 维 | 一列数据 | index、values、name |
| DataFrame | 2 维 | 一张 Excel 表 | index、columns、values、shape |
DataFrame 本质上可以理解为"由多个 Series 按列拼成的表格"。
6. 你的第一个 pandas 程序
用 5 行代码体验 pandas 的威力:从字典创建 DataFrame,做一次筛选和统计。
import pandas as pd
# 1. 用字典创建 DataFrame
data = {
"姓名": ["张三", "李四", "王五", "赵六", "孙七"],
"部门": ["技术", "技术", "销售", "销售", "市场"],
"薪资": [12000, 15000, 9000, 11000, 8000],
}
df = pd.DataFrame(data)
print(df)
# 2. 查看基本信息
print("\n=== 基本信息 ===")
print(df.info())
# 3. 按部门分组求平均薪资
print("\n=== 各部门平均薪资 ===")
print(df.groupby("部门")["薪资"].mean())
# 4. 筛选薪资大于 10000 的员工
print("\n=== 高薪员工 ===")
print(df[df["薪资"] > 10000])
运行结果:
姓名 部门 薪资
0 张三 技术 12000
1 李四 技术 15000
2 王五 销售 9000
3 赵六 销售 11000
4 孙七 市场 8000
=== 基本信息 ===
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 姓名 5 non-null object
1 部门 5 non-null object
2 薪资 5 non-null int64
dtypes: int64(1), object(2)
memory usage: 248.0+ bytes
None
=== 各部门平均薪资 ===
部门
市场 8000.0
技术 13500.0
销售 10000.0
Name: 薪资, dtype: float64
=== 高薪员工 ===
姓名 部门 薪资
0 张三 技术 12000
1 李四 技术 15000
2 赵六 销售 11000
你看,仅仅几行代码就完成了 建表 → 查看结构 → 分组统计 → 条件筛选 四个常用操作。这就是 pandas 的魅力。
7. 查看版本与帮助信息
import pandas as pd
# 版本号
print(pd.__version__)
# 查看某个函数/对象的帮助文档
help(pd.DataFrame)
help(pd.read_csv)
# 查看已安装的依赖版本
pd.show_versions()
pd.show_versions() 会输出当前 pandas 及关键依赖的版本,排查环境问题时非常有用。
8. pandas 与 NumPy 的关系
理解两者关系,对你后续学习事半功倍:
- NumPy 提供多维数组(ndarray)和底层数学运算,是 pandas 的"发动机";
- pandas 在 NumPy 之上增加了标签索引、缺失值处理、分组聚合、时间序列、文件读写等高层能力;
- pandas 的很多操作最终会退化为 NumPy 的向量化运算,所以两者混用非常自然。
import numpy as np
import pandas as pd
# pandas 的数据底层就是 numpy 数组
s = pd.Series([1, 2, 3])
print(type(s.values)) # <class 'numpy.ndarray'>
# 可以直接对 pandas 对象使用 numpy 函数
df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
print(np.sqrt(df))
<class 'numpy.ndarray'>
a b
0 1.000000 2.000000
1 1.414214 2.236068
2 1.732051 2.449490
9. 常见坑与注意事项
| 坑 | 说明 | 建议 |
|----|------|------|
| 用 import pandas 而非 pd | 不符合社区约定,代码难读 | 始终 import pandas as pd |
| 版本过旧 | 旧版本缺少新 API,且与新版 NumPy 可能有兼容问题 | 定期 pip install --upgrade pandas |
| 中文乱码 | 读写 CSV/Excel 中文时常见 | 读取时指定 encoding="utf-8",Windows 下有时需要 "gbk" |
| 把 pandas 当 Excel 用 | 只用鼠标式的操作,无法自动化 | 学会用代码做批量、可复现的处理 |
| 不区分 Series 与 DataFrame | 两类对象 API 有差异,混用会报错 | 先牢记 type(obj) 判断对象类型 |
10. 本章小结与练习
小结
- pandas 是 Python 数据处理的核心库,提供 Series(一维)和 DataFrame(二维)两种数据结构;
- 安装用
pip install pandas,导入用import pandas as pd; - pandas 构建于 NumPy 之上,融合了 Excel 的表格体验与 SQL 的查询能力;
- 学习路线建议:数据结构 → 读写 → 索引选择 → 清洗 → 变换 → 合并 → 分组 → 时间序列 → 可视化 → 性能优化。
练习题
1. 安装 pandas,并打印你的 pandas 和 numpy 版本。
2. 用字典创建一个包含"姓名、成绩、班级"三列的 DataFrame,打印它。
3. 对上面创建的 DataFrame 按班级分组,求出每班平均成绩。
4. 筛选出成绩大于 90 分的记录。
下一篇预告:第 2 章 Series 详解 —— 深入学习一维数据结构 Series 的创建、索引、运算与常用方法。
文章回复
0 条公开回复