文化传播公司网站模板,广东网站备案网站建设方案书,制作公司网站视频,网站建设都用那些软件Python 爬虫数据清洗与存储#xff1a;基础教程
在爬虫数据获取完成后#xff0c;数据往往是“原始”的#xff0c;不适合直接使用。清洗和存储是将爬取到的原始数据转化为有用信息的关键步骤。本文将系统地介绍 Python 中进行数据清洗与存储的基本方法#xff0c;帮助新手…Python 爬虫数据清洗与存储基础教程
在爬虫数据获取完成后数据往往是“原始”的不适合直接使用。清洗和存储是将爬取到的原始数据转化为有用信息的关键步骤。本文将系统地介绍 Python 中进行数据清洗与存储的基本方法帮助新手理解如何处理爬虫数据使其更加适合分析和使用。 1. 数据清洗的意义和作用
数据清洗指的是将爬取到的数据转换为结构化、准确且一致的格式去除无效数据、处理缺失值、规范化格式、解析数据等。无论是进一步的分析、模型训练还是数据库存储清洗后的数据都将更加高效和精准。
爬虫获取的数据常见问题
数据缺失某些字段可能为空或格式不一致。噪音数据可能包含广告、注释等无用信息。格式不规范如日期格式、文本的编码、大小写不一致等。
在本文中我们将使用一些示例代码展示如何进行数据清洗和存储。
2. 常用的数据清洗库
Python 提供了多种库用于数据清洗其中最常用的有
Pandas提供了灵活的数据操作功能可用于数据的清洗、转换和处理。re正则表达式库用于字符串模式匹配和数据清理。BeautifulSoup用于解析 HTML清洗网页数据。NumPy用于处理数值数据补齐缺失值等。
安装 Pandas 和 BeautifulSoup
pip install pandas beautifulsoup43. 示例数据集
假设我们爬取了一个电商网站的商品信息数据如下
商品名称价格评论数上架日期Apple iPhone 12$9992002023年1月1日Samsung Galaxy S21价格缺失150无Xiaomi Mi 11$699评论缺失2023年3月5日Sony Xperia 5$7991002023/05/10OPPO Find X3价格错误502022-12-01
可以看到爬取的数据包含以下问题
某些价格和评论数缺失。日期格式不一致。某些价格字段格式不正确。“价格缺失”和“评论缺失”这样的非标准信息需要转化为缺失值。
我们将基于这个数据集来演示清洗步骤。
4. 数据清洗步骤
4.1 将数据载入 Pandas DataFrame
将数据转换为 Pandas 的 DataFrame 格式便于操作。
import pandas as pd# 创建示例数据
data {商品名称: [Apple iPhone 12, Samsung Galaxy S21, Xiaomi Mi 11, Sony Xperia 5, OPPO Find X3],价格: [$999, 价格缺失, $699, $799, 价格错误],评论数: [200, 150, 评论缺失, 100, 50],上架日期: [2023年1月1日, 无, 2023年3月5日, 2023/05/10, 2022-12-01]
}
df pd.DataFrame(data)
print(df)输出为 商品名称 价格 评论数 上架日期
0 Apple iPhone 12 $999 200 2023年1月1日
1 Samsung Galaxy S21 价格缺失 150 无
2 Xiaomi Mi 11 $699 评论缺失 2023年3月5日
3 Sony Xperia 5 $799 100 2023/05/10
4 OPPO Find X3 价格错误 50 2022-12-014.2 处理缺失值
缺失值可以通过删除行或填充方式处理。先将“价格缺失”和“评论缺失”字段转化为 Pandas 可识别的缺失值NaN。
import numpy as np# 将“价格缺失”、“评论缺失”转化为 NaN
df[价格] df[价格].replace([价格缺失, 价格错误], np.nan)
df[评论数] df[评论数].replace(评论缺失, np.nan)print(df)4.3 清洗价格字段
价格字段中包含 $ 符号并且类型为字符串。我们可以去除符号并将其转换为数值类型以便后续分析。
# 去除 $ 符号并转换为浮点数
df[价格] df[价格].str.replace($, ).astype(float)
print(df)4.4 处理日期格式
上架日期包含多种格式。可以使用 pd.to_datetime 函数进行格式统一化。
# 统一上架日期格式
df[上架日期] pd.to_datetime(df[上架日期], errorscoerce)
print(df)在这里我们使用 errorscoerce 选项来处理格式不正确的日期例如“无”会将其转换为缺失值。
4.5 填充缺失值
我们可以根据需求填充缺失值例如将价格的缺失值替换为均值或填入特定值。
# 用平均价格填充缺失值
df[价格].fillna(df[价格].mean(), inplaceTrue)# 填充评论数为 0
df[评论数].fillna(0, inplaceTrue)print(df)5. 数据存储
完成清洗后数据可以存储到不同的文件格式中方便后续分析和使用。常见的数据存储格式包括 CSV、Excel、SQL 数据库和 JSON。
5.1 保存为 CSV 文件
CSV 文件是数据存储的常用格式适合小规模数据。
df.to_csv(cleaned_data.csv, indexFalse)5.2 保存为 Excel 文件
如果数据需要进一步操作或供人查看Excel 格式是不错的选择。
df.to_excel(cleaned_data.xlsx, indexFalse)5.3 保存到 SQL 数据库
SQL 数据库更适合大规模数据可以使用 SQLite、MySQL 等。以下是使用 SQLite 存储数据的示例
import sqlite3# 连接 SQLite 数据库若文件不存在会自动创建
conn sqlite3.connect(products.db)
df.to_sql(products, conn, if_existsreplace, indexFalse)
conn.close()5.4 保存为 JSON 文件
JSON 文件常用于数据传输和存储适合嵌套结构的数据。
df.to_json(cleaned_data.json, orientrecords, force_asciiFalse)6. 数据清洗与存储的最佳实践
格式统一尽可能统一字段的格式方便后续的处理和存储。处理缺失值根据具体需求选择合适的填充策略。保留原始数据清洗过程中可保留一份原始数据副本便于溯源。数据量的选择小规模数据可以存储为 CSV 或 Excel大规模数据推荐存储到数据库。数据验证清洗和存储后检查数据的正确性如统计均值、查看格式是否符合预期。
7. 小结
本文介绍了 Python 爬虫数据的清洗与存储方法从处理缺失值、统一格式、清洗价格和日期等方面入手并展示了如何将清洗后的数据保存为多种格式。通过掌握这些数据清洗和存储技巧可以大幅提升爬虫数据的质量和可用性。