在Python中,清洗爬虫数据通常涉及以下几个步骤:
strip()
方法去除字符串两端的空白字符。re
模块)来去除或替换不需要的特殊字符。下面是一个简单的示例,展示如何使用Python清洗爬虫数据:
import re
import pandas as pd
# 示例数据
data = [
{'name': 'John', 'age': '30', 'email': 'john@example.com'},
{'name': 'Jane', 'age': '25', 'email': 'jane@example.com'},
{'name': 'Doe', 'age': '', 'email': 'doe@example.com'},
{'name': 'Alice', 'age': '35', 'email': 'alice@example.com'},
]
# 创建DataFrame
df = pd.DataFrame(data)
# 去除空白字符
df['name'] = df['name'].str.strip()
df['age'] = df['age'].str.strip()
# 去除特殊字符(如果有)
df['email'] = df['email'].str.replace(r'[^a-zA-Z0-9@._-]+', '', regex=True)
# 统一编码格式
df = df.applymap(lambda x: x.encode('utf-8').decode('utf-8') if isinstance(x, str) else x)
# 处理缺失值
df['age'].fillna(df['age'].mean(), inplace=True) # 用平均年龄填充缺失的年龄
# 数据类型转换
df['age'] = pd.to_numeric(df['age'], errors='coerce') # 将年龄转换为数字,无法转换的设置为NaN
# 标准化数据格式
df['email'] = pd.to_datetime(df['email'], format='%Y-%m-%d', errors='coerce') # 假设电子邮件是日期格式
# 去重
df.drop_duplicates(inplace=True)
# 数据筛选和排序
filtered_df = df[df['age'] > 25] # 筛选年龄大于25的行
sorted_df = filtered_df.sort_values(by='age', ascending=False) # 按年龄降序排序
print(sorted_df)
这个示例展示了如何使用pandas库来清洗和处理爬虫数据。根据你的具体需求,你可能需要调整这些步骤和方法。