python爬虫数据预处理和数据清洗
时间: 2025-01-04 07:18:41 浏览: 18
Python 爬虫中的数据预处理与清洗
字符串操作
在Python爬虫项目的数据清洗过程中,字符串操作是一项基本技能。常见的字符串操作包括去除空白字符、统一大小写以及替换特定模式的内容等。
import re
def clean_string(text):
text = str(text).strip() # 去除首尾空白字符
text = re.sub(r'\s+', ' ', text) # 将多个连续的空白字符替换成单个空格
return text.lower() # 统一转成小写字母
上述函数展示了如何通过正则表达式库re
来清理文本字段[^1]。
缺失值处理
对于抓取到的数据中存在的缺失情况,可以采用删除含有缺失值的记录或是填补缺失值的方式来进行处理。Pandas提供了方便易用的功能用于管理这类问题:
import pandas as pd
data_frame = pd.DataFrame({
"A": [1, 2, None],
"B": ["a", None, "c"]
})
# 删除任何包含NaN的行
cleaned_df_dropna = data_frame.dropna()
# 使用指定值填充所有的NA/NaN位置
filled_na_df = data_frame.fillna(value=0)
print(cleaned_df_dropna)
print(filled_na_df)
这段代码片段说明了怎样利用pandas框架下的dropna和fillna方法有效地应对缺失数据的问题。
数据格式转换
当获取的数据不符合预期结构时,则需对其进行适当调整。例如日期时间类型的解析、数值型与其他类型之间的互换等都是常见任务之一。这里给出一个简单的例子展示如何把对象形式的时间戳转化为datetime对象:
from datetime import datetime
date_strings = ['2023-07-08', '2023-09-15']
dates = [datetime.strptime(date_str, '%Y-%m-%d') for date_str in date_strings]
for d in dates:
print(d.strftime('%Y/%m/%d'))
此部分介绍了关于时间和日期格式转化的具体实现方式。
层次化索引重塑
除了以上提到的基础层面外,在某些情况下还需要对多层嵌套的数据集执行更复杂的变换操作。比如使用Pandas提供的stack/unstack功能可以在不同维度间灵活切换视图角度,从而更好地满足后续分析需求。
df_multi_index = pd.DataFrame(
np.random.rand(4, 4),
index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
columns=['red', 'orange', 'yellow', 'green']
)
# 行变列
unstacked_df = df_multi_index.unstack()
# 列变行
restacked_df = unstacked_df.stack()
print(unstacked_df)
print(restacked_df)
该实例解释了如何运用Pandas里的stack和unstack命令完成层次化索引表之间相互转变的任务[^2]。