【进阶篇】爬虫数据清洗与预处理技术:使用Pandas进行数据清洗和转换
发布时间: 2024-06-25 00:01:27 阅读量: 102 订阅数: 171
使用Pandas进行数据预处理 笔记2 任务 5.2 清洗数据代码数据
![【进阶篇】爬虫数据清洗与预处理技术:使用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)
# 2.1 Pandas数据结构和操作
### 2.1.1 DataFrame和Series简介
**DataFrame:**
- 二维表格状数据结构,类似于Excel工作表。
- 由行(index)和列(columns)组成,每个单元格包含一个值。
- 可通过`pd.DataFrame()`创建。
**Series:**
- 一维数组状数据结构,类似于Python列表。
- 由一个值序列和一个索引序列组成。
- 可通过`pd.Series()`创建。
### 2.1.2 数据的导入和导出
**导入数据:**
- 从CSV文件:`pd.read_csv()`
- 从Excel文件:`pd.read_excel()`
- 从JSON文件:`pd.read_json()`
**导出数据:**
- 到CSV文件:`df.to_csv()`
- 到Excel文件:`df.to_excel()`
- 到JSON文件:`df.to_json()`
# 2. Pandas数据清洗技术
### 2.1 Pandas数据结构和操作
#### 2.1.1 DataFrame和Series简介
Pandas库中的两个核心数据结构是DataFrame和Series。DataFrame是一个二维表状结构,包含行和列,类似于SQL中的表格。Series是一个一维数组,类似于Python中的列表。
**DataFrame**
```python
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
"name": ["John", "Mary", "Bob"],
"age": [20, 25, 30],
"city": ["New York", "London", "Paris"]
})
# 查看DataFrame
print(df)
```
**输出:**
```
name age city
0 John 20 New York
1 Mary 25 London
2 Bob 30 Paris
```
**Series**
```python
# 创建一个Series
series = pd.Series([20, 25, 30])
# 查看Series
print(series)
```
**输出:**
```
0 20
1 25
2 30
dtype: int64
```
#### 2.1.2 数据的导入和导出
Pandas提供了多种导入和导出数据的方法,包括:
**导入数据**
* **从CSV文件导入:**`pd.read_csv("file.csv")`
* **从Excel文件导入:**`pd.read_excel("file.xlsx")`
* **从JSON文件导入:**`pd.read_json("file.json")`
**导出数据**
* **导出到CSV文件:**`df.to_csv("file.csv")`
* **导出到Excel文件:**`df.to_excel("file.xlsx")`
* **导出到JSON文件:**`df.to_json("file.json")`
### 2.2 数据清洗方法
#### 2.2.1 缺失值处理
缺失值是数据清洗中常见的挑战。Pandas提供了多种处理缺失值的方法:
* **删除缺失值:**`df.dropna()`
* **用特定值填充缺失值:**`df.fillna(value)`
* **用平均值填充缺失值:**`df.fillna(df.mean())`
#### 2.2.2 重复值处理
重复值也是数据清洗中需要处理的问题。Pandas提供了以下方法:
* **删除重复值:**`df.drop_duplicates()`
* **保留第一个重复值:**`df.drop_duplicates(keep="first")`
* **保留最后一个重复值:**`df.drop_duplicates(keep="last")`
#### 2.2.3 数据类型转换
有时需要将数据类型从一种类型转换为另一种类型。Pandas提供了`astype()`方法:
```python
# 将"age"列转换为浮点数
df["age"] = df["age"].astype(float)
```
### 2.3 数据转换方法
#### 2.3.1 数据合并和连接
Pandas提供了`merge()`和`join()`方法合并和连接DataFrame:
* **合并:**`df1.merge(df2, on="column_name")`
* **连接:**`df1.join(df2, on="column_name")`
#### 2.3.2 数据分组和聚合
Pandas提供了`groupby()`和`agg()`方法对数据进行分组和聚合:
```python
# 按"city"列分组并计算每个城市的人数
df.groupby("city").agg({"age": "count"})
```
#### 2.3.3 数据排序和筛选
Pandas提供了`sort_values()`和`query()`方法对数据进行排序和筛选:
```python
# 按"age"列降序排序
df.sort_values("age", ascending=False)
# 筛选出年龄大于25岁的人
df.query("age > 25")
```
# 3.1 特征工程
特征工程是数据预处理中至关重要的一步,它可以帮助我们从原始数据中提取出有价值的特
0
0