Axion
一个高性能的 Rust 数据处理库,提供类似 Pandas 的数据操作体验,专为大规模数据分析和并行计算而设计。
🖥️ 开发环境
硬件环境
- 处理器:
AMD R9 5900HX (x86_64) - 系统:
Ubuntu 22.04 LTS (WSL2)
软件环境
- Rust版本:
rustc 1.88.0-nightly - 包管理:
cargo 1.88.0-nightly - 代码检查:
clippy 0.1.87 - 版本控制:
Git
开发工具
- 编辑器:
VSCode 1.99.1 - 主要插件:
rust-analyzer v0.3.2370CodeLLDB v1.11.4
🚀 系统部署
1. Rust 环境安装
在 Linux/macOS 上安装
# 安装 Rust
|
# 重新加载环境变量
# 或者
# 验证安装
在 Windows 上安装
- 访问 https://rustup.rs/
- 下载并运行
rustup-init.exe - 按照安装向导完成安装
- 重启命令提示符或PowerShell
安装 nightly 版本(推荐)
# 安装 nightly 工具链
# 设置为默认版本
# 验证版本
2. VSCode 开发环境配置
安装 VSCode
安装必需插件
在 VSCode 中安装以下插件:
-
rust-analyzer (推荐)
扩展ID: rust-lang.rust-analyzer 功能: 代码补全、语法检查、重构等 -
CodeLLDB (调试支持)
扩展ID: vadimcn.vscode-lldb 功能: Rust 程序调试 -
Even Better TOML (可选)
扩展ID: tamasfe.even-better-toml 功能: Cargo.toml 文件支持
VSCode 配置
在项目根目录创建 .vscode/settings.json:
3. 开发工具安装
# 安装代码格式化工具
# 安装代码检查工具
# 验证工具安装
📦 使用说明
在项目中集成 Axion
1. 创建新项目
# 创建新的 Rust 项目
2. 添加依赖
在 Cargo.toml 文件中添加 Axion 依赖:
[]
= "0.1.0"
或使用命令行添加:
3. 导入和使用
在 src/main.rs 中:
use *;
4. 运行项目
# 编译并运行
# 运行测试
# 运行优化版本
示例:完整的数据分析流程
use *;
🛠️ 快速开始
创建 Series
use *;
// 从向量创建 Series
let s1 = new;
// 从数组创建 Series
let s2 = new;
// 包含空值的 Series
let s3 = new_from_options;
基本操作
// 获取长度
println!;
// 访问元素
if let Some = s1.get
// 迭代器
for value in s1.iter_valid
数学运算
// Series 间运算
let s1 = new;
let s2 = new;
let result = &s1 + &s2; // [5, 7, 9]
// 与标量运算
let scaled = &s1 * 2; // [2, 4, 6]
比较操作
let s = new;
// 与标量比较
let mask = s.gt.unwrap; // [false, false, false, true, true]
// 过滤数据
let filtered = s.filter;
聚合函数
let s = new;
println!; // Some(15.0)
println!; // Some(3.0)
println!; // Some(1.0)
println!; // Some(5.0)
空值处理
let s = new_from_options;
// 检查空值
let null_mask = s.is_null;
// 填充空值
let filled = s.fill_null;
// 只处理有效值
for value in s.iter_valid
字符串操作
let s = new;
// 字符串访问器
let lengths = s.str.str_len?; // 字符串长度
let upper = s.str.to_uppercase?; // 转大写
let contains = s.str.contains?; // 包含检查
函数式编程
let s = new;
// 映射操作
let doubled = s.apply;
// 并行处理
let processed = s.par_apply;
📊 DataFrame 支持
use *;
// 使用宏创建 DataFrame
let df = df!?;
// 选择列
let selected = df.select?;
// 过滤行
let age_col: & = df.downcast_column?;
let mask = age_col.gt?;
let filtered = df.filter?;
// 分组操作
let grouped = df.groupby?;
let summary = grouped.mean?;
// 连接操作
let joined = df1.inner_join?;
// 显示 DataFrame
println!;
CSV 文件操作
// 读取 CSV
let df = read_csv?;
// 带选项读取
let options = builder
.with_header
.skip_rows
.use_columns
.build;
let df = read_csv?;
// 写入 CSV
df.to_csv?;
排序
let mut s = new;
s.sort; // 升序排序
println!; // [Some(1), Some(1), Some(3), Some(4), Some(5)]
// DataFrame 排序
let sorted_df = df.sort?; // 年龄升序,工资降序
🧪 测试
运行测试套件:
# 运行特定模块测试
运行基准测试:
# 运行基准测试
🤝 贡献
欢迎贡献代码!请查看我们的贡献指南:
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启 Pull Request
开发建议
- 遵循 Rust 代码规范
- 为新功能添加测试用例
- 更新相关文档
- 运行
cargo clippy检查代码质量
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
📧 联系方式
- 项目地址: GitHub Repository
- 问题反馈: GitHub Issues
- 文档: 项目文档