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

# Loading and Inspecting Datasets

> Pull datasets, iterate rows, and work with slices

## Pull a dataset by name

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
import zeroeval as ze

ze.init()

dataset = ze.Dataset.pull("capital-cities")
print(dataset.name)
print(len(dataset))
```

Optionally load a specific version number:

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
dataset_v2 = ze.Dataset.pull("capital-cities", version_number=2)
```

If the dataset defines named subsets, you can pull one directly:

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
diamond = ze.Dataset.pull("gpqa", subset="diamond")
print(len(diamond))
```

## Iterate over rows

Rows are yielded as `DotDict` objects, so both key and dot access are possible.

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
for row in dataset:
    print(row.question, row.answer)  # dot access
```

## Index and slice

* `dataset[idx]` returns a single row (`DotDict`)
* `dataset[start:end]` returns a new `Dataset` with copied rows

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
first = dataset[0]
top_100 = dataset[:100]

print(type(first))    # DotDict
print(type(top_100))  # Dataset
```

<Info>
  Sliced datasets preserve backend metadata (dataset id/version/subset) when
  available, so they can still be evaluated and pushed in normal workflows.
</Info>

## Access columns and normalized data

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
print(dataset.columns)  # union of all row keys (excluding internal row_id)
print(dataset.data)     # row payloads without wrapper metadata
```

## Minimal versioning example

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
dataset = ze.Dataset(
    "qa-demo",
    data=[{"row_id": "q1", "question": "6 * 7", "answer": "42"}],
)
dataset.push()

latest = ze.Dataset.pull("qa-demo")
pinned = ze.Dataset.pull("qa-demo", version_number=dataset.version_number)
```

## Common loading errors

<AccordionGroup>
  <Accordion title="SDK not initialized" icon="triangle-exclamation">
    `Dataset.pull(...)` requires a valid ZeroEval initialization.

    ```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
    ze.init(api_key="sk_ze_...")
    ```
  </Accordion>

  <Accordion title="Dataset not found" icon="magnifying-glass">
    Confirm dataset name and project context (API key/org mapping). Pull uses the project resolved from your API credentials.
  </Accordion>
</AccordionGroup>
