高效存储采集的数据
保存为 CSV/JSON/Parquet,安全追加、去重和增量采集
高效存储采集的数据 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
从原始响应到存储数据
收集数据后,您需要将其存储起来,以便重新加载、共享和分析。正确的格式加上一些良好习惯,就能显著提升速度并减少磁盘占用。
本课将介绍 CSV、Parquet、追加批次和去重。
从 JSON 转换为 DataFrame
应用程序编程接口的响应通常是由字典组成的列表。pd.DataFrame 可以直接将其转换为适合存储的表格。
import pandas as pd
records = [
{"id": 1, "name": "A", "score": 9.5},
{"id": 2, "name": "B", "score": 8.0},
]
df = pd.DataFrame(records)
print(df)使用 df.to_csv 保存为 CSV
CSV 通用且便于人类阅读。请使用 to_csv 保存;传入 index=False,这样行索引就不会作为多余列写入。
df.to_csv("data.csv", index=False)
# Reload
df2 = pd.read_csv("data.csv")CSV 的局限性
CSV 使用方便,但用于人工智能工作时存在以下缺点:
- 没有类型信息——所有内容都以文本形式存储,因此加载时需要重新推断数据类型
- 文件较大,默认不压缩
- 读取大型数据集的速度较慢
对于较大或需要反复加载的数据,Parquet 更合适。
使用 df.to_parquet 保存为 Parquet
Parquet 是一种列式二进制格式。它可以保留数据类型、实现良好压缩,并且加载速度远快于 CSV。
您需要安装诸如 pyarrow 这样的引擎。
df.to_parquet("data.parquet", index=False)
df2 = pd.read_parquet("data.parquet")
print(df2.dtypes) # types preserved, no re-guessingCSV 与 Parquet——应该如何选择
以下是一些经验规则:
- CSV:小型数据、与非 Python 工具共享、快速查看
- Parquet:大型数据、反复加载、保持类型准确性、分析流程
对于为模型提供数据的收集任务,优先选择 Parquet。
使用 pd.concat 追加新批次
数据收集通常分批进行。请使用 pd.concat 将现有 DataFrame 与新的 DataFrame 合并。
ignore_index=True 会重新编号索引,使其保持整洁。
new_batch = pd.DataFrame(new_records)
df = pd.concat([df, new_batch], ignore_index=True)
print(len(df))直接追加到 CSV 文件
如果不想加载整个现有 CSV 就进行追加,请以追加模式打开文件,并在后续写入时跳过表头。
import os
header = not os.path.exists("data.csv")
new_batch.to_csv("data.csv", mode="a", header=header, index=False)为什么要去重
重新运行采集、页面重叠或重试都可能产生重复行。重复数据会导致计数膨胀,还可能在训练集与测试集之间泄漏,从而影响模型评估。
合并批次后请务必去重。
drop_duplicates(subset=[id])
请使用稳定的唯一键(通常是 id)并调用 drop_duplicates(subset=...)。即使其他字段发生了细微变化,这样也能移除重复项。
keep="last" 会保留每个 id 的最新版本。
df = df.drop_duplicates(subset=["id"], keep="last").reset_index(drop=True)
print(len(df), "unique rows")保存并合并辅助函数
将各个步骤组合起来:如果现有 Parquet 文件存在,就先加载它;然后拼接新批次,按 id 去重,最后保存回去。您可以安全地重复运行。
import os
import pandas as pd
def save_merge(new_df, path="data.parquet", key="id"):
if os.path.exists(path):
old = pd.read_parquet(path)
new_df = pd.concat([old, new_df], ignore_index=True)
new_df = new_df.drop_duplicates(subset=[key], keep="last")
new_df.to_parquet(path, index=False)
return new_df快速检查:格式选择
您需要反复加载一个用于模型训练的大型数据集,并且需要保留数据类型,同时实现快速读取。
回顾:高效存储数据
现在您已经可以妥善持久化采集到的数据:
- 使用
pd.DataFrame将 JSON 记录转换为表格 - 使用
to_csv(index=False)保存便于移植的文本,使用to_parquet进行快速的类型化存储 - 使用
pd.concat(ignore_index=True)或 CSV 追加模式处理批次 - 使用
drop_duplicates(subset=["id"])确保行保持唯一
下一步:处理真实的公共数据接口。
常见问题解答
「高效存储采集的数据」课时是免费的吗?
是的 — 「高效存储采集的数据」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「高效存储采集的数据」这节课中我会学到什么?
保存为 CSV/JSON/Parquet,安全追加、去重和增量采集 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「高效存储采集的数据」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。