Python Pandas 库入门:介绍与基本使用教程

Python Pandas 库入门:介绍与基本使用教程

在 Python 的数据分析生态中,Pandas 是最常用、最重要的库之一。无论你是做数据分析、自动化办公、机器学习前的数据清洗,还是处理 Excel、CSV、数据库导出的表格数据,Pandas 都是一个非常实用的工具。

这篇文章面向 Pandas 新手,目标是帮助你快速理解 Pandas 能做什么,并掌握最常见的基础用法。

1. Pandas 是什么

Pandas 是一个基于 Python 的数据分析和数据处理库,主要用于处理结构化数据。

简单理解,Pandas 可以把数据看成类似 Excel 表格的形式,然后用代码完成读取、筛选、统计、清洗、分组、合并、导出等操作。

Pandas 常见应用场景包括:

  • 读取和处理 Excel、CSV 文件。
  • 清洗脏数据,例如空值、重复值、异常值。
  • 对数据进行筛选、排序、分组统计。
  • 生成业务报表。
  • 分析日志、订单、用户、商品、财务等数据。
  • 为机器学习模型准备训练数据。
  • 与 NumPy、Matplotlib、Scikit-learn 等库配合使用。

如果你经常处理表格数据,Pandas 能大幅提升效率。

2. 为什么要学习 Pandas

对于新手来说,Pandas 最直接的价值是:用代码批量处理表格数据,减少重复手工操作

例如:

  • 手动整理几十个 Excel 文件很麻烦,Pandas 可以自动合并。
  • 手动筛选销售额大于某个值的数据很慢,Pandas 一行代码就能完成。
  • 手动计算每个城市、每个商品类别的销售额容易出错,Pandas 可以快速分组统计。
  • 手动删除重复数据、填充空值、转换日期格式效率低,Pandas 可以批量处理。

Pandas 特别适合下面几类人学习:

  • Python 初学者。
  • 数据分析入门者。
  • 经常处理 Excel 的办公人员。
  • 测试、运营、财务、产品、业务分析人员。
  • 想学习机器学习和人工智能的人。

3. 安装 Pandas

如果你已经安装了 Python,可以使用 pip 安装 Pandas:

bash 复制代码
pip install pandas

如果你使用的是 Anaconda,通常已经自带 Pandas,也可以使用下面命令安装:

bash 复制代码
conda install pandas

安装完成后,在 Python 中导入 Pandas:

python 复制代码
import pandas as pd

pd 是 Pandas 的常用别名,几乎所有 Pandas 教程都会这样写。

4. Pandas 的两个核心数据结构

Pandas 中最重要的两个数据结构是:

  • Series:一维数据,类似一列数据。
  • DataFrame:二维表格数据,类似 Excel 表。

4.1 Series

Series 可以理解为带索引的一列数据。

python 复制代码
import pandas as pd

scores = pd.Series([90, 85, 78, 92])
print(scores)

输出结果类似:

text 复制代码
0    90
1    85
2    78
3    92
dtype: int64

左边的 0、1、2、3 是索引,右边是具体数据。

也可以自定义索引:

python 复制代码
scores = pd.Series([90, 85, 78, 92], index=["张三", "李四", "王五", "赵六"])
print(scores)

4.2 DataFrame

DataFrame 是 Pandas 中最常用的数据结构,可以理解为一张表。

python 复制代码
import pandas as pd

data = {
    "姓名": ["张三", "李四", "王五", "赵六"],
    "年龄": [18, 20, 19, 21],
    "城市": ["北京", "上海", "广州", "深圳"],
    "成绩": [90, 85, 78, 92]
}

df = pd.DataFrame(data)
print(df)

输出结果:

text 复制代码
   姓名  年龄  城市  成绩
0  张三  18  北京  90
1  李四  20  上海  85
2  王五  19  广州  78
3  赵六  21  深圳  92

DataFrame 是学习 Pandas 的重点,后面大部分操作都围绕它展开。

5. 读取数据

Pandas 最常用的功能之一就是读取外部数据。

5.1 读取 CSV 文件

python 复制代码
import pandas as pd

df = pd.read_csv("students.csv")
print(df)

如果 CSV 文件是中文编码,可能需要指定编码:

python 复制代码
df = pd.read_csv("students.csv", encoding="utf-8")

如果遇到 Windows 下常见的 GBK 编码文件,可以写:

python 复制代码
df = pd.read_csv("students.csv", encoding="gbk")

5.2 读取 Excel 文件

读取 Excel 文件需要安装 openpyxl

bash 复制代码
pip install openpyxl

读取 Excel:

python 复制代码
df = pd.read_excel("students.xlsx")
print(df)

读取指定工作表:

python 复制代码
df = pd.read_excel("students.xlsx", sheet_name="成绩表")

5.3 读取指定列

如果只想读取部分列,可以使用 usecols

python 复制代码
df = pd.read_excel("students.xlsx", usecols=["姓名", "年龄", "成绩"])

6. 查看数据基本信息

读取数据后,第一步通常是先观察数据。

6.1 查看前几行

python 复制代码
print(df.head())

默认查看前 5 行,也可以指定行数:

python 复制代码
print(df.head(10))

6.2 查看后几行

python 复制代码
print(df.tail())

6.3 查看数据维度

python 复制代码
print(df.shape)

返回结果是一个元组:

text 复制代码
(行数, 列数)

6.4 查看列名

python 复制代码
print(df.columns)

6.5 查看数据类型和缺失情况

python 复制代码
print(df.info())

6.6 查看数值列统计信息

python 复制代码
print(df.describe())

describe() 可以快速查看平均值、标准差、最小值、最大值、四分位数等统计信息。

7. 选择行和列

7.1 选择一列

python 复制代码
names = df["姓名"]
print(names)

7.2 选择多列

python 复制代码
result = df[["姓名", "成绩"]]
print(result)

注意:选择多列时,外面是两层中括号。

7.3 按行号选择数据

使用 iloc 按位置选择。

python 复制代码
print(df.iloc[0])

选择前 3 行:

python 复制代码
print(df.iloc[0:3])

选择第 1 行、第 2 列的数据:

python 复制代码
print(df.iloc[0, 1])

7.4 按标签选择数据

使用 loc 按索引和列名选择。

python 复制代码
print(df.loc[0, "姓名"])

选择指定行和列:

python 复制代码
print(df.loc[0:2, ["姓名", "成绩"]])

8. 条件筛选

条件筛选是 Pandas 中非常常用的操作。

8.1 筛选成绩大于 85 的学生

python 复制代码
result = df[df["成绩"] > 85]
print(result)

8.2 多条件筛选

筛选年龄大于 18 且成绩大于 85 的学生:

python 复制代码
result = df[(df["年龄"] > 18) & (df["成绩"] > 85)]
print(result)

筛选城市是北京或上海的学生:

python 复制代码
result = df[(df["城市"] == "北京") | (df["城市"] == "上海")]
print(result)

注意:

  • & 表示并且。
  • | 表示或者。
  • 每个条件都要用小括号包起来。

8.3 使用 isin 筛选多个值

python 复制代码
result = df[df["城市"].isin(["北京", "上海"])]
print(result)

9. 新增、修改和删除列

9.1 新增列

python 复制代码
df["是否及格"] = df["成绩"] >= 60
print(df)

9.2 根据条件生成新列

python 复制代码
df["等级"] = df["成绩"].apply(lambda x: "优秀" if x >= 90 else "普通")
print(df)

9.3 修改列数据

把所有成绩加 5 分:

python 复制代码
df["成绩"] = df["成绩"] + 5

9.4 删除列

python 复制代码
df = df.drop(columns=["是否及格"])

如果要删除多列:

python 复制代码
df = df.drop(columns=["是否及格", "等级"])

10. 缺失值处理

真实数据中经常会有空值,Pandas 提供了很多处理方式。

10.1 判断缺失值

python 复制代码
print(df.isnull())

统计每列缺失值数量:

python 复制代码
print(df.isnull().sum())

10.2 删除缺失值

删除包含缺失值的行:

python 复制代码
df_clean = df.dropna()

10.3 填充缺失值

用 0 填充:

python 复制代码
df["成绩"] = df["成绩"].fillna(0)

用平均值填充:

python 复制代码
avg_score = df["成绩"].mean()
df["成绩"] = df["成绩"].fillna(avg_score)

用固定文本填充:

python 复制代码
df["城市"] = df["城市"].fillna("未知")

11. 重复值处理

11.1 判断重复行

python 复制代码
print(df.duplicated())

11.2 删除重复行

python 复制代码
df = df.drop_duplicates()

按照指定列判断重复:

python 复制代码
df = df.drop_duplicates(subset=["姓名"])

12. 排序

12.1 按成绩升序排序

python 复制代码
df_sorted = df.sort_values(by="成绩")
print(df_sorted)

12.2 按成绩降序排序

python 复制代码
df_sorted = df.sort_values(by="成绩", ascending=False)
print(df_sorted)

12.3 多列排序

先按城市排序,再按成绩降序排序:

python 复制代码
df_sorted = df.sort_values(by=["城市", "成绩"], ascending=[True, False])
print(df_sorted)

13. 分组统计

分组统计是 Pandas 的核心能力之一,类似 SQL 中的 group by

假设有一张销售表:

python 复制代码
import pandas as pd

data = {
    "城市": ["北京", "北京", "上海", "上海", "广州"],
    "商品": ["电脑", "手机", "电脑", "手机", "电脑"],
    "销售额": [10000, 8000, 12000, 9000, 7000]
}

df = pd.DataFrame(data)

13.1 按城市统计销售额

python 复制代码
result = df.groupby("城市")["销售额"].sum()
print(result)

13.2 按城市统计平均销售额

python 复制代码
result = df.groupby("城市")["销售额"].mean()
print(result)

13.3 多个统计指标

python 复制代码
result = df.groupby("城市")["销售额"].agg(["sum", "mean", "max", "min"])
print(result)

13.4 按多个字段分组

python 复制代码
result = df.groupby(["城市", "商品"])["销售额"].sum()
print(result)

14. 数据合并

Pandas 可以像数据库一样合并不同表格。

14.1 concat 纵向合并

如果两个表结构相同,可以上下拼接:

python 复制代码
df_all = pd.concat([df1, df2], ignore_index=True)

适合合并多个 Excel 或 CSV 文件。

14.2 merge 横向关联

如果两个表有共同字段,可以按字段关联。

python 复制代码
orders = pd.DataFrame({
    "用户ID": [1, 2, 3],
    "订单金额": [100, 200, 300]
})

users = pd.DataFrame({
    "用户ID": [1, 2, 3],
    "姓名": ["张三", "李四", "王五"]
})

result = pd.merge(orders, users, on="用户ID", how="left")
print(result)

how 常用取值:

  • left:保留左表全部数据。
  • right:保留右表全部数据。
  • inner:只保留两边都匹配的数据。
  • outer:保留两边所有数据。

15. 数据导出

处理完数据后,通常需要导出结果。

15.1 导出 CSV

python 复制代码
df.to_csv("result.csv", index=False, encoding="utf-8-sig")

index=False 表示不导出索引列。

encoding="utf-8-sig" 可以让 Excel 更好地识别中文。

15.2 导出 Excel

python 复制代码
df.to_excel("result.xlsx", index=False)

如果要导出多个工作表:

python 复制代码
with pd.ExcelWriter("report.xlsx") as writer:
    df.to_excel(writer, sheet_name="原始数据", index=False)
    df_sorted.to_excel(writer, sheet_name="排序结果", index=False)

16. 一个完整入门案例:统计每个城市的销售额

下面用一个完整小案例串联 Pandas 的基本操作。

python 复制代码
import pandas as pd

# 1. 构造示例数据
data = {
    "订单号": ["A001", "A002", "A003", "A004", "A005"],
    "城市": ["北京", "上海", "北京", "广州", "上海"],
    "商品": ["电脑", "手机", "键盘", "电脑", "鼠标"],
    "销售额": [10000, 5000, 800, 7000, 200],
    "销售员": ["张三", "李四", "张三", "王五", "李四"]
}

df = pd.DataFrame(data)

# 2. 查看数据
print(df.head())
print(df.info())

# 3. 筛选销售额大于 1000 的订单
big_orders = df[df["销售额"] > 1000]

# 4. 按城市统计销售额
city_sales = big_orders.groupby("城市")["销售额"].sum().reset_index()

# 5. 按销售额降序排序
city_sales = city_sales.sort_values(by="销售额", ascending=False)

# 6. 导出结果
city_sales.to_excel("城市销售额统计.xlsx", index=False)

print(city_sales)

这个案例完成了:

  • 创建表格数据。
  • 查看数据。
  • 条件筛选。
  • 分组汇总。
  • 排序。
  • 导出 Excel。

这就是 Pandas 在实际工作中最常见的使用方式。

17. 新手常见问题

17.1 DataFrame 和 Excel 有什么区别

DataFrame 可以理解为代码中的 Excel 表格,但它更适合自动化处理。Excel 更适合手动查看和编辑,Pandas 更适合批量处理和重复执行。

17.2 loc 和 iloc 怎么区分

简单记忆:

  • loc 按标签选择,例如列名、索引名。
  • iloc 按位置选择,例如第几行、第几列。

示例:

python 复制代码
df.loc[0, "姓名"]
df.iloc[0, 1]

17.3 为什么选择多列要写两层中括号

python 复制代码
df[["姓名", "成绩"]]

外层中括号表示从 DataFrame 中取数据,内层列表表示要取的多个列名。

17.4 为什么修改数据后要重新赋值

很多 Pandas 操作默认不会直接修改原数据,而是返回一个新的 DataFrame。

例如:

python 复制代码
df = df.drop_duplicates()

这样写可以明确把处理后的结果保存回 df

18. Pandas 入门学习路线

新手学习 Pandas,可以按下面顺序推进:

  1. 学会创建 DataFrame 和 Series。
  2. 学会读取 CSV、Excel 文件。
  3. 学会查看数据基本信息。
  4. 学会选择行和列。
  5. 学会条件筛选。
  6. 学会处理缺失值和重复值。
  7. 学会排序、统计、分组聚合。
  8. 学会合并多个表格。
  9. 学会导出 CSV 和 Excel。
  10. 用真实业务数据做一个小项目。

推荐从 Excel 或 CSV 文件入手,因为这类数据最直观,也最容易看到 Pandas 的效果。

19. 总结

Pandas 是 Python 数据分析和表格处理的核心库。它可以帮助我们高效完成数据读取、清洗、筛选、统计、分组、合并和导出等工作。

对于新手来说,学习 Pandas 不需要一开始记住所有函数,先掌握下面这些高频操作就足够入门:

  • pd.read_csv():读取 CSV。
  • pd.read_excel():读取 Excel。
  • df.head():查看前几行。
  • df.info():查看数据结构。
  • df["列名"]:选择列。
  • df[df["列名"] > 条件]:条件筛选。
  • df.groupby():分组统计。
  • df.sort_values():排序。
  • df.dropna():处理缺失值。
  • df.drop_duplicates():删除重复值。
  • df.to_excel():导出 Excel。

Pandas 的学习重点不在于死记函数,而在于多练习真实数据处理场景。只要能熟练完成"读取数据、清洗数据、分析数据、导出结果"这条流程,就已经具备了 Pandas 的基础实战能力。

相关推荐
m0_515098422 小时前
如何排查RAC节点被驱逐Eviction_CSS日志与宕机重启原因分析
jvm·数据库·python
t***5442 小时前
Dev-C++ 中使用 Clang 调试有哪些常见问题
开发语言·c++
weixin_458580122 小时前
HTML函数工具是否适配HDR显示器_高动态范围指南【指南】
jvm·数据库·python
qq_654366982 小时前
Cgo 中正确设置 C 结构体内函数指针回调的完整方案
jvm·数据库·python
qq_432703662 小时前
如何处理复杂的SQL注入攻击_使用行为分析识别异常
jvm·数据库·python
sinat_383437362 小时前
如何在 Ubuntu Core(Snappy)上部署 Go Web 服务
jvm·数据库·python
遇见你的雩风2 小时前
Java --- 网络原理(三)
java·开发语言·网络
会编程的土豆2 小时前
Go语言零基础入门:从0到能写程序(超详细版)
开发语言·后端·golang
pele2 小时前
怎么诊断MongoDB Config Server响应极慢的问题_高频Auto-split导致的元库写入压力
jvm·数据库·python