> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

> CSV ファイルを Tables およびアーティファクトとして W&B にインポートし、ダッシュボードで可視化、比較、分析します。

# 実験で CSV ファイルをトラッキングする

W\&B Python Library を使用して CSV ファイルをログし、[W\&B ダッシュボード](/ja/products/wandb/track/workspaces) で可視化します。W\&B ダッシュボード は、機械学習モデルの結果を一元的に整理、可視化できる場所です。W\&B にログされていない[過去の機械学習実験の情報を含む CSV ファイル](#import-and-log-your-csv-of-experiments)や、[データセットを含む CSV ファイル](#import-and-log-your-dataset-csv-file)がある場合に特に便利です。

<h2 id="import-and-log-your-dataset-csv-file">
  データセットの CSV ファイルをインポートしてログする
</h2>

CSV ファイルの内容を再利用しやすくするために、W\&B Artifacts を使用することをお勧めします。

1. まず、CSV ファイルをインポートします。次のコードスニペットで、ファイル名 `iris.csv` を実際の CSV ファイル名に置き換えてください。

```python theme={"system"}
import wandb
import pandas as pd

# CSV を新しい DataFrame に読み込みます
new_iris_dataframe = pd.read_csv("iris.csv")
```

2. [W\&B ダッシュボード](/ja/products/wandb/track/workspaces) を活用するため、CSV ファイルを W\&B 表 に変換します。

```python theme={"system"}
# データフレームを W&B 表に変換する
iris_table = wandb.Table(dataframe=new_iris_dataframe)
```

3. 次に、W\&B アーティファクトを作成し、そのアーティファクトに表を追加します：

```python theme={"system"}
# 表をアーティファクトに追加すると、行数の上限が
# 200000 に引き上げられ、再利用もしやすくなります
iris_table_artifact = wandb.Artifact("iris_artifact", type="dataset")
iris_table_artifact.add(iris_table, "iris_table")

# データを保持するため、元の CSV ファイルもアーティファクト内にログします
iris_table_artifact.add_file("iris.csv")
```

W\&B Artifacts の詳細については、[Artifacts の章](/ja/products/wandb/artifacts)を参照してください。

4. 最後に、`wandb.init()` で新しい W\&B run を開始し、W\&B へのトラッキングとログを行います：

```python theme={"system"}
# W&B run を開始してデータをログします
with wandb.init(project="tables-walkthrough") as run:

    # 表をログして run で可視化します...
    run.log({"iris": iris_table})

    # さらにアーティファクトとしてログし、使用できる行数の上限を引き上げます
    run.log_artifact(iris_table_artifact)
```

`wandb.init()` API は、run にデータをログするための新しいバックグラウンドプロセスを起動し、データを wandb.ai に同期します (デフォルトの場合) 。W\&B Workspace のダッシュボードで、リアルタイムの可視化を確認できます。次の画像は、上記のコードスニペットを実行した際の出力を示しています。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/import_csv_tutorial.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=51c360ae2d9229ad18a76d95901c8fca" alt="W&B ダッシュボードにインポートされた CSV ファイル" width="2052" height="2114" data-path="products/wandb/_media/import_csv_tutorial.png" />
</Frame>

前述のコードスニペットをまとめた完全なスクリプトを以下に示します。

```python theme={"system"}
import wandb
import pandas as pd

# CSV を新しいデータフレームに読み込む
new_iris_dataframe = pd.read_csv("iris.csv")

# データフレームを W&B 表に変換する
iris_table = wandb.Table(dataframe=new_iris_dataframe)

# 表をアーティファクトに追加して行数の上限を
# 200000 に引き上げ、再利用しやすくする
iris_table_artifact = wandb.Artifact("iris_artifact", type="dataset")
iris_table_artifact.add(iris_table, "iris_table")

# 元の CSV ファイルもアーティファクト内にログしてデータを保存する
iris_table_artifact.add_file("iris.csv")

# W&B run を開始してデータをログする
with wandb.init(project="tables-walkthrough") as run:

    # 表をログして run で可視化し…
    run.log({"iris": iris_table})

    # さらにアーティファクトとしてログして、使用できる行数の上限を引き上げる
    run.log_artifact(iris_table_artifact)
```

<h2 id="import-and-log-your-csv-of-experiments">
  実験 の CSV をインポートしてログする
</h2>

場合によっては、実験の詳細が CSV ファイルに含まれていることがあります。このような CSV ファイルに含まれる一般的な詳細は次のとおりです。

* 実験 run の名前
* 初期の [メモ](/ja/products/wandb/runs#add-a-note-to-a-run)
* 実験を区別するための [タグ](/ja/products/wandb/runs/tags)
* 実験に必要な設定 ([Sweeps ハイパーパラメーター調整](/ja/products/wandb/sweeps) を利用できるという利点もあります) 。

| 実験 | モデル名 | メモ | タグ | Num Layers | Final Train Acc | Final Val Acc | Training Losses |
| - | - | - | - | - | - | - | - |
| Experiment 1 | mnist-300-layers | トレーニングデータに過学習しすぎている | \[latest] | 300 | 0.99 | 0.90 | \[0.55, 0.45, 0.44, 0.42, 0.40, 0.39] |
| Experiment 2 | mnist-250-layers | 現在の最良モデル | \[prod, best] | 250 | 0.95 | 0.96 | \[0.55, 0.45, 0.44, 0.42, 0.40, 0.39] |
| Experiment 3 | mnist-200-layers | ベースラインより悪かった。デバッグが必要 | \[debug] | 200 | 0.76 | 0.70 | \[0.55, 0.45, 0.44, 0.42, 0.40, 0.39] |
| ... | ... | ... | ... | ... | ... | ... | |
| Experiment N | mnist-X-layers | メモ | ... | ... | ... | ... | \[..., ...] |

W\&B は実験の CSV ファイルを受け取り、それを W\&B の実験 run に変換できます。以下のコード スニペットとコード スクリプトは、実験の CSV ファイルをインポートしてログする方法を示しています。

1. 開始するには、まず CSV ファイルを読み込んで Pandas のデータフレームに変換します。`"experiments.csv"` をご自身の CSV ファイルの名前に置き換えてください。

```python theme={"system"}
import wandb
import pandas as pd

FILENAME = "experiments.csv"
loaded_experiment_df = pd.read_csv(FILENAME)

PROJECT_NAME = "Converted Experiments"

EXPERIMENT_NAME_COL = "Experiment"
NOTES_COL = "Notes"
TAGS_COL = "Tags"
CONFIG_COLS = ["Num Layers"]
SUMMARY_COLS = ["Final Train Acc", "Final Val Acc"]
METRIC_COLS = ["Training Losses"]

# Pandas DataFrame を処理して扱いやすくする
for i, row in loaded_experiment_df.iterrows():
    run_name = row[EXPERIMENT_NAME_COL]
    notes = row[NOTES_COL]
    tags = row[TAGS_COL]

    config = {}
    for config_col in CONFIG_COLS:
        config[config_col] = row[config_col]

    metrics = {}
    for metric_col in METRIC_COLS:
        metrics[metric_col] = row[metric_col]

    summaries = {}
    for summary_col in SUMMARY_COLS:
        summaries[summary_col] = row[summary_col]
```

2. 次に、[`wandb.init()`](/ja/products/wandb/ref/python/functions/init) を使用して新しい W\&B run を開始し、W\&B にトラッキングおよびログします:

   ```python theme={"system"}
   with wandb.init(
       project=PROJECT_NAME, name=run_name, tags=tags, notes=notes, config=config
   ) as run:
   ```

実験が実行される際、W\&B で表示、クエリ、および分析できるようにメトリクスの各インスタンスをログしたい場合があります。これを実現するには、[`run.log()`](/ja/products/wandb/ref/python/experiments/run#method-runlog) コマンドを使用します:

```python theme={"system"}
run.log({key: val})
```

オプションで最終サマリー メトリクスをログして run の結果を定義できます。[`define_metric`](/ja/products/wandb/ref/python/experiments/run#define_metric) API を使用します。この例では `run.summary.update()` を使用して run にサマリー メトリクスを追加します：

```python theme={"system"}
run.summary.update(summaries)
```

サマリー メトリクス に関する詳細は、[Log Summary Metrics](/ja/products/wandb/track/log/log-summary) を参照してください。

上記のサンプル表を [W\&B ダッシュボード](/ja/products/wandb/track/workspaces) に変換する完全なサンプルスクリプトを以下に示します。

```python theme={"system"}
FILENAME = "experiments.csv"
loaded_experiment_df = pd.read_csv(FILENAME)

PROJECT_NAME = "Converted Experiments"

EXPERIMENT_NAME_COL = "Experiment"
NOTES_COL = "Notes"
TAGS_COL = "Tags"
CONFIG_COLS = ["Num Layers"]
SUMMARY_COLS = ["Final Train Acc", "Final Val Acc"]
METRIC_COLS = ["Training Losses"]

for i, row in loaded_experiment_df.iterrows():
    run_name = row[EXPERIMENT_NAME_COL]
    notes = row[NOTES_COL]
    tags = row[TAGS_COL]

    config = {}
    for config_col in CONFIG_COLS:
        config[config_col] = row[config_col]

    metrics = {}
    for metric_col in METRIC_COLS:
        metrics[metric_col] = row[metric_col]

    summaries = {}
    for summary_col in SUMMARY_COLS:
        summaries[summary_col] = row[summary_col]

    with  wandb.init(
        project=PROJECT_NAME, name=run_name, tags=tags, notes=notes, config=config
    ) as run:

        for key, val in metrics.items():
            if isinstance(val, list):
                for _val in val:
                    run.log({key: _val})
            else:
                run.log({key: val})

        run.summary.update(summaries)
```


## Related topics

- [外部ファイルのトラッキング](/ja/products/wandb/artifacts/track-external-files.md)
