Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - kernelmachine/utah: Dataframe structure and operations in Rust
Dataframe structure and operations in Rust. Contribute to kernelmachine/utah development by creating an account on GitHub.
Visit SiteGitHub - kernelmachine/utah: Dataframe structure and operations in Rust
Dataframe structure and operations in Rust. Contribute to kernelmachine/utah development by creating an account on GitHub.
Powered by 0x5a.live 💗
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, 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.
Install
Add the following to your Cargo.toml
:
utah="0.1.2"
And add the following to your lib.rs
or main.rs
#[macro_use]
extern crate utah
Documentation
Check out docs.rs for latest documentation.
Examples
Create dataframes on the fly
use utah::prelude::*;
let df = DataFrame<f64> = dataframe!(
{
"a" => col!([2., 3., 2.]),
"b" => col!([2., NAN, 2.])
});
let a = arr2(&[[2.0, 7.0], [3.0, 4.0]]);
let df : Result<DataFrame<f64>> = DataFrame::new(a).index(&["1", "2"]);
Transform the dataframe
use utah::prelude::*;
let df: DataFrame<f64> = DataFrame::read_csv("test.csv").unwrap();
let res : DataFrame<f64> = df.remove(&["a", "c"], UtahAxis::Column).as_df()?;
Chain operations
use utah::prelude::*;
let df: DataFrame<f64> = DataFrame::read_csv("test.csv").unwrap();
let res : DataFrame<f64> = 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> = dataframe!(
{
"name" => col!([InnerType::Str("Alice"),
InnerType::Str("Bob"),
InnerType::Str("Jane")]),
"data" => col!([InnerType::Float(2.0),
InnerType::Empty(),
InnerType::Float(3.0)])
});
let b: DataFrame<InnerType> = DataFrame::read_csv("test.csv").unwrap();
let res : DataFrame<InnerType> = a.concat(&b).as_df()?;
Rust Resources
are all listed below.
Made with ❤️
to provide different kinds of informations and resources.