0Pricing
Learn AI with Python · レッスン

収集データを効率的に保存する

CSV/JSON/Parquet への保存、安全な追記、重複排除、増分収集を学びます。

「収集データを効率的に保存する」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

生のレスポンスから保存済みデータへ

データを収集したら、再読み込み、共有、分析ができるように保存する必要があります。適切な形式を選び、いくつかの習慣を身につけるだけで、速度とディスク使用量を大きく改善できます。

このレッスンでは、CSV、Parquet、バッチの追加、重複除去について学びます。

JSONをDataFrameに変換する

APIのレスポンスは通常、辞書のリストです。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は便利ですが、AIで利用する場合には次のような欠点があります。

  • 型を保持しない — すべてがテキストとして保存されるため、読み込み時にデータ型を再推定する必要がある
  • ファイルサイズが大きく、デフォルトでは圧縮されない
  • 大規模なデータセットでは読み込みが遅い

大きなデータや繰り返し読み込むデータには、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で新しいバッチを追加する

データ収集は、バッチ単位で行われることがよくあります。既存のDataFrameと新しいDataFrameをpd.concatで結合します。

ignore_index=Trueを指定するとインデックスが振り直され、きれいな状態に保てます。

new_batch = pd.DataFrame(new_records)
df = pd.concat([df, new_batch], ignore_index=True)
print(len(df))

CSVファイルに直接追記する

既存のCSVを読み込まずに追記するには、追記モードで開き、2回目以降の書き込みではヘッダーを省略します。

import os

header = not os.path.exists("data.csv")
new_batch.to_csv("data.csv", mode="a", header=header, index=False)

重複を削除する理由

コレクションの再実行、ページの重複、またはリトライによって、重複した行が作成されることがあります。重複があると件数が水増しされ、train/test の分割間でデータが漏れる可能性があり、モデルの評価に悪影響を与えます。

バッチを結合した後は、必ず重複を削除してください。

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"])で行の一意性を保つ

次は、実際の公開データ API を扱います。

よくある質問

「収集データを効率的に保存する」レッスンは無料ですか?

はい。「収集データを効率的に保存する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「収集データを効率的に保存する」で何を学びますか?

CSV/JSON/Parquet への保存、安全な追記、重複排除、増分収集を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応の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に戻る