#csv #column #pandas #safe #dataframe #python #dataset

nightly koala

Rust 中的 pandas 实现

6 个版本

0.1.5 2020 年 6 月 29 日
0.1.4 2020 年 6 月 27 日

#4 in #pandas

每月 41 次下载

MIT/Apache

22KB
423 代码行,不包括注释

考拉

该库是什么?

Python 的 pandas 在 Rust 中实现,以实现快速、类型安全的编程。

可用函数和属性

  • CSV

    .read_csv(path: &str) -> CSV

    从给定路径读取文件并返回 CSV 结构体

          let mut content = String::new();
          let csv : CSV = dataframe::df::read_csv("test.csv", &mut content); // CSV { headers, values, matrix }
    

    .get_df() -> DataFrame

    从 CSV 结构体返回 DataFrame

           let mut df = csv.get_df(); // DataFrame { columns, dataset, values }
    
  • DataFrame

    .columns -> Vec<&str>

    返回包含列名的字符串数组

           df.columns; // ["name","age"]
    

    .dataset -> Vec<Vec<&str>>

    返回数据集矩阵

           df.dataset; // [["bob","30"]
                          ["richard", "25"]]
    

    .values -> Vec<Pair(&str, Vec<&str>)>

    返回包含列名和所有列值的对向量

           df.values; // [("name", ["bob", "richard"]), ("age", ["30", "25])]
    

    .max(column: &str) -> f64

    返回列中所有值中的最大值

           df.max("age"); // 30 as f64
    

    .max(column: &str) -> f64

    返回列中所有值中的最小值

           df.min("age"); // 25 as f64
    

    .mean(column: &str) -> f64

    返回列中所有值的平均值

           df.mean("age"); // 27.5 as f64
    

    .sum(column: &str) -> f64

    返回列中所有非 N/A 值的总和

           df.sum("age"); // 55 as f64
    

    [&str] -> Vec<&str>

    DataFrame 的字符串索引,返回给定列的所有值

           df["age"]; // ["30", "25"]
    

    [usize] -> Vec<&str>

    DataFrame 的 usize 索引,返回给定行以及所有列

           df[0]; // ["bob", "30"]
    

    .iloc(Vec<Range, Range>) -> Vec<Vec<&str>>

    返回给定范围的数据集矩阵切片

           df.iloc([0..2, 0..1].to_vec()); // [["richard"], ["bob"]]
    

    .is_na_col(column: &str) -> bool

    返回 DataFrame 中给定列是否有缺失值

           df.is_na_col("age"); // false
    

    .is_na() -> bool

    返回包含每个值缺失值布尔值的矩阵

           df.is_na(); // [[false, false], [false, false]]
    

    .push(value: Vec<&str>)

    返回包含每个值缺失值布尔值的矩阵

           df.push(["ann", "20"]);
           df.dataset; // [["richard", "30"], ["bob", "25"], ["ann", "20"]]
    

    .pop(value: Vec<&str>) -> Vec<&str>

    返回包含每个值缺失值布尔值的矩阵

          df.pop(); // ["ann", "20"]
          df.pop(); // ["bob", "25"]
          df.dataset; // [["richard", "30"]]
    

    .n_uniques(column: &str) -> usize

    返回包含每个值缺失值布尔值的矩阵

         df.n_uniques("age"); // 2 as usize
    

    .uniques(column: &str) -> Vec<&str>

    返回包含每个值缺失值布尔值的矩阵

        df.uniques("age"); // ["30", "25"]
    

    .apply(column: &str, function: for<'r> fn(&'r str) -> &'a str)

    将闭包函数应用于给定列的每个值

        fn in_my_twenties<'r>(age: &str) -> &'r str { "20" }   
        df.apply("age", in_my_twenties);
        df.dataset; // [["richard", "20"], ["bob", "20"]]
    

    .fillna(column: &str, value: &str)

    将给定的值分配给列中的每个 N/A 值

       df.fillna("age", df.mean("age")); // [["richard", "26"], ["bob", "26"]] given bob had no prior age
    

    .dtypes -> HashMap<&str, &str>

    返回每列的类型

      df.dtypes // {"age": "numeric", "name": "str" }
    

依赖项

~2.2–3MB
~54K SLoC