収集データを効率的に保存する
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-guessingCSVと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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- データ収集のための REST API 基礎
- 大規模データセットのページングと収集
- 収集データを効率的に保存する
- 公開データ API の操作