1个不稳定版本
使用旧的Rust 2015
0.1.2 | 2016年12月28日 |
---|---|
0.1.1 |
|
0.1.0 |
|
#1640 in 数据结构
165KB
4K SLoC
Utah
Utah是一个由ndarray支持的Rust包,用于类型感知的表格数据处理,具有表达性、函数式接口。
注意:此包在稳定版上运行。但是,如果您正在处理包含f64
数据和String
列/索引标签的dataframe,请使用nightly版,因为您将获得特殊化的性能优势。
API目前正在开发中,可能会发生变化。
有关此包的机制深入介绍以及未来目标,请阅读这篇博客文章:占位符
安装
将以下内容添加到您的Cargo.toml文件中
utah="0.0.1"
extern crate utah
在lib.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