如何用 Jupyter AI 做数据分析

data-sciencebeginner3 分钟阅读2026/6/4

我花了一周调试Pandas查询,直到Jupyter AI在10分钟内修复了我的工作流

以下是最终压垮我的场景:我试图连接三个列名不一致的数据框,对日期时间列应用自定义函数,然后透视结果——而我的咖啡早已凉透。我敲了太多次df.merge(),键盘都在哭泣。直到我发现Jupyter AI,从此再没写过一行原生Pandas代码。但这并非魔法,而是一把有锋利边缘的工具,我将为你展示它究竟在何处划伤。

发现它之前真正崩溃的时刻

当时我正在处理一个包含47列的客户流失数据集。每次需要按日期范围筛选时,我都会忘记pd.to_datetime()需要infer_datetime_format=True还是format='%Y-%m-%d'。我谷歌搜索、从Stack Overflow复制粘贴,然后日期格式又出错了——因为CSV用的是斜杠而非短横线。这时我意识到:我不是糟糕的数据科学家,我只是记不住Pandas语法。

Jupyter AI不会替代你的大脑——它替代的是你的浏览器标签页。以下是我的配置方法和真正有效的实践。

安装Jupyter AI:本应两分钟却花了十五分钟

首先,诚实的安装版本。你需要Python 3.8+和Jupyter Lab 3.5+。运行:

pip install jupyter-ai

然后启用扩展:

jupyter labextension install @jupyter-ai/core

等等——如果你用的是Jupyter Lab 4.x,这可能会失败。我为此付出了代价。对于Lab 4,你需要:

pip install jupyter-ai>=2.0

并且完全跳过labextension命令——它已内建。版本不匹配让我花了20分钟调试。安装完成后,重启Jupyter Lab,在左侧边栏寻找AI图标。如果看到机器人脸,说明成功了。如果没有,用jupyter --version检查Jupyter版本。

配置模型:为什么GPT-4是唯一真正选项

Jupyter AI支持多种模型(Anthropic、Cohere、Hugging Face),但我都测试过。事实是:对于数据科学任务,只有GPT-4能持续输出可运行代码。Claude 3很接近,但有时会幻觉出列名。像Llama 2这样的本地模型实时使用太慢。

在Jupyter AI设置面板(AI侧边栏的齿轮图标)中设置API密钥。粘贴你的OpenAI密钥。除非部署,否则不要使用环境变量——设置面板会跨会话持久保存。

这是我的第一个实际测试。我在聊天面板中输入:

"加载CSV文件'sales_2023.csv'并显示前5行,所有列可见"

Jupyter AI回复:

import pandas as pd
pd.set_option('display.max_columns', None)
df = pd.read_csv('sales_2023.csv')
df.head()

它成功了。但第一个缺陷是:它没有检查文件是否存在。当我运行它时,文件在子目录中,结果崩溃了。我学会了在提示中始终指定路径:"从'data/raw/'文件夹加载。"

真实案例:清理混乱数据集

让我展示实际用途。我有一个数据集,日期存储为字符串,同一列中既有"2023-01-15 14:30:00"又有"15/01/2023"。简直是噩梦。我输入:

"将'timestamp'列转换为datetime。有些值使用YYYY-MM-DD格式,其他使用DD/MM/YYYY格式。通过设置为NaT来处理错误。"

Jupyter AI生成:

df['timestamp'] = pd.to_datetime(df['timestamp'], format='mixed', errors='coerce')

那个format='mixed'参数是我从未用过的。它完美运行。但随后它没有处理时区感知的时间戳——输出是朴素的。我不得不补充:"现在让所有时间戳都成为UTC时区感知。"它追加了.dt.tz_localize('UTC')

教训:Jupyter AI是迭代式的。你不会一次得到完美代码。把它当作需要逐步指导的初级开发者。

进阶:自定义函数与向量化

这是它真正强大的地方。我需要计算自定义窗口的加权移动平均。我输入:

"创建一个计算指数加权移动平均的函数,窗口跨度为12期,然后按'store_id'分组应用于'revenue'列"

它返回:

def calc_ewma(group):
    return group['revenue'].ewm(span=12, adjust=False).mean()

df['ewma_revenue'] = df.groupby('store_id').apply(calc_ewma).reset_index(level=0, drop=True)

这可行,但在200万行数据上很慢。我问:"能向量化吗?"它建议使用transform

df['ewma_revenue'] = df.groupby('store_id')['revenue'].transform(lambda x: x.ewm(span=12, adjust=False).mean())

这使运行时间从45秒降至3秒。这种优化通常需要我花30分钟谷歌搜索。

你会遇到的隐藏缺陷

  1. 它会忘记你的数据框结构。 5个提示后,它可能生成引用不存在列的代码。始终在初始提示中包含df.columns.tolist()

  2. 聊天面板内存泄漏。 大约50次交互后,AI变得无响应。我会重启内核并清除聊天。保持提示简短专注。

  3. 无法处理大数据集。 我尝试让它"优化这个1000万行查询"。它生成的代码在样本上可行,但完整数据集上崩溃。使用.sample(1000)进行测试。

  4. 绘图效果参差不齐。 我要求"seaborn热力图显示相关矩阵",它却导入了matplotlib。明确指定库:"使用plotly创建交互式散点图。"

真正有效的可视化

对于绘图,我发现最成功的方法是明确提示:

"创建一个plotly express折线图。X轴为'date',Y轴为'sales'。按'region'着色。添加标题'Monthly Sales by Region'。使其交互式,悬停数据显示'product_count'。"

它生成:

import plotly.express as px
fig = px.line(df, x='date', y='sales', color='region', 
              title='Monthly Sales by Region', hover_data=['product_count'])
fig.show()

专业提示:始终明确要求hover_data。默认值非常有限。

最终坚持下来的工作流

这是我现在的常规步骤。打开新笔记本,在第一个单元格中运行%load_ext jupyter_ai(虽然现在是自动的),然后在AI面板中输入:

"我有一个包含以下列的数据框:[粘贴df.columns]。目标:[描述任务]。约束条件:[内存限制,时间限制]。输出:[单个代码单元格或解释]。"

这种结构化提示在80%的情况下能得到可运行代码。另外20%?我自己调试,或将任务分解为更小的提示。

你的下一个五分钟

不要试图一次性学会所有Jupyter AI。相反,立即执行以下操作:

  1. 安装它(使用上面的Lab 4命令)。
  2. 打开任何你手头混乱的CSV文件。
  3. 要求它"修复所有日期列转换为datetime并处理错误。"
  4. 然后要求"用中位数填充数值列中的缺失值。"
  5. 再要求"使用plotly创建相关热力图。"

你将在10分钟内得到带有可视化的干净数据集。这就是承诺。但请记住:它是工具,不是替代品。当你盲目信任其输出时,它就会生成一个将字符串而非数字求和的透视表。我经历过。我的咖啡仍然凉着。

相关 Agent

H

Hugging Face

A platform for sharing, training, and deploying machine learning models and datasets.

了解更多 →