シード指定でCSV行を再現可能にランダム抽出
このツールは、元の見出しを維持したまま、CSVのデータレコードを指定件数だけ重複なしで抽出します。CSVテキスト、サンプル件数、整数のシードを指定すると、同じ3つの入力からは常に同じCSVが得られます。レビュー、テスト、デモ、監査などで、共同作業者が正確に再現できる小さなデータセットを用意したい場合に特に便利です。
無料で実行
ほかの方も再現できるランダムな部分集合を作成します
一般的なランダム抽出は、別の方が同じ操作を繰り返す必要が生じると扱いにくくなります。表計算ソフトでは再計算によって別のレコードが選ばれることがあり、手順が記録されていないスクリプトでは実行ごとの差異を確認できません。このツールでは、CSVテキストと希望件数に加えて、シードも入力として明示します。そのため、同一の入力からは完全に同じレコードが得られ、版管理された実験、レビュー記録、反復可能な品質確認に利用できます。最初のCSVレコードは常に見出しとして扱い、必ず保持します。抽出対象はその下のデータレコードだけで、同じレコードが2回選ばれることはありません。選ばれたレコードは元の相対的な順序を維持するため、縮小後のファイルと原本を比較しやすくなります。引用符内のコンマ、エスケープされた引用符、改行も認識し、レコードの内容を作り直すことなく保持します。
件数とシードを目的に合わせて指定します
sample_sizeには必要なデータレコード数を正確に指定してください。0も有効で、見出しだけを返します。これは、スキーマを残した空のテスト用ファイルを作る場合に役立ちます。重複なしで抽出するため、指定件数は利用可能なデータレコード数を超えられません。存在する行より多くの異なる行を要求することは不可能だからです。その場合、レコードを複製したり件数を黙って減らしたりせず、明確な入力エラーを返します。seedには安全な整数を指定します。これは機密情報ではなく、予測困難である必要もありません。再現する選択を識別するための値です。実験番号、テストケース番号、レビュー回数などから値を決め、結果と一緒に記録すると便利です。シードだけを変えると通常は別の部分集合になり、以前の値に戻すと以前の選択が復元されます。正確な再現が必要な場合は、元のCSVも変更せずに保管してください。
テストやレビューではサンプルの性質を理解して利用します
ランダムな部分集合は、簡易確認、パイプラインのスモークテスト、デモ、扱いやすいテストデータの配布に役立ちます。ただし、自動的に統計上の代表性を持つわけではありません。特に件数が少ない場合、頻度の低いカテゴリが偶然含まれないことがあります。すべてのカテゴリを含める必要がある場合は、無制約のランダム抽出に頼らず、層化抽出をご利用ください。この機能はネットワーク通信、情報の付加、型変換、区切り文字の変更、データクリーニングを行いません。選択したCSVレコードをそのまま保持し、元の見出しの下に連結するため、日付の書き換えや数値の正規化を避けられます。引用符で囲まれた複数行レコードも保持します。見出しより後の空の物理行もレコードとして数えます。削除すると入力された母集団が変わるためです。自動処理では、シード、件数、元データの固定コピーまたはチェックサムを結果と一緒に保存してください。APIは1回$0.002で、ブラウザ版では同じ計算を端末内で実行します。
活用例
繰り返し利用できるテストデータの作成
結合テスト用に小さなCSVを抽出し、障害を再現できるようシードも一緒に保存します。
確認しやすいファイルの共有
見出し、元の書式、再現可能な選択方法を維持したまま、レコード数を減らして共有します。
複数の実験結果の比較
別々の変換やモデルに同じ行を使い、入力の差が比較結果に影響しないようにします。
よくある質問
同じ行が2回選ばれることはありますか?
いいえ。重複なしで抽出するため、選択された各レコードは元データ内の異なる位置にあります。
出力にはCSVの見出しが残りますか?
はい。最初のレコードを見出しとして保持し、それ以降のレコードだけを抽出対象にします。
なぜ結果を再現できるのですか?
整数のシードで固定の疑似乱数アルゴリズムを初期化するためです。同じCSV、件数、シードからは同じ出力が得られます。
指定件数がCSVの行数より多い場合はどうなりますか?
母集団より大きな重複なしのサンプルは作れないため、入力エラーとして処理されます。
引用符付きフィールドや複数行フィールドに対応していますか?
はい。引用符内のコンマ、エスケープされた二重引用符、引用符内の改行を認識します。
APIリクエストの料金はいくらですか?
APIリクエストは1回$0.002です。ブラウザ版では同じ純粋な計算を端末内で実行します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/data/random-sample-rows \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"csv":"id,name,team\n1,Ada,Blue\n2,Grace,Red\n3,Linus,Blue\n4,Margaret,Green\n5,Donald,Red","sample_size":3,"seed":42}'const res = await fetch("https://api.kit.forhosting.com/data/random-sample-rows", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"csv": "id,name,team\n1,Ada,Blue\n2,Grace,Red\n3,Linus,Blue\n4,Margaret,Green\n5,Donald,Red",
"sample_size": 3,
"seed": 42
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/random-sample-rows",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"csv": "id,name,team\n1,Ada,Blue\n2,Grace,Red\n3,Linus,Blue\n4,Margaret,Green\n5,Donald,Red",
"sample_size": 3,
"seed": 42
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/random-sample-rows", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"csv":"id,name,team\\n1,Ada,Blue\\n2,Grace,Red\\n3,Linus,Blue\\n4,Margaret,Green\\n5,Donald,Red","sample_size":3,"seed":42}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"csv":"id,name,team\n1,Ada,Blue\n2,Grace,Red\n3,Linus,Blue\n4,Margaret,Green\n5,Donald,Red","sample_size":3,"seed":42}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/random-sample-rows", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"csv": "id,name,team\n1,Ada,Blue\n2,Grace,Red\n3,Linus,Blue\n4,Margaret,Green\n5,Donald,Red",
"sample_size": 3,
"seed": 42
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.random_sample_rows",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 25 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |