在数据科学和数据分析领域,Pandas 是一个不可或缺的 Python 库。它提供了一系列高效、灵活的数据结构,使得处理和分析结构化数据变得异常简单。无论您是数据分析新手,还是希望从其他工具(如 Excel)转向 Python 的专业人士,掌握 Pandas 都将是您职业生涯中的一大助力。本文将从零开始,系统地介绍 Pandas 的核心概念和基本操作,帮助您快速入门数据处理。

## 什么是 Pandas?

Pandas 是一个开源的 Python 库,构建在 NumPy 之上,旨在为 Python 提供快速、强大、灵活且易于使用的数据结构和数据分析工具。它的名字来源于“Panel Data”(面板数据),这是一个在计量经济学中广泛使用的术语。Pandas 的主要目标是使 Python 成为一个强大而高效的数据分析环境。

## 安装与环境准备

在开始之前,请确保您的环境中已经安装了 Python。安装 Pandas 最简便的方法是通过 `pip` 包管理器。在您的终端或命令行中执行以下命令:

```bash
'pip install pandas'
```

安装完成后,您可以在 Python 脚本或 Jupyter Notebook 中通过以下方式导入 Pandas 库,并按惯例将其重命名为 `pd`:

```python
'import pandas as pd'
```

## Pandas 的核心数据结构

Pandas 主要包含两种核心数据结构:**Series** 和 **DataFrame**。

### Series:一维数据数组

`Series` 是一种类似于一维数组的对象,由一组数据(任何 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。您可以将其看作是带有标签的列。

```python
'# 创建一个简单的 Series
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
s = pd.Series(data, index=index)
print(s)'
```

### DataFrame:二维数据表格

`DataFrame` 是一个二维的、表格型的数据结构,它包含了一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。`DataFrame` 既有行索引也有列索引,可以被看作是一个由 `Series` 组成的字典。

```python
'# 创建一个 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
print(df)'
```

## 数据读写

Pandas 提供了强大的功能来读取和写入多种格式的数据,最常用的是 CSV 和 Excel 文件。

- **读取 CSV 文件**:`pd.read_csv('file.csv')`
- **写入 CSV 文件**:`df.to_csv('file.csv', index=False)`
- **读取 Excel 文件**:`pd.read_excel('file.xlsx')`
- **写入 Excel 文件**:`df.to_excel('file.xlsx', index=False)`

## 数据选择与索引

从 `DataFrame` 中选择特定数据是数据分析中的常见操作。Pandas 提供了 `loc` 和 `iloc` 两种主要的索引方法。

- **`loc`**:基于标签的索引,用于通过行和列的名称来选择数据。
- **`iloc`**:基于整数位置的索引,用于通过行和列的数字位置来选择数据。

| 操作 | 示例 | 描述 |
| :--- | :--- | :--- |
| 选择单列 | `df['Name']` | 返回一个 `Series` |
| 选择多列 | `df[['Name', 'City']]` | 返回一个新的 `DataFrame` |
| 使用 `loc` 选择行 | `df.loc[0]` | 选择第一行 |
| 使用 `loc` 选择行列 | `df.loc[0, 'Name']` | 选择第一行 'Name' 列的值 |
| 使用 `iloc` 选择行 | `df.iloc[0]` | 选择第一行 |
| 使用 `iloc` 选择行列 | `df.iloc[0, 0]` | 选择第一行第一列的值 |

## 常用数据操作

### 数据筛选

您可以根据条件来筛选 `DataFrame` 中的数据。

```python
'# 筛选年龄大于30的行
filtered_df = df[df['Age'] > 30]
print(filtered_df)'
```

### 数据排序

使用 `sort_values()` 方法可以对数据进行排序。

```python
'# 按年龄降序排序
sorted_df = df.sort_values(by='Age', ascending=False)
print(sorted_df)'
```

### 添加与删除列

可以轻松地在 `DataFrame` 中添加或删除列。

```python
'# 添加新列
df['Salary'] = [50000, 60000, 70000, 80000]

# 删除列
df = df.drop('City', axis=1)
print(df)'
```

## 数据清洗:处理缺失值

在真实世界的数据中,缺失值非常常见。Pandas 提供了多种方法来处理它们。

- **`isnull()`**:检测缺失值,返回一个布尔值的 `DataFrame`。
- **`dropna()`**:删除包含缺失值的行或列。
- **`fillna()`**:用指定的值或方法填充缺失值。

```python
'# 填充缺失值
df['Salary'].fillna(df['Salary'].mean(), inplace=True)'
```

## 数据聚合与分组

`groupby()` 是 Pandas 中最强大的功能之一,它允许您对数据进行分组,并对每个组应用聚合函数(如 `sum`, `mean`, `count` 等)。

```python
'# 按城市分组并计算平均年龄
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [25, 30, 25, 40, 30],
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles', 'New York']
}
df_grouped = pd.DataFrame(data)

city_age = df_grouped.groupby('City')['Age'].mean()
print(city_age)'
```

## 结论

本文介绍了 Pandas 的基础知识,包括其核心数据结构、数据读写、选择、操作、清洗以及分组聚合。这些功能构成了使用 Pandas 进行数据分析的基石。虽然我们只触及了皮毛,但掌握这些核心技巧足以让您开始处理和分析自己的数据集。要进一步提升,建议您多加实践,并深入探索 Pandas 官方文档中更高级的功能。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐