🧪 掌上数据科学家
一个强大的人工智能数据分析工具,结合了Streamlit、Ollama(Llama3)和模型上下文协议(MCP),为探索和分析CSV数据集提供了一个交互式对话界面。
🎥 演示
观看YouTube上的演示视频,了解Pocket Data Scientist的实际操作: YouTube演示
✨ 特性
🤖 AI驱动的分析
- 会话界面:用自然语言询问有关数据集的问题
- 智能刀具选择:AI会根据您的问题自动选择正确的分析工具
- 小样本学习:通过示例优化提示,以提高工具利用率
- 精确值报告:确保精确的数据报告,无需四舍五入或估计
📊 数据分析能力
- 数据集概述:获取有关数据集结构的全面信息
- 汇总统计:所有数字列的详细统计信息
- 列分析:探索具有最高值和分布的各个列
- 分组统计:分析按类别分组的数据
- 相关性分析:发现数值变量之间的关系
- 数据质量报告:识别缺失值、重复值和数据质量问题
📈 可视化
- 散布图:可视化两个变量之间的关系
- 条形图:显示类别分布
- 直方图:显示价值分布
- 相关热图:交互式相关矩阵可视化
- CSV数据查看器:在交互式表格中浏览整个数据集
🎨 用户界面
- 现代流线型UI:干净、直观的界面,带有侧边栏控件
- 选项卡式界面:聊天和数据查看器的单独选项卡
- 实时更新:查看生成的结果
- 工具使用跟踪:可展开部分显示所有工具调用和结果
🚀 快速开始
先决条件
- Python 3.8或更高版本
- 奥拉玛 在本地安装并运行
- Llama3型号已下载(默认值:
llama3:8b)
安装
- 克隆存储库
git clone https://github.com/Real4LA/pocket-data-scientist- 安装依赖项
pip install -r requirements.txt- 安装并启动Olama
- 下载自 奥拉玛 - 拉动Llama3型号:
ollama pull llama3:8b- 启动应用程序
streamlit run app/chat_app.py- 打开浏览器
- 应用程序将在以下时间自动打开 http://localhost:8501
📖 使用指南
入门指南
- 上传CSV文件
- 点击侧边栏中的“上传CSV文件” - 选择您的数据集文件 - 等待“已加载”确认
- 探索您的数据
- 使用 数据阅读器 选项卡浏览数据集 - 切换到 聊天 提问选项卡
- 提出问题
- 在底部的输入框中键入您的问题 - 示例: - “这个数据集是关于什么的?” - “显示摘要统计信息” - “薪水最高的工作是什么?” - “可视化年龄和工资之间的关系” - “绘制相关矩阵”
查询示例
基本信息
What is this dataset about?
Show me all columns
What are the summary statistics?分析问题
What is the highest paying job?
What is the average salary by job title?
What are the most common cities?
What is the relationship between age and salary?可视化
Plot correlation matrix
Visualize age vs salary
Create a histogram of salary distribution
Show a bar chart of job title counts高级分析
What are the top 2 correlated features?
What is the most contributing factor in salary elevation?
Detect outliers in salary🛠️ 可用工具
该系统提供以下分析工具:
数据探索
list_columns():获取列名、类型和数据集结构get_data_overview():全面的数据集概述(形状、内存、列类型)summary_stats():所有数字列的统计数据(平均值、标准值、最小值、最大值等)get_data_sample():从数据集中获取示例行
列分析
get_column_summary(column):特定栏目的详细分析
- 最高值和计数 - 数字统计(如适用) - 空百分比 - 唯一值百分比
统计分析
group_by_stats(group_by, column):按类别列分组的统计信息
- 每组平均值、标准差、最小值、最大值 - 每组计数
correlation_matrix():数值列之间的相关系数compare_columns(column1, column2):两列之间的详细比较
可视化
plot_column(column, kind, y):创建各种绘图类型
- kind='scatter' 随着 y:散点图(X vs Y) - kind='bar':类别计数柱状图 - kind='hist':分布直方图 - kind='auto':自动选择绘图类型
plot_correlation_matrix():相关矩阵的热图可视化
数据质量
detect_outliers(column, method):使用IQR或Z分数识别异常值data_quality_report():全面的数据质量评估
🏗️ 建筑
组件
dataset-inspector-mcp/
├── app/
│ └── chat_app.py # Streamlit UI application
├── agents/
│ └── agent.py # AI agent with tool selection logic
├── core/
│ ├── dataset_inspector.py # Core data analysis engine
│ ├── server_mcp.py # MCP server exposing tools
│ └── tool_client.py # MCP client for tool communication
├── data/
│ └── data.csv # Sample dataset
├── plots/ # Generated visualizations
└── uploads/ # User-uploaded datasets运作原理
- 用户输入:用户在Streamlit界面中键入问题
- 代理处理:The
ToolAwareAgent分析问题并决定调用哪些工具
- 工具执行:工具通过MCP(模型上下文协议)执行
ToolClient
- 数据分析:The
DatasetInspector使用pandas执行实际数据分析
- 响应生成:代理将工具结果格式化为自然语言响应
- 显示:结果显示在UI中,包括图表、表格和文本响应
MCP集成
该项目使用FastMCP通过模型上下文协议公开数据分析工具:
- 工具定义见
core/server_mcp.py - 这
ToolClient通过stdio与MCP服务器通信 - 这允许AI代理根据用户问题动态调用工具
⚙️ 配置
模型配置
编辑 app/chat_app.py 要更改默认模型,请执行以下操作:
DEFAULT_MODEL = "llama3:8b" # Change to your preferred model
OLLAMA_ENDPOINT = "http://localhost:11434/api/chat"支持的型号
任何支持聊天完成的Olama模型。推荐:
llama3:8b(默认)llama3.2:3b(更快,更不准确)llama3:70b(更慢,更准确)
📝 项目结构
├── agents/
│ ├── __init__.py
│ └── agent.py # AI agent with prompt engineering
├── app/
│ ├── __init__.py
│ └── chat_app.py # Streamlit web application
├── core/
│ ├── __init__.py
│ ├── dataset_inspector.py # Data analysis engine
│ ├── server_mcp.py # MCP server
│ └── tool_client.py # MCP client
├── data/
│ └── data.csv # Sample dataset
├── plots/ # Generated visualizations
├── uploads/ # User uploads directory
├── local.json # MCP configuration
├── requirements.txt # Python dependencies
└── README.md # This file🔒 数据隐私
- 所有数据处理都在您的计算机上本地进行
- 没有数据发送到外部服务器
- 上传的文件存储在
uploads/目录 - 生成的图保存在
plots/目录
📚 依赖项
- 流明:Web应用程序框架
- 熊猫:数据操作和分析
- matplotlib:绘图库
- 海生:统计可视化
- fastmcp:模型上下文协议服务器
- 请求::Ollama API的HTTP客户端
- 内置 溪流
- 由...驱动 奥拉玛 Llama3
- 用途 FastMCP 用于MCP集成
📞 支持
对于问题、疑问或贡献,请在存储库上打开问题。
______________________________________________________________________
数据分析快乐! 🎉
