【基础】Pandas常用函数与数据聚合
发布时间: 2024-06-26 16:35:03 阅读量: 65 订阅数: 110
![【基础】Pandas常用函数与数据聚合](https://img-blog.csdnimg.cn/20191231143826750.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTUwNjI1Mw==,size_16,color_FFFFFF,t_70)
# 1. Pandas简介**
Pandas是一个强大的Python库,用于处理和分析数据。它提供了一个灵活且易于使用的框架,可以高效地处理各种数据类型,包括表格、时间序列和面板数据。
Pandas的核心数据结构是DataFrame,它类似于一个二维表,其中行表示观察值,列表示变量。DataFrame提供了丰富的操作和分析功能,例如数据清理、数据变换、数据聚合和数据可视化。
# 2. Pandas数据处理
### 2.1 数据清理和预处理
数据清理和预处理是数据分析中至关重要的步骤,它可以帮助我们从原始数据中提取有价值的信息。Pandas提供了丰富的工具和方法来处理缺失值、重复值和数据类型转换。
#### 2.1.1 缺失值处理
缺失值在真实世界的数据集中很常见,它们会影响数据分析的结果。Pandas提供了多种处理缺失值的方法:
- `dropna()`:删除包含缺失值的整个行或列。
- `fillna()`:用指定值(如均值、中位数或众数)填充缺失值。
- `interpolate()`:使用线性或其他插值方法估计缺失值。
```python
import pandas as pd
# 创建一个包含缺失值的数据框
df = pd.DataFrame({'name': ['John', 'Mary', 'Bob', np.nan],
'age': [20, 25, 30, np.nan]})
# 删除包含缺失值的整个行
df = df.dropna()
# 用均值填充缺失值
df['age'] = df['age'].fillna(df['age'].mean())
# 使用线性插值估计缺失值
df['age'] = df['age'].interpolate(method='linear')
```
#### 2.1.2 重复值处理
重复值也会影响数据分析的结果。Pandas提供了以下方法来处理重复值:
- `duplicated()`:识别重复值。
- `drop_duplicates()`:删除重复值。
- `unique()`:获取数据框中唯一值。
```python
# 创建一个包含重复值的数据框
df = pd.DataFrame({'name': ['John', 'Mary', 'Bob', 'John'],
'age': [20, 25, 30, 20]})
# 识别重复值
duplicated_rows = df.duplicated()
# 删除重复值
df = df[~duplicated_rows]
# 获取唯一值
unique_names = df['name'].unique()
```
#### 2.1.3 数据类型转换
数据类型转换对于数据分析和可视化至关重要。Pandas提供了以下方法来转换数据类型:
- `astype()`:将数据框中的列转换为指定数据类型。
- `to_numeric()`:将字符串列转换为数字列。
- `to_datetime()`:将字符串列转换为日期时间列。
```python
# 创建一个包含不同数据类型的数据框
df = pd.DataFrame({'name': ['John', 'Mary', 'Bob'],
'age': ['20', '25', '30'],
'salary': ['1000', '2000', '3000']})
# 将'age'列转换为整数
df['age'] = df['age'].astype(int)
# 将'salary'列转换为浮点数
df['salary'] = df['salary'].astype(float)
# 将'name'列转换为日期时间列
df['name'] = pd.to_datetime(df['name'])
```
### 2.2 数据变换和操作
数据变换和操作是数据分析中另一个重要的步骤,它可以帮助我们从数据中提取有价值的信息。Pandas提供了丰富的工具和方法来合并、连接、排序、分组、筛选和切片数据。
#### 2.2.1 数据合并和连接
数据合并和连接可以将来自不同数据源的数据组合在一起。Pandas提供了以下方法来合并和连接数据:
- `merge()`:根据共同列合并两个数据框。
- `join()`:根据索引
0
0