一个强大的AI驱动的数据分析工具,结合了Streamlit、Ollama(Llama3)和模型上下文协议(MCP),提供了一个交互式的对话界面来探索和分析CSV数据集。
观看YouTube上的演示视频,了解Pocket Data Scientist的实际操作:YouTube演示
llama3:8b)克隆仓库
git clone https://github.com/Real4LA/pocket-data-scientist
安装依赖
pip install -r requirements.txt
安装并启动Ollama
ollama pull llama3:8b
启动应用程序
streamlit run app/chat_app.py
打开浏览器
http://localhost:8501 自动打开上传CSV文件
探索你的数据
提问
这个数据集是关于什么的?
显示所有列
汇总统计是什么?
最高薪的工作是什么?
按职位名称计算平均工资是多少?
最常见的城市有哪些?
年龄与薪水之间有什么关系?
绘制相关性矩阵
可视化年龄与薪水的关系
创建薪水分布的直方图
显示职位计数的条形图
最相关的两个特征是什么?
影响薪水提升的最大因素是什么?
检测薪水中的异常值
系统提供了以下分析工具:
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应用
├── agents/
│ └── agent.py # 带有工具选择逻辑的AI代理
├── core/
│ ├── dataset_inspector.py # 核心数据分析引擎
│ ├── server_mcp.py # 通过MCP暴露工具的服务器
│ └── tool_client.py # 用于工具通信的MCP客户端
├── data/
│ └── data.csv # 示例数据集
├── plots/ # 生成的可视化
└── uploads/ # 用户上传的数据集
用户输入:用户在Streamlit界面中键入一个问题
代理处理:ToolAwareAgent 分析问题并决定调用哪些工具
工具执行:通过MCP(模型上下文协议)通过 ToolClient 执行工具
数据分析:DatasetInspector 使用pandas执行实际的数据分析
响应生成:代理将工具结果格式化为自然语言响应
显示:结果在UI中显示,包括图表、表格和文本响应
项目使用FastMCP通过模型上下文协议暴露数据分析工具:
core/server_mcp.pyToolClient 通过stdio与MCP服务器通信编辑 app/chat_app.py 更改默认模型:
DEFAULT_MODEL = "llama3:8b" # 更改为你喜欢的模型
OLLAMA_ENDPOINT = "http://localhost:11434/api/chat"
任何支持聊天完成的Ollama模型。推荐:
llama3:8b(默认)llama3.2:3b(更快,但准确性较低)llama3:70b(更慢,但准确性更高)├── agents/
│ ├── __init__.py
│ └── agent.py # 带有提示工程的AI代理
├── app/
│ ├── __init__.py
│ └── chat_app.py # Streamlit网络应用
├── core/
│ ├── __init__.py
│ ├── dataset_inspector.py # 数据分析引擎
│ ├── server_m