Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kernelmachine/utah
Dataframe structure and operations in Rust
https://github.com/kernelmachine/utah
Last synced: 7 days ago
JSON representation
Dataframe structure and operations in Rust
- Host: GitHub
- URL: https://github.com/kernelmachine/utah
- Owner: kernelmachine
- License: mit
- Created: 2016-09-19T01:44:52.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-07-24T18:22:54.000Z (over 6 years ago)
- Last Synced: 2024-04-22T13:31:52.282Z (7 months ago)
- Language: Rust
- Homepage:
- Size: 4.7 MB
- Stars: 142
- Watchers: 16
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-cn - kernelmachine/utah
- awesome-rust - kernelmachine/utah
- awesome-rust - kernelmachine/utah
- awesome-rust-cn - kernelmachine/utah
- awesome-rust-zh - kernelmachine/utah - 用 Rust 写的,数据帧结构及操作 (库 / 数据处理)
- awesome-rust - kernelmachine/utah - Dataframe structure and operations (Libraries / Data processing)
- awesome-rust - kernelmachine/utah
- awesome-starred - kernelmachine/utah - Dataframe structure and operations in Rust (others)
- fucking-awesome-rust - kernelmachine/utah - Dataframe structure and operations (Libraries / Data processing)
- fucking-awesome-rust - kernelmachine/utah - Dataframe structure and operations (Libraries / Data processing)
README
# Utah
[![Build Status](https://travis-ci.org/pegasos1/utah.svg?branch=master)](https://travis-ci.org/pegasos1/utah)
[**Utah**](http://crates.io/crates/utah) is a Rust crate backed by [ndarray](https://github.com/bluss/rust-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](http://kernelmachine.github.io/2016/12/28/Introducing-Utah/) 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
```
## DocumentationCheck out [docs.rs](http://docs.rs/utah) for latest documentation.
## Examples
#### Create dataframes on the fly
```rust
use utah::prelude::*;
let df = DataFrame = 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::new(a).index(&["1", "2"]);
```#### Transform the dataframe
```rust
use utah::prelude::*;
let df: DataFrame = DataFrame::read_csv("test.csv").unwrap();
let res : DataFrame = df.remove(&["a", "c"], UtahAxis::Column).as_df()?;
```#### Chain operations
```rust
use utah::prelude::*;
let df: DataFrame = DataFrame::read_csv("test.csv").unwrap();
let res : DataFrame = df.df_iter(UtahAxis::Row)
.remove(&["1"])
.select(&["2"])
.append("8", new_data.view())
.sumdf()
.as_df()?;
```#### Support mixed types
```rust
use utah::prelude::*;
let a = DataFrame = 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 = DataFrame::read_csv("test.csv").unwrap();
let res : DataFrame = a.concat(&b).as_df()?;
```