3个版本
0.0.2 | 2023年11月10日 |
---|---|
0.0.1 | 2023年11月9日 |
0.0.0 | 2023年11月7日 |
#382 在 机器学习
35KB
351 行
Polars AI 📊
Polars AI 是一款开创性的工具,具有命令行界面(CLI)和复杂的crate库。它使您能够通过AI进行数据分析,与Polars DataFrames进行对话式交互。Polars AI 无缝集成了 OpenAI 的 GPT-3.5 Turbo 的强大功能,从而增强并优化数据探索和操作任务。
Polars AI 允许您
- 使用纯文本查询与您的 Polars DataFrames 进行聊天。
- 执行数据分析任务,如过滤、通过AI生成的Rust代码进行聚合。
- 使用图表和图形可视化数据(即将推出)。
目录 📚
安装 🚀
从源安装
要使用 Polars AI,您需要遵循以下安装步骤
-
通过在 Rust 安装 上找到的说明安装 Rust(如果尚未安装)。
-
在 GitHub 上分叉仓库
- 单击 GitHub 仓库页面右上角的“分叉”按钮。
-
将 Polars AI 仓库克隆到您的本地计算机
$ git clone https://github.com/yourusername/polars-ai.git
-
使用 Rust 的包管理器 Cargo 构建项目
$ cd polars-ai $ cargo build --release
-
设置 OpenAI API 密钥
$ export OPENAI_API_KEY=sk-
-
运行 CLI
$ ./target/release/polars-ai help
使用 Cargo 安装
您还可以使用 Cargo,Rust 包管理器安装 Polars AI
-
使用 Rust 的包管理器 Cargo 构建项目
$ cargo install polars-ai
-
设置 OpenAI API 密钥
$ export OPENAI_API_KEY=sk-
-
运行 CLI
$ polars-ai help
入门 🏁
在开始之前,请确保您有一个想要分析和交互的 Polars DataFrame。Polars AI 与 Polars DataFrames 一起工作,因此请确保您已加载数据。
使用 🧑💻
与您的 DataFrame 聊天
使用 Polars AI,您可以使用纯文本查询与您的 DataFrame 进行聊天。只需在 CLI 提示时输入您的问题或查询即可。例如
$ export OPENAI_API_KEY=sk-
$ polars-ai input -f examples/datasets/flights.csv show
📊 DataFrame:
shape: (18, 7)
┌────────────┬───────────┬─────────┬─────────────────┬───────────────┬──────────┬──────────┐
│ DayofMonth ┆ DayOfWeek ┆ Carrier ┆ OriginAirportID ┆ DestAirportID ┆ DepDelay ┆ ArrDelay │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ str ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
╞════════════╪═══════════╪═════════╪═════════════════╪═══════════════╪══════════╪══════════╡
│ 19 ┆ 5 ┆ DL ┆ 11433 ┆ 13303 ┆ -3 ┆ 1 │
│ 19 ┆ 5 ┆ DL ┆ 14869 ┆ 12478 ┆ 0 ┆ -8 │
│ 19 ┆ 5 ┆ DL ┆ 14057 ┆ 14869 ┆ -4 ┆ -15 │
│ 19 ┆ 5 ┆ DL ┆ 15016 ┆ 11433 ┆ 28 ┆ 24 │
│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │
│ 19 ┆ 5 ┆ DL ┆ 10397 ┆ 12451 ┆ 71 ┆ null │
│ 19 ┆ 5 ┆ DL ┆ 12451 ┆ 10397 ┆ 75 ┆ null │
│ 19 ┆ 5 ┆ DL ┆ 12953 ┆ 10397 ┆ -1 ┆ null │
│ 19 ┆ 5 ┆ DL ┆ 11433 ┆ 12953 ┆ -3 ┆ null │
└────────────┴───────────┴─────────┴─────────────────┴───────────────┴──────────┴──────────┘
$ polars-ai input -f examples/datasets/flights.csv ask -q 'What is the average of the first column?'
🤖 AI Response:
use polars::prelude::*;
fn analyze_data(dfs: Vec<DataFrame>) -> Result<DataFrame> {
let df = &dfs[0];
let avg_first_column = df
.select(&[col("DayofMonth")])
.expect("Column 'DayofMonth' must exist")
.mean()
.unwrap()
.select(&[col("mean")])
.unwrap();
let top_carriers = df
.groupby(&[col("Carrier")])
.expect("Column 'Carrier' must exist")
.mean()
.unwrap()
.sort(&[col("mean")], false)
.expect("Column 'mean' must exist")
.head(Some(5))
.select(&[col("Carrier")])
.unwrap();
let result_df = df
.join(&top_carriers, &[col("Carrier")], &[col("Carrier")], JoinType::Inner)
.expect("Column 'Carrier' must exist")
.sort(&[col("DayofMonth")], false)
.expect("Column 'DayofMonth' must exist")
.head(Some(5));
let final_result = result_df
.select(&[col("Carrier"), col("DayofMonth")])
.unwrap();
Ok(final_result)
}
let result = analyze_data(dfs);
println!("{}", result);
现在,基于上述查询,您可以运行Rust代码。
数据分析工作流程
生成的Rust代码遵循结构化的数据分析工作流程
- 准备:如有必要,预处理和清理数据。
- 处理:对数据进行分析(例如,分组、过滤、聚合)。
- 分析:执行分析。
- 输出:以各种格式返回结果。
您可以根据需要修改生成的代码来自定义分析。
示例 💡
请参考示例文件夹,使用Polars AI分析您的数据。Polars AI将生成Rust代码以执行数据探索性分析。
贡献 🤝
我们欢迎为Polars AI做出贡献!如果您想为此项目做出贡献,请按照以下步骤操作
-
在 GitHub 上分叉仓库
- 单击 GitHub 仓库页面右上角的“分叉”按钮。
-
为您的功能或错误修复创建一个新的分支
-
使用以下Git命令创建一个新的分支
$ git checkout -b feature-or-bugfix-branch
-
-
进行更改并提交
-
编辑本地仓库中的文件,并使用以下Git命令提交您的更改
$ git add . $ git commit -m "Your commit message here"
-
-
创建一个带有更改描述的pull request
-
将您的分支推送到GitHub上的分叉仓库,然后从那里创建pull request。
$ git push origin feature-or-bugfix-branch
-
访问您的GitHub分叉仓库,您将看到一个创建刚刚推送到分支的pull request的选项。
-
许可 📜
本项目采用MIT许可证 - 请参阅LICENSE文件以获取详细信息。
依赖关系
~20–34MB
~570K SLoC