> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-feature-automate-reference-docs-generation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Datasets

Weave `Dataset`は、LLMアプリケーション評価のための例を整理、収集、追跡、バージョン管理して簡単に比較できるようにします。プログラムでもUIでも`Dataset`を作成して操作できます。

このページでは以下について説明します：

* PythonとTypeScriptでの基本的な`Dataset`操作と始め方
* PythonとTypeScriptで`Dataset`を作成する方法（Weave [calls](../tracking/tracing.mdx)
* UIで`Dataset`で利用可能な操作

## `Dataset`クイックスタート

以下のコードサンプルは、PythonとTypeScriptを使用して基本的な`Dataset`操作を実行する方法を示しています。SDKを使用して、以下のことができます：

* を作成する`Dataset`
* を公開する`Dataset`
* を取得する`Dataset`
* 内の特定の例にアクセスする`Dataset`

タブを選択して、PythonとTypeScript固有のコードを確認してください。

<Tabs>
  <Tab title="Python">
    ```python
    import weave
    from weave import Dataset
    # Initialize Weave
    weave.init('intro-example')

    # Create a dataset
    dataset = Dataset(
        name='grammar',
        rows=[
            {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
            {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
            {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
        ]
    )

    # Publish the dataset
    weave.publish(dataset)

    # Retrieve the dataset
    dataset_ref = weave.ref('grammar').get()

    # Access a specific example
    example_label = dataset_ref.rows[2]['sentence']
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript
    import * as weave from 'weave';

    // Initialize Weave
    await weave.init('intro-example');

    // Create a dataset
    const dataset = new weave.Dataset({
        name: 'grammar',
        rows: [
            {id: '0', sentence: "He no likes ice cream.", correction: "He doesn't like ice cream."},
            {id: '1', sentence: "She goed to the store.", correction: "She went to the store."},
            {id: '2', sentence: "They plays video games all day.", correction: "They play video games all day."}
        ]
    });

    // Publish the dataset
    await dataset.save();

    // Access a specific example
    const exampleLabel = datasetRef.getRow(2).sentence;
    ```
  </Tab>
</Tabs>

## 他のオブジェクトから`Dataset`を作成する

<Tabs>
  <Tab title="Python">
    Pythonでは、`Dataset`は、Weave [calls](../tracking/tracing.mdx)などの一般的なWeaveオブジェクトや、`pandas.DataFrame`などのPythonオブジェクトからも構築できます。この機能は、特定の例から例の`Dataset`を作成したい場合に便利です。

    ### Weave call

    1つまたは複数のWeave callから`Dataset`を作成するには、コールオブジェクトを取得し、`from_calls`メソッドのリストに追加します。

    ```python
    @weave.op
    def model(task: str) -> str:
        return f"Now working on {task}"

    res1, call1 = model.call(task="fetch")
    res2, call2 = model.call(task="parse")

    dataset = Dataset.from_calls([call1, call2])
    # Now you can use the dataset to evaluate the model, etc.
    ```

    ### Pandas DataFrame

    Pandas `Dataset`オブジェクトから`DataFrame`を作成するには、`from_pandas`メソッドを使用します。

    を元に戻すには、`Dataset`を使用します`to_pandas`。

    ```python
    import pandas as pd

    df = pd.DataFrame([
        {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
        {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
        {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
    ])
    dataset = Dataset.from_pandas(df)
    df2 = dataset.to_pandas()

    assert df.equals(df2)
    ```

    ### Hugging Face Datasets

    Hugging Face `Dataset`または`datasets.Dataset`オブジェクトから`datasets.DatasetDict`を作成するには、まず必要な依存関係がインストールされていることを確認してください：

    ```bash
    pip install weave[huggingface]
    ```

    次に、`from_hf`メソッドを使用します。複数の分割（「train」、「test」、「validation」など）を持つ`DatasetDict`を提供すると、Weaveは自動的に「train」分割を使用し、警告を発します。「train」分割が存在しない場合は、エラーが発生します。特定の分割を直接提供することもできます（例：`hf_dataset_dict['test']`）。

    を Hugging Face `weave.Dataset`に戻すには、`Dataset`メソッドを使用します`to_hf`。

    ```python
    # Ensure datasets is installed: pip install datasets
    from datasets import Dataset as HFDataset, DatasetDict

    # Example with HF Dataset
    hf_rows = [
        {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
        {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
    ]
    hf_ds = HFDataset.from_list(hf_rows)
    weave_ds_from_hf = Dataset.from_hf(hf_ds)

    # Convert back to HF Dataset
    converted_hf_ds = weave_ds_from_hf.to_hf()

    # Example with HF DatasetDict (uses 'train' split by default)
    hf_dict = DatasetDict({
        'train': HFDataset.from_list(hf_rows),
        'test': HFDataset.from_list([{'id': '2', 'sentence': "Test sentence", 'correction': "Test correction"}])
    })
    # This will issue a warning and use the 'train' split
    weave_ds_from_dict = Dataset.from_hf(hf_dict)

    # Providing a specific split
    weave_ds_from_test_split = Dataset.from_hf(hf_dict['test'])
    ```
  </Tab>

  <Tab title="TypeScript">
    この機能は現在TypeScriptでは利用できません。お待ちください！
  </Tab>
</Tabs>

## UIで`Dataset`を作成、編集、削除する

UIで`Dataset`を作成、編集、削除できます。

### 新しい`Dataset`

1. 編集したいWeaveプロジェクトに移動します。

2. サイドバーで**Traces**を選択します。

3. 新しい`Dataset`を作成したい1つまたは複数のコールを選択します。

4. 右上のメニューで、**Add selected rows to a dataset**アイコン（ゴミ箱アイコンの隣にあります）をクリックします。

5. 表示される**Choose a dataset**ドロップダウンから、**Create new**を選択します。**Dataset name**フィールドが表示されます。

6. **Dataset name**フィールドに、データセットの名前を入力します。**Configure dataset fields**のオプションが表示されます。

   :::important
   データセット名は文字または数字で始まり、文字、数字、ハイフン、アンダースコアのみを含むことができます。
   :::

7. （任意）**Configure dataset fields**で、データセットに含めるコールからのフィールドを選択します。
   * 選択した各フィールドの列名をカスタマイズできます。
   * 新しい`Dataset`に含めるフィールドのサブセットを選択したり、すべてのフィールドの選択を解除したりできます。

8. データセットフィールドの設定が完了したら、**Next**をクリックします。新しい`Dataset`のプレビューが表示されます。

9. （任意）**Dataset**内の編集可能なフィールドをクリックして、エントリを編集します。

10. **Create dataset**をクリックします。新しいデータセットが作成されます。

11. 確認ポップアップで、**View the dataset**をクリックして、新しい`Dataset`を表示します。または、**Datasets**タブに移動します。

### 編集する`Dataset`

1. 編集したい`Dataset`を含むWeaveプロジェクトに移動します。

2. サイドバーから**Datasets**を選択します。利用可能な`Dataset`が表示されます。

   ![Dataset UI](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui.png)

3. **Object**列で、編集したい`Dataset`の名前とバージョンをクリックします。`Dataset`の名前、バージョン、作成者、`Dataset`行などの情報を表示するポップアウトモーダルが表示されます。

   ![View Dataset information](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-popout.png)

4. モーダルの右上隅にある**Edit dataset**ボタン（鉛筆アイコン）をクリックします。**+ Add row**ボタンがモーダルの下部に表示されます。

   ![Dataset UI- Add row icon](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-popout-edit.png)

5. \&#xNAN;**+ Add row**をクリックします。既存の`Dataset`行の上部に緑色の行が表示され、`Dataset`に新しい行を追加できることを示します。

   ![Dataset UI](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-popout-edit-green.png)

6. 新しい行にデータを追加するには、その行内の目的の列をクリックします。デフォルトの**id**列は`Dataset`行では編集できません。Weaveが作成時に自動的に割り当てるためです。**Text**、**Code**、および**Diff**のフォーマットオプションを含む編集モーダルが表示されます。

   ![Dataset UI - Add data to a column and format.](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-popout-edit-addcol.png)

7. 新しい行でデータを追加したい各列に対してステップ6を繰り返します。

   ![Dataset UI - Add data to all columns.](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-popout-edit-colsadded.png)

8. `Dataset`に追加したい各行に対してステップ5を繰り返します。

9. 編集が完了したら、モーダルの右上隅にある`Dataset`を**Publish**をクリックして公開します。または、変更を公開したくない場合は**Cancel**をクリックします。

   ![Dataset UI - Publish or cancel.](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-popout-edit-publish.png)

   公開すると、更新された行を含む新しいバージョンの`Dataset`がUIで利用可能になります。

   ![Dataset UI - Published metadata.](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-popout-edit-published-meta.png)
   ![Dataset UI - Published rows.](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-popout-edit-published-rows.png)

### 削除する`Dataset`

1. 編集したい`Dataset`を含むWeaveプロジェクトに移動します。

2. サイドバーから**Datasets**を選択します。利用可能な`Dataset`が表示されます。

3. **Object**列で、削除したい`Dataset`の名前とバージョンをクリックします。`Dataset`の名前、バージョン、作成者、`Dataset`行などの情報を表示するポップアウトモーダルが表示されます。

4. モーダルの右上隅にあるゴミ箱アイコンをクリックします。

   `Dataset`の削除を確認するポップアップモーダルが表示されます。

   ![Dataset UI - Confirm deletion modal.](https://mintlify.s3.us-west-1.amazonaws.com/wb-21fd5541-feature-automate-reference-docs-generation/ja/guides/core-types/imgs/datasetui-delete-modal.png)

5. ポップアップモーダルで、赤い**Delete**ボタンをクリックして`Dataset`を削除します。または、**Cancel**をクリックして`Dataset`を削除しないようにします。

   これで`Dataset`は削除され、Weaveダッシュボードの**Datasets**タブに表示されなくなります。

### 新しい例を追加する`Dataset`

1. 編集したいWeaveプロジェクトに移動します。

2. サイドバーで**Traces**を選択します。

3. 新しい例を作成したい`Datasets`を持つ1つ以上のコールを選択します。

4. 右上のメニューで、**Add selected rows to a dataset**アイコン（ゴミ箱アイコンの隣にあります）をクリックします。オプションで、**Show latest versions**をオフに切り替えて、利用可能なすべてのデータセットのすべてのバージョンを表示します。

5. **Choose a dataset**ドロップダウンから、例を追加したい`Dataset`を選択します。**Configure field mapping**のオプションが表示されます。

6. （任意）**Configure field mapping**で、コールからのフィールドと対応するデータセット列のマッピングを調整できます。

7. フィールドマッピングの設定が完了したら、**Next**をクリックします。新しい`Dataset`のプレビューが表示されます。

8. 空の行（緑色）に、新しい例の値を追加します。**id**フィールドは編集できず、Weaveによって自動的に作成されることに注意してください。

9. **Add to dataset**をクリックします。または、**Configure field mapping**画面に戻るには、**Back**をクリックします。

10. 確認ポップアップで、**View the dataset**をクリックして変更を確認します。または、**Datasets** タブをクリックして、あなたの `Dataset`.

## その他のデータセット操作

<Tabs>
  <Tab title="Python">
    ### 行の選択

    特定の行を `Dataset` から、 `select` メソッドを使用してインデックスで選択できます。これはデータのサブセットを作成する際に便利です。

    ```python
    import weave
    from weave import Dataset

    # Create a sample dataset
    dataset = Dataset(rows=[
        {'col_a': 1, 'col_b': 'x'},
        {'col_a': 2, 'col_b': 'y'},
        {'col_a': 3, 'col_b': 'z'},
        {'col_a': 4, 'col_b': 'w'},
    ])

    # Select rows at index 0 and 2
    subset_dataset = dataset.select([0, 2])

    # Now subset_dataset contains only the first and third rows
    # print(list(subset_dataset))
    # Output: [{'col_a': 1, 'col_b': 'x'}, {'col_a': 3, 'col_b': 'z'}]
    ```
  </Tab>

  <Tab title="TypeScript">
    この機能は現在TypeScriptでは利用できません。乞うご期待！
  </Tab>
</Tabs>
