ruchy 4.2.1

A systems scripting language that transpiles to idiomatic Rust with extreme quality engineering
Documentation
// 08_dataframes.ruchy - Working with DataFrames for data analysis

fn main() {
    println("=== DataFrames ===\n")

    // Creating a DataFrame from CSV string
    let df = DataFrame::from_csv_string("name,age,city,salary
Alice,30,NYC,75000
Bob,25,SF,85000
Charlie,35,NYC,95000
Diana,28,LA,70000
Eve,32,NYC,80000")

    println("Original DataFrame:")
    println(df)

    // Filtering rows
    println("\n=== Filtering ===")
    let adults = df.filter(row => row.age >= 30)
    println("People aged 30+:")
    println(adults)

    // Selecting columns
    println("\n=== Column Selection ===")
    let names_ages = df.select(["name", "age"])
    println("Names and ages only:")
    println(names_ages)

    // Single column selection
    let names_only = df.select("name")
    println("\nNames only:")
    println(names_only)

    // Working with arrays for stats
    println("\n=== Array-based Statistics ===")
    let ages = [30, 25, 35, 28, 32]
    let salaries = [75000, 85000, 95000, 70000, 80000]

    println(f"Age sum: {ages.sum()}")
    println(f"Age min: {ages.min()}")
    println(f"Age max: {ages.max()}")
    println(f"Salary sum: {salaries.sum()}")

    // Pipeline operations on arrays
    println("\n=== Pipeline Operations ===")
    let high_salaries = salaries
        |> filter(s => s > 75000)
        |> map(s => s / 1000)

    println(f"High salaries (in thousands): {high_salaries}")

    // Combined filtering with multiple conditions
    println("\n=== Complex Filtering ===")
    let nyc_adults = df.filter(row => row.city == "NYC" && row.age >= 30)
    println("NYC residents aged 30+:")
    println(nyc_adults)

    // Data transformations
    println("\n=== Data Transformations ===")
    let names = ["Alice", "Bob", "Charlie", "Diana", "Eve"]
    let bonuses = salaries |> map(s => s * 0.1)
    println(f"Bonuses (10%): {bonuses}")

    // Summary statistics
    println("\n=== Summary ===")
    println(f"Total employees: {names.len()}")
    println(f"Total salary budget: ${salaries.sum()}")
    println(f"Lowest salary: ${salaries.min()}")
    println(f"Highest salary: ${salaries.max()}")

    // DataFrame from JSON
    println("\n=== DataFrame from JSON ===")
    let json_df = DataFrame::from_json("[{\"product\":\"A\",\"price\":100},{\"product\":\"B\",\"price\":200}]")
    println("From JSON:")
    println(json_df)

    println("\n=== DataFrame Operations Complete ===")
}