alimentar 0.2.8

Data Loading, Distribution and Tooling in Pure Rust
Documentation
# Transforms Pipeline (Examples 31-45)

This section covers data transformation operations.

## Examples 31-33: Column Operations

```rust
use alimentar::{Select, Drop as DropTransform, Rename, Transform};

// Select columns
let select = Select::new(vec!["id".to_string(), "value".to_string()]);
let result = select.apply(batch)?;

// Drop columns
let drop = DropTransform::new(vec!["name".to_string()]);
let result = drop.apply(batch)?;

// Rename columns
let rename = Rename::new(vec![("old_name".into(), "new_name".into())]);
let result = rename.apply(batch)?;
```

## Examples 34-35: Row Filtering

```rust
use alimentar::{Filter, Transform};

// Numeric filter
let filter = Filter::new("value > 100");
let result = filter.apply(batch)?;

// String filter
let filter = Filter::new("name LIKE 'item_%'");
let result = filter.apply(batch)?;
```

## Examples 36-37: Null Fill Strategies

```rust
use alimentar::{FillNull, FillStrategy, Transform};

// Fill with mean
let fill = FillNull::new("score", FillStrategy::Mean);
let result = fill.apply(batch)?;

// Fill with constant
let fill = FillNull::new("score", FillStrategy::Constant(0.0));
let result = fill.apply(batch)?;
```

## Examples 38-39: Normalization

```rust
use alimentar::{Normalize, NormStrategy, Transform};

// MinMax normalization [0, 1]
let norm = Normalize::new("value", NormStrategy::MinMax);
let result = norm.apply(batch)?;

// Z-score normalization (mean=0, std=1)
let norm = Normalize::new("value", NormStrategy::ZScore);
let result = norm.apply(batch)?;
```

## Examples 40-41: Sorting

```rust
use alimentar::{Sort, Transform};

// Sort ascending
let sort = Sort::new("value", true);
let result = sort.apply(batch)?;

// Sort descending
let sort = Sort::new("value", false);
let result = sort.apply(batch)?;
```

## Examples 42-44: Take, Skip, Unique

```rust
use alimentar::{Take, Skip, Unique, Transform};

// Take first N rows
let take = Take::new(100);
let result = take.apply(batch)?;

// Skip first N rows
let skip = Skip::new(10);
let result = skip.apply(batch)?;

// Remove duplicates
let unique = Unique::new(vec!["id".to_string()]);
let result = unique.apply(batch)?;
```

## Example 45: Transform Chain

```rust
use alimentar::{TransformChain, Select, Filter, Normalize, Transform};

let chain = TransformChain::new()
    .add(Select::new(vec!["id".into(), "value".into()]))
    .add(Filter::new("value > 0"))
    .add(Normalize::new("value", NormStrategy::MinMax));

let result = chain.apply(batch)?;
```

## Key Concepts

- **Immutable transforms**: Each transform returns new batch
- **Composability**: Chain transforms together
- **Type safety**: Schema validation at each step
- **Zero-copy where possible**: Arrow slice semantics