0Pricing
Learn AI with Python · 课时

高效存储采集的数据

保存为 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-guessing

CSV 与 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 数据采集的 REST API 基础
  2. 分页与大型数据集采集
  3. 高效存储采集的数据
  4. 使用公共数据 API
← 返回 Learn AI with Python