Pandas 是 Python 数据分析领域非常重要的工具,掌握它能让我们的数据分析工作事半功倍。接下来,我们就从它的起源、安装方法,到核心数据结构和索引知识,一步步揭开它的面纱。
一、从起源到价值
首先,我们得知道 Pandas 是怎么来的。它是由美国纽约的量化投资分析师韦斯・麦金尼(Wes McKinney) 在 2008 年开发的。这个名字很有意思,它有两个由来:一是 “Panel data”(面板数据,指多维数据结构),二是 “Python data analysis”(Python 数据分析),从名字就能看出它和数据分析的紧密联系。
那 Pandas 到底是什么呢?简单说,它是一个专注于数据处理、数据分析和数据可视化的 Python 库。为什么我们一定要学它?这得说说它的优势:
- 它基于 NumPy,能高效进行数据汇总和运算;
- 面对重复、缺失、异常数据,它能灵活处理,快速完成数据探查;
- 支持数字、文本等多种数据类型,轻松实现数据清洗;
- 导入导出功能强大,能处理 CSV、Excel、数据库等多种来源的数据,还能通过 HDF5 格式快速保存加载;
- 有完善的时间序列功能,比如日期范围生成、频率转换等;
- 还有类似 SQL 的表查询功能,让数据查询更简单。
这些优势让 Pandas 成为数据分析的 “利器”,学好它能极大提升我们的工作效率。
二、安装 Pandas:两种常用方法
了解了 Pandas 的价值,接下来我们看看怎么安装它。主要有两种方法:
1. pip 工具安装
这是最常用的方法,只需要在命令行中输入一行命令:pip install pandas
,就能自动安装最新版本的 Pandas。
2. 在 PyCharm 中安装
如果用 PyCharm 开发,可以直接在软件内安装:打开 “File”→“Settings”→“Project: 项目名”→“Python Interpreter”,点击 “+” 号,搜索 “pandas”,点击 “Install Package” 即可。
这里要注意,Pandas 有几个重要的依赖模块,分别是xlrd
、xlwt
和openpyxl
,它们负责 Excel 文件的读写。所以安装完 Pandas 后,记得用同样的方法安装这三个模块,确保能正常处理 Excel 数据。
三、Pandas 的两大数据结构:Series 和 DataFrame
Pandas 的核心是它的两种数据结构,所有操作都围绕它们展开,我们一个个来看。
1. Series:一维带索引的数组
Series 是一维数据结构,可以理解为 “一列数据”,它最大的特点是 “带索引”。比如我们可以用它来表示一列学生的成绩、一列商品的价格等。
如何创建 Series?
用pd.Series(data, index=index)
函数,其中data
可以是列表、字典等,index
是我们指定的索引(如果不指定,会自动生成从 0 开始的默认索引)。
举个例子:
- 用列表创建:
s1 = pd.Series([1, 2, 3])
,这会生成一个索引为 0、1、2,值为 1、2、3 的 Series; - 用字典创建:
s2 = pd.Series({"A":1, "B":2, "C":3})
,这里字典的键会成为索引,值就是 Series 的值。
Series 的功能主要集中在对单列数据的操作,比如字符串的查找、替换、切分等。
2. DataFrame:二维表格型结构
DataFrame 是二维数据结构,可以理解为 “一张表格”,有行有列,类似 Excel 表格。比如学生成绩表(包含姓名、语文、数学、英语成绩)就是典型的 DataFrame。
如何创建 DataFrame?
用pd.DataFrame(data, index, columns, dtype)
函数,data
可以是列表、字典、Series 等,index
是行索引,columns
是列索引。
举个例子:
- 用列表创建成绩表:我们可以把每个学生的各科成绩放在列表里,指定行索引为姓名,列索引为科目,就能生成一张清晰的成绩表;
- 用字典创建:字典的键作为列名,值作为列数据,比如
{"语文":[110, 105, 109], "数学":[105, 88, 120]}
,就能生成包含语文、数学两列的 DataFrame。
DataFrame 的功能非常丰富,包括数据的输入输出、类型转换、缺失值处理、索引设置、筛选、计算、分组统计、绘图等,是我们处理表格数据的核心工具。
这里有个小技巧:用 Pandas 时,经常会遇到列不对齐或显示不全的问题。可以用pd.set_option()
函数解决:
- 解决列不对齐:
pd.set_option('display.unicode.east_asian_width', True)
; - 解决列显示不全:
pd.set_option('display.width', 1000)
(设置显示宽度)和pd.set_option('display.max_columns', 1000)
(设置最大显示列数)。
四、数据中的索引:让数据查询更高效
索引是 Pandas 中非常重要的概念,它就像数据的 “标签”,能帮我们快速定位和操作数据。
1. 什么是索引?
索引分为两种:
- 隐式索引:系统自动生成的默认索引,是从 0 开始的连续数字(位置索引);
- 显式索引:我们手动设置的标签索引,可以通过
index
参数或set_index()
方法设置,比如把 “姓名” 设为索引。
2. 索引的好处
为什么要设置索引?主要有三个优势:
- 方便定位数据:通过索引能快速找到目标数据,不用逐行扫描;
- 提升查询性能:如果索引唯一,Pandas 会用哈希表优化,查询时间复杂度是 O (1);如果索引有序,会用二分查找,复杂度是 O (logN),都比随机扫描(O (N))快得多;
- 自动数据对齐:在数据运算时,索引会自动对齐,避免数据错位。
3. Series 和 DataFrame 中的索引操作
(1)Series 中的索引操作
- 设置索引:创建时用
index
参数,比如pd.Series([88, 60, 75], index=['甲', '乙', '丙'])
,就把索引设为了姓名; - 重新索引:用
reindex()
方法,可以添加新索引(缺失值用 NaN 填充),还能通过method
参数设置向前 / 向后填充(ffill
向前,bfill
向后); - 获取数据:通过位置索引(
s[0]
)、标签索引(s['甲']
),或用iloc
(位置索引专用)、loc
(标签索引专用)属性,比如s.iloc[0]
和s.loc['甲']
。
(2)DataFrame 中的索引操作
- 设置某列为索引:用
set_index()
方法,比如df.set_index('姓名')
,就把 “姓名” 列设为了行索引; - 重新索引:用
reindex()
方法,可以同时修改行索引和列索引,新增的索引对应位置会填充 NaN; - 重置索引:用
reset_index()
方法,能恢复默认的连续数字索引,适合删除数据后整理索引。
总结
Pandas 的 “基石”是:核心数据结构 Series 和 DataFrame,以及关键的索引知识。这些是 Pandas 的 “基石”,掌握它们能为后续的数据分析操作打下坚实的基础。