Pandas 速查表:从入门到熟练掌握 Python 数据分析的核心工具

在当今数据驱动的时代,高效地处理和分析数据已成为我们每个人——无论是数据科学家、分析师还是后端工程师——的核心技能。而在 Python 生态系统中,Pandas 无疑是处理结构化数据最强大、最通用的工具库。然而,面对 Pandas 丰富的 API 和繁多的功能,我们在实际项目中常常会遇到这样的挑战:如何快速地回顾某个特定的语法?如何以最高效的方式清洗杂乱的数据?或者如何优雅地合并多个数据集?

这就是我们今天整理这份详尽“Pandas 速查表”的原因。它不仅仅是一份简单的命令列表,更是一份实用的指南,旨在帮助我们系统地掌握 Pandas 的基础知识,并提升我们的数据处理技能。我们将从最基础的安装配置讲起,深入探讨数据结构、数据的导入导出、数据清洗、重塑以及缺失值处理。我们将通过实际的代码示例,带你探索如何使用 Pandas 解决真实世界中的数据分析问题,从而为你节省宝贵的时间和精力。

!Pandas Cheat Sheet

什么是 Pandas?为什么它如此重要?

在深入代码之前,让我们先理解一下 Pandas 的核心价值。Python 的 Pandas 库是一个开源的数据分析和数据操作工具,它构建在 NumPy 之上,提供了高性能、易于使用的数据结构和数据分析工具。它由 Wes McKinney 在 2008 年开发,如今已成为数据科学领域不可或缺的标准库。

Pandas 的强大之处在于它能够极大地简化数据预处理的工作流。在传统的数据处理流程中,我们可能需要编写复杂的循环来处理 CSV 文件或清洗缺失值,而 Pandas 让这些操作变得直观且高效。它广泛适用于学术研究、金融分析、社会科学调查以及任何需要处理表格数据的场景。

核心特性一览

Pandas 的主要特性使其在众多工具中脱颖而出,主要包括:

  • DataFrame 和 Series 对象:这是我们日常操作的核心。DataFrame 是一个二维的表格结构,类似于 Excel 工作表或 SQL 表;而 Series 则是一维的标记数组。
  • 高效的索引功能:Pandas 提供了极其灵活的索引机制,让我们能够像操作字典一样快速地检索和切片数据。
  • 数据对齐:这是 Pandas 的“魔法”之一,它能自动对齐不同来源的数据进行计算,处理缺失标签。
  • 缺失数据处理:现实世界的数据往往是脏的,Pandas 内置了强大的工具来发现、删除或填充缺失值。

环境准备:安装与导入

在开始我们的数据探索之旅前,首先需要确保你的 Python 环境中已经安装了 Pandas。如果你已经安装了 Python(通常通过 Anaconda 发行版安装会预置 Pandas),我们可以轻松地使用 pip 进行安装。

安装 Pandas

打开你的终端或命令行工具,输入以下命令:

pip install pandas

导入库

安装完成后,我们需要在脚本或 Jupyter Notebook 中导入它。按照惯例,我们将其缩写为 pd,这是一种行业标准做法,能让我们的代码更简洁。

import pandas as pd

检查版本

在实际开发中,尤其是阅读他人代码或调试错误时,知道当前使用的 Pandas 版本至关重要。不同版本之间可能存在 API 差异。

print(pd.__version__)
# 输出示例: 2.0.3

深入理解 Pandas 的数据结构

Pandas 提供了两种主要的数据结构,理解它们的区别是掌握 Pandas 的第一步。

  • Series(系列):一种一维的标记数组,能够保存任何数据类型(整数、字符串、浮点数、Python 对象等)。你可以把它想象成 Excel 中的一列数据,或者一个带有标签的 NumPy 数组。
  • DataFrame(数据框):这是我们在 Pandas 中最常打交道的对象。它是一个二维的表格型数据结构,带有标记的轴(行和列)。你可以把它看作是一个由多个 Series 组成的字典,或者一张 Excel 表格。
Command

Execution (执行说明)

INLINECODE84d33e51

加载 Pandas 库并将其自定义名称设为 pd,方便后续调用

INLINECODE
b5e6575a

检查当前安装的 Pandas 版本号## 读写数据:连接外部世界

数据分析的第一步通常是获取数据。Pandas 强大的 I/O 系统支持读取多种格式的文件,包括 CSV、Excel、JSON、SQL 以及 HTML。

常用读写命令详解

Command

Execution Tasks (执行任务)

INLINECODE509b86bb

读取 .csv 文件。这是最常用的读取方式,自动识别逗号分隔符

INLINECODE
5788acc7

将处理好的 Pandas 数据框保存为 "xyz.csv" 格式在当前文件夹中

INLINECODEc728c29e
INLINECODE
f45d1048

读取 Excel 文件 ‘xyz.xls‘ 的特定工作表 ‘Sheet1‘

INLINECODE933882e1

将数据集保存为 xyz.xlsx 文件的 ‘Sheet1‘ 工作表

INLINECODE
a7179d03

读取 xyz.json 文件,自动解析 JSON 结构

INLINECODE4c81bfb5

从数据库连接 INLINECODE0f6fb6c9 中执行 SQL 查询并读取结果

INLINECODE46329399

读取 xyz.html 文件中的 INLINECODE1d77304d 标签并将其转换为 DataFrame 列表### 代码示例:读取 CSV 并预览

让我们通过一个实际的例子来看看如何读取数据并进行初步查看。

import pandas as pd

# 读取一个 CSV 文件
# 假设我们有一个名为 ‘sales_data.csv‘ 的文件
df = pd.read_csv(‘sales_data.csv‘)

# 查看前 5 行数据,了解数据的大致样子
print(df.head())

# 查看数据的维度(行数,列数)
print(f"数据集的形状: {df.shape}")

实用见解:在处理非常大的文件时,INLINECODE01909794 可能会比较慢。这时我们可以使用 INLINECODE427dd343 参数只读取前几行来探索数据结构,或者使用 chunksize 参数将文件分块读取进行处理。

构建数据:创建 Series 和 DataFrame

除了读取外部文件,我们也经常需要手动创建数据结构来进行测试或计算。

创建 Series 和 DataFrame 的命令

Command

Execution Tasks (执行任务)

INLINECODEde4cb1c6

创建一个 Pandas Series。数据可以是字典、列表或标量值

INLINECODE
23b11b11

创建一个 Pandas Series 并添加自定义索引(非默认的数字索引)

INLINECODEb4322b59

创建 Pandas DataFrame。数据通常是一个字典,键为列名,值为列表

INLINECODE
e5300973

查看每一列的数据类型(int, float, object 等)

INLINECODE3e540cc2

返回一个元组,表示数据的维度

INLINECODE
3e9d91b3

将指定列的数据类型强制转换为 32 位整数(节省内存)

INLINECODE206b68d7

将指定列的数据类型更改为字符串

INLINECODE
b4c99b61

将指定列的数据类型更改为浮点数

INLINECODEee7efbbf

查看数据框的详细摘要,包括内存使用量和非空值数量

INLINECODE
55fcaba2

将 DataFrame 转换为 NumPy 数组(底层数据结构)### 实际代码示例:创建数据并检查类型

import pandas as pd
import numpy as np

# 1. 创建一个 Series
s = pd.Series([10, 20, 30], index=[‘A‘, ‘B‘, ‘C‘], name="My_Series")
print("创建的 Series:
", s)

# 2. 创建一个 DataFrame
data = {
    ‘Fruits‘: [‘Mango‘, ‘Apple‘, ‘Banana‘, ‘Orange‘],
    ‘Quantity‘: [40, 20, 25, 10],
    ‘Price‘: [80, 100, 50, 70]
}
df = pd.DataFrame(data)

print("
创建的 DataFrame:")
print(df)

# 3. 数据类型转换与优化
# 假设我们想节省内存,可以将 int64 转换为 int32
df[‘Quantity‘] = df[‘Quantity‘].astype(‘int32‘)

# 检查转换后的类型信息
print("
数据信息:")
df.info()

Pandas 数据框示例预览

下图展示了我们刚刚创建的 DataFrame 的外观:

Fruits

Quantity

Price

0

Mango

40

80

1

Apple

20

100

2

Banana

25

50

3

Orange

10

70## 数据操作:排序、重置索引与重塑

拿到数据后,我们需要对其进行整理,以便于分析。

排序与索引管理命令

Command

Execution Tasks (执行任务)

按值排序 INLINECODEce9532c5

对数据框 df 的 ‘Price‘ 值进行升序排序(价格从低到高)

INLINECODE
f13193e4

对数据框 df 的 ‘Price‘ 值进行降序排序(价格从高到低)

按索引排序 INLINECODEbf1daf00

对数据框 df 的索引进行降序排序

重置索引 INLINECODE
bd07a689

将索引重置为默认的 0, 1, 2…
INLINECODE0ca3143c 表示直接修改原数据框,
INLINECODE
ced55679 表示丢弃旧索引,不将其作为新的一列### 深度解析:重置索引的陷阱

很多新手在使用 Pandas 时会忽略 INLINECODE02efa10f 参数。默认情况下,Pandas 的大多数操作(如 INLINECODE1d97161e 或 INLINECODE9e2de9dc)都会返回一个新的对象,而修改原始数据框。如果你想直接在原变量上更改,必须记得传入 INLINECODE5791fb70,或者像这样重新赋值:

# 方法 A:重新赋值(推荐,更符合函数式编程思维)
df = df.reset_index(drop=True)

# 方法 B:使用 inplace
df.reset_index(drop=True, inplace=True)

进阶操作:数据筛选、缺失值与重复值处理

这是数据分析中最“脏”累活,但也是最有价值的部分。

筛选数据

我们可以使用条件表达式来筛选出我们需要的数据行。

# 筛选出价格大于 60 的水果
expensive_fruits = df[df[‘Price‘] > 60]
print(expensive_fruits)

处理缺失值

Command

Execution Tasks

INLINECODEa63f3559

返回一个布尔矩阵,显示哪些位置是空值

INLINECODE
3c8e832f

删除包含缺失值的任何行(默认行为)

INLINECODEaef2ac5d

将所有缺失值用 0 填充

INLINECODE
686e5f5c

用该列的平均值填充缺失值(非常实用的技巧)### 处理重复值

Command

Execution Tasks

INLINECODE358cc29d

返回一个布尔 Series,标记重复的行

INLINECODE
c3287175

删除重复的行,保留第一次出现的行### 实际应用场景:清洗脏数据

让我们看一个综合例子,模拟真实的清洗过程。

import pandas as pd
import numpy as np

# 创建一个包含缺失值和重复项的“脏”数据集
dirty_data = {
    ‘Product‘: [‘Apple‘, ‘Banana‘, ‘Apple‘, ‘Orange‘, np.nan, ‘Banana‘],
    ‘Price‘: [100, 50, 100, 80, 20, 50],
    ‘Stock‘: [20, np.nan, 20, 10, 5, np.nan]
}
df_dirty = pd.DataFrame(dirty_data)

print("原始脏数据:")
print(df_dirty)

# 1. 删除缺失产品名称的行(行4)
df_clean = df_dirty.dropna(subset=[‘Product‘])

# 2. 填充库存的缺失值,这里我们用 0 填充
df_clean[‘Stock‘] = df_clean[‘Stock‘].fillna(0)

# 3. 删除完全重复的行(行2和行0是重复的,行5和行1是重复的)
df_final = df_clean.drop_duplicates()

# 4. 重置索引,因为删除行后索引可能不连续
df_final.reset_index(drop=True, inplace=True)

print("
清洗后的数据:")
print(df_final)

常见错误与性能优化建议

在使用 Pandas 时,你可能会遇到一些常见的坑,这里有几个实用的建议:

  • 警告 SettingWithCopyWarning

现象*:当你尝试修改 DataFrame 的切片时,可能会看到这个警告。
原因*:你可能在试图修改视图而不是副本。
解决*:使用 INLINECODE86fc2536 方法明确创建副本,例如 INLINECODE317b901a。

  • 循环性能问题

现象*:在处理大数据时,使用 for 循环遍历 DataFrame 极其缓慢。
优化*:尽量使用向量化操作(Vectorization),即直接对整列进行运算(如 INLINECODE40edc290),或者使用 INLINECODE85c17a41 函数。

  • 内存优化

技巧*:对于只包含几个类别值的列(如“性别”、“国家”),将其类型转换为 category 可以显著减少内存占用。

    df[‘Country‘] = df[‘Country‘].astype(‘category‘)
    

结语

通过这份 Pandas 速查表和深入的代码示例,我们不仅复习了基础命令,还探讨了如何在实际场景中应用它们来清洗、转换和分析数据。掌握这些技能将极大地提高你的数据科学工作效率。

最好的学习方式就是动手实践。我建议你拿出一手头的数据集,尝试用今天学到的命令去探索它。你不必记住所有的语法,只需记住当你遇到问题时,Pandas 一定有一个高效的方法能解决它。继续保持好奇心,在数据的海洋中探索吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/25677.html
点赞
0.00 平均评分 (0% 分数) - 0