Python数据分析的“瑞士军刀”:Pandas库零基础入门详解
简介 (Introduction)
欢迎来到Python数据分析的世界!如果你曾经使用过Excel来处理表格数据,那么你可以把 Pandas 想象成“拥有超级计算能力的、可以通过代码自动化的Excel”。
Pandas 是 Python 编程语言中最强大、最流行的数据处理和分析库。它的名字来源于“Panel Data”(面板数据),专门为处理表格型数据而设计。无论你是要进行数据清洗、数据探索,还是为机器学习准备数据,Pandas 都是你不可或缺的工具。
本篇指南专为零基础初学者设计,我们将系统地拆解 Pandas 的核心知识点,带你一步步掌握这把数据分析的“瑞士军刀”。
准备工作 (Prerequisites)
在开始写代码之前,我们需要确保你的电脑上已经安装了 Pandas 库。
1. 安装 Pandas
打开你的命令行(Windows 的 CMD/PowerShell,或 Mac/Linux 的 Terminal),输入以下命令:
pip install pandas
2. 导入 Pandas
在 Python 脚本或 Jupyter Notebook 中,我们通常会使用一个约定俗成的简写 pd 来导入这个库:
import pandas as pd
提示:保持使用 pd 作为别名,因为全世界的 Python 开发者都是这么做的,这会让你的代码更具可读性。
核心知识点详解 (Step-by-Step Guide)
1. Pandas 的两大数据结构
要学好 Pandas,首先必须认识它的两大核心“容器”:Series 和 DataFrame。
A. Series (一维数据)
Series 就像是 Excel 中的单独一列。它是一个带有标签(索引)的一维数组。
import pandas as pd
# 从列表创建一个 Series
data = [10, 20, 30, 40]
s = pd.Series(data)
print(s)
# 输出:
# 0 10
# 1 20
# 2 30
# 3 40
# dtype: int64
左边是索引(Index),右边是数据(Values)。
B. DataFrame (二维数据)
DataFrame 就像是一张完整的 Excel 表格,由多个 Series(列)组成。这是你以后最常接触的数据结构。
# 使用字典创建一个 DataFrame
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 22, 28],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
print(df)
# 输出:
# 姓名 年龄 城市
# 0 张三 25 北京
# 1 李四 22 上海
# 2 王五 28 广州
2. 数据的读取与保存
在实际工作中,我们很少手动敲入数据,通常是从文件中读取。
读取 CSV 文件
# 将同目录下的 data.csv 读取为 DataFrame
df = pd.read_csv('data.csv')
保存为 CSV 文件
# 将 DataFrame 保存为新的 CSV 文件
# index=False 表示不保存最左侧的数字索引
df.to_csv('output.csv', index=False)
3. 数据查看与初步探索
拿到一个几万行的数据集时,我们需要先“看一眼”数据的模样。
# 1. 查看前 5 行数据(常用于快速浏览)
print(df.head())
# 2. 查看数据的基本信息(包含列名、非空值数量、数据类型)
print(df.info())
# 3. 查看数值列的统计信息(平均值、最大最小值、标准差等)
print(df.describe())
4. 数据选择与过滤
如何从庞大的表格中精准提取你需要的数据?
A. 选择列
# 提取单列(返回一个 Series)
ages = df['年龄']
# 提取多列(注意里面是一个列表,所以有两层方括号)
subset = df[['姓名', '城市']]
B. 选择行 (loc 与 iloc)
- •
iloc: 基于整数位置(第几行/第几列)进行索引。
# 提取第 0 行的数据
row_0 = df.iloc[0]
# 提取前两行的前两列
subset_data = df.iloc[0:2, 0:2]
C. 条件过滤 (非常实用!)
找出所有年龄大于 23 岁的人:
# df['年龄'] > 23 会生成一列 True/False,然后将它套入 df[] 中
older_than_23 = df[df['年龄'] > 23]
print(older_than_23)
5. 数据清洗基础
现实中的数据往往是脏的,通常会包含缺失值(NaN)。
# 1. 删除包含缺失值的行
df_clean = df.dropna()
# 2. 用特定值填补缺失值(例如用 0 填补)
df_filled = df.fillna(0)
新手常见陷阱与避坑指南 (Common Pitfalls)
陷阱 1:忘记重新赋值或不使用 inplace=True
很多初学者在执行 df.dropna() 后,发现原来的 df 并没有改变。
原因: Pandas 的大多数操作默认都会返回一个新的对象,而不会修改原数据。
解决方案:
# 方法一:重新赋值给原变量(推荐,更清晰)
df = df.dropna()
# 方法二:使用 inplace 参数
df.dropna(inplace=True)
陷阱 2:混淆 loc 和 iloc
- • 误区: 使用
df.iloc['列名'] 会报错。 - • 正解: 记住 i 代表 integer(整数)。只要看到
iloc,里面只能填数字(0, 1, 2...);而 loc 里面填的是实际的行标签和列名。
陷阱 3:SettingWithCopyWarning 警告
当你尝试修改从 DataFrame 中切片出来的数据时,经常会看到这个红色的警告。
原因: Pandas 不确定你是在修改原始数据的“视图”还是“副本”。
解决方案: 在提取数据准备进行修改时,养成使用 .copy() 的好习惯。
# 正确做法
df_subset = df[df['年龄'] > 20].copy()
df_subset['新列'] = '测试'# 这样就不会报错了
学习资源与总结 (Resources & Conclusion)
总结
今天我们系统地学习了 Pandas 的基础:
- 1. 认识了 Series 和 DataFrame。
这只是 Pandas 强大功能的冰山一角。随着学习的深入,你还会接触到数据分组(groupby)、表格合并(merge)以及时间序列分析等高级功能。
推荐学习资源
- • 官方文档:Pandas Official Documentation (最权威的字典,遇到不懂的函数直接查)。
- • Kaggle:Kaggle Pandas 免费课程 (提供在线交互式练习,非常适合初学者)。
- • 动手实践: 找一个你感兴趣的 Excel 表格(如个人账单、游戏英雄数据),尝试用 Pandas 把它读取出来并进行简单的统计。
编程的核心在于实践。 打开你的代码编辑器,把上面的代码片段敲一遍,你已经迈出了成为数据分析师的坚实第一步!加油!