#数据分析 #csv #灵活 #数据集 #pandas #数据框 #

combee

Combee 是一个受 pandas (python) 启发的纯 Rust 编写的灵活数据分析库。

7 个版本 (破坏性更新)

0.6.0 2023 年 8 月 25 日
0.5.0 2023 年 8 月 24 日
0.4.0 2023 年 8 月 24 日
0.3.0 2023 年 8 月 21 日
0.1.1 2023 年 8 月 17 日

编码 中排名第 1846

Download history 1/week @ 2024-03-09 4/week @ 2024-03-30 1/week @ 2024-04-06

每月下载量 56

自定义许可证

33KB
549

Combee

Combee 是一个受 pandas (python) 启发的纯 Rust 编写的强类型数据分析库。

安装

在 Rust 项目目录中运行

cargo add combee

示例

  1. 查看 notebooks/analysis.ipynb 中的笔记本,使用 evcxr_jupyter 检查数据集分析的示例。

  2. 以下是一个加载 CSV 文件、过滤数据集并对每一行应用函数的示例

(dataset.csv)

name,age
Daniel,26
Sergio,30
Leticia,22

(main.rs)

use serde::{Serialize, Deserialize};
use combee::{read_csv, dataframe::DataFrame};

#[derive(Clone, Deserialize, Serialize)]
struct Data {
    name: String,
    age: u32
}

let df = read_csv::<Data>(String::from("../tests/fixtures/basic.csv")).unwrap();
let df_filtered: DataFrame<Data> = df.filter(|row| row.age < 27);
let df_message: DataFrame<String> = df_filtered.apply(|row| format!("Hello {} with {} years!", row.name, row.age));
let messages = df_message.take(2);

println!("{}", messages[0]);
println!("{}", messages[1]);
  1. 分组聚合的示例

(main.rs)

use serde::{Serialize, Deserialize};
use combee::{read_csv, functions::{mean, sum, count, all}};

#[derive(Clone, Deserialize, Serialize)]
struct Data {
    name: String,
    age: u32
}

fn main() {
    let df = read_csv::<Data>(String::from("dataset.csv")).unwrap();

    let stats = df.groupby(all).agg(|_, g|
        (count(g), mean(g, |x| x.age), sum(g, |x| x.age))
    ).head(1);

    println("{:?}", stats);
}

致谢

Daniel Santana: 用爱制作 💗.
ali5h: 解析 parquet 行的代码 链接.

依赖项

~27MB
~657K SLoC