1个不稳定版本

使用旧的Rust 2015

0.1.2 2016年12月28日
0.1.1 2016年12月28日
0.1.0 2016年12月28日

#1640 in 数据结构

MIT许可协议

165KB
4K SLoC

Utah

Build Status

Utah是一个由ndarray支持的Rust包,用于类型感知的表格数据处理,具有表达性、函数式接口。

注意:此包在稳定版上运行。但是,如果您正在处理包含f64数据和String列/索引标签的dataframe,请使用nightly版,因为您将获得特殊化的性能优势。

API目前正在开发中,可能会发生变化。

有关此包的机制深入介绍以及未来目标,请阅读这篇博客文章:占位符

安装

将以下内容添加到您的Cargo.toml文件中

utah="0.0.1"

extern crate utahlib.rs中,然后您就可以开始了。

示例

动态创建dataframes

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"]);

转换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()?;

链式操作

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()?;

支持混合类型

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()?;

依赖项

~7.5MB
~127K SLoC