1 unstable release
Uses old Rust 2015
0.1.2 | Dec 28, 2016 |
---|---|
0.1.1 |
|
0.1.0 |
|
#1818 in Data structures
165KB
4K
SLoC
Utah
Utah is a Rust crate backed by ndarray for type-conscious, tabular data manipulation with an expressive, functional interface.
Note: This crate works on stable. However, if you are working with dataframes with f64
data and String
column/index labels, use nightly, because you will get the performance benefits of specialization.
API currently in development and subject to change.
For an in-depth introduction to the mechanics of this crate, as well as future goals, read this blog post: PLACEHOLDER
Install
Add the following to your Cargo.toml:
utah="0.0.1"
extern crate utah
in lib.rs
and you're good to go.
Examples
Create dataframes on the fly
use utah::prelude::*;
let df = DataFrame<f64, String> = dataframe!(
{
"a" => column!([2., 3., 2.]),
"b" => column!([2., NAN, 2.])
});
let a = arr2(&[[2.0, 7.0], [3.0, 4.0]]);
let df : Result<DataFrame<f64, String>> = DataFrame::new(a).index(&["1", "2"]);
Transform the dataframe
use utah::prelude::*;
let df: DataFrame<f64, String> = DataFrame::read_csv("test.csv")?;
let res : DataFrame<f64, String> = df.remove(&["a", "c"], UtahAxis::Column).as_df()?;
Chain operations
use utah::prelude::*;
let df: DataFrame<f64, String> = DataFrame::read_csv("test.csv").unwrap();
let res : DataFrame<f64, String> = df.df_iter(UtahAxis::Row)
.remove(&["1"])
.select(&["2"])
.append("8", new_data.view())
.sumdf()
.as_df()?;
Support mixed types
use utah::prelude::*;
let a = DataFrame<InnerType, OuterType> = dataframe!(
{
"name" => column!([InnerType::Str("Alice"),
InnerType::Str("Bob"),
InnerType::Str("Jane")]),
"data" => column!([InnerType::Float(2.0),
InnerType::Empty(),
InnerType::Float(3.0)])
});
let b: DataFrame<InnerType, OuterType> = DataFrame::read_csv("test.csv")?;
let res : DataFrame<InnerType, OuterType> = a.left_inner_join(&b).as_df()?;
Dependencies
~7.5MB
~127K SLoC