告别加班!用 Gemini 3.1 Flash 和几行 Python,10秒清洗上万条脏数据

周五晚上 7 点,你正准备合上电脑开启周末,老板突然在群里发来一个 50MB 的 Excel 文件:“这里有上个月全渠道的客户反馈和线索,格式有点乱,你今晚加个班,把姓名、电话、地址和核心诉求提取出来,明早开会用。”

你点开文件一看,血压瞬间飙升:

有的写着 “张三 138xxxx1234 寄到北京市朝阳区xxx”

有的写着 “衣服太小了退货!联系我老公李四,电话是139零零零零八八八八,地址上海浦东...”

还有的夹杂着颜文字、错别字,甚至地址和电话是倒着写的。

面对这种毫无规律的“脏数据”,传统的做法是什么?

小白会选择手动复制粘贴,复制到眼花缭乱;进阶一点的会去写复杂的 Excel 函数(FINDMIDVLOOKUP 嵌套到怀疑人生);程序员则会写一段长长的正则表达式(Regex),然后发现只要遇到一个不按套路出牌的特殊字符,整个脚本直接报错崩溃。

别慌,大人,时代变了。

今天,我将带你体验一次“降维打击”——借助 Gemini 3.1 Flash 的超长上下文与极速推理能力,任何人都能用“大白话+几行Python”,在秒级搞定上万条海量杂乱数据的结构化清洗。

---

痛点共鸣:传统数据清洗的“三座大山”

在数据分析和日常办公中,我们有 80% 的时间都花在了“洗数据”上。传统方案为什么让人头秃?

1. 规则永远赶不上变化:人类的输入习惯是随意的。你写了提取 11 位数字的正则,客户偏偏用中文写了“幺三八”;你按省市区切分地址,客户直接填了个“魔都张江”。

2. 学习门槛极高:精通正则表达式和高级 Excel 函数,需要极高的学习成本。对于运营、HR 或初级数据分析师来说,这简直是天书。

3. 处理效率低下:即便你写出了完美的清洗脚本,在面对动辄十万级的数据量时,传统单线程脚本的运行速度也常常让人等到睡着。

我们需要一个能听懂人话、容错率极高、速度极快的大脑来做这件事。这就是今天的主角——Gemini 3.1 Flash

---

降维打击:Gemini 3.1 Flash,专治各种“数据不服”

为什么在众多 AI 模型中,我强烈推荐用 Gemini 3.1 Flash 来做数据清洗?

* 快(极速响应):Flash 系列天生就是为高并发、低延迟任务设计的。处理单条文本的结构化提取,几乎在眨眼间完成。

* 省(成本极低):它的 Token 价格极其便宜,清洗上万条数据,成本可能只需要几分钱到几毛钱,完全可以当做“日用品”来消耗。

* 聪明(超强泛化):它具备强大的自然语言理解能力,无论文本多么混乱、错别字多少,它都能精准捕捉到你想要的字段。

极具反差的 Before/After

让我们先来看一个直观的对比。

❌ Before(让人崩溃的脏数据):
“那个啥,我是王建国,上次买的键盘轴体坏了,给我换个新的!发顺丰哈,地址是广东省深圳市南山区粤海街道科技园xxx号,电话135-八八九九-0011。对了,周末别派件。”
✅ After(AI 清洗后的标准 JSON/表格):
{

"姓名": "王建国",

"电话": "13588990011",

"省份": "广东省",

"城市": "深圳市",

"区县": "南山区",

"详细地址": "粤海街道科技园xxx号",

"核心诉求": "换货(键盘轴体损坏)",

"备注": "发顺丰,周末不派件"

}

小白也能用的“保姆级” Prompt 模板

如果你不懂代码,完全可以直接在 AI 对话框里使用以下这段 Prompt(提示词),批量丢给它文本:

角色设定:你是一个专业的数据清洗专家,擅长从混乱的自然语言中提取结构化信息。
任务目标:请从我提供的客户留言中,提取以下关键字段:姓名、电话(需转换为纯数字)、省份、城市、区县、详细地址、核心诉求、备注。
输出要求
1. 严格以 JSON 格式输出,不要包含任何多余的解释性废话(如“好的,这就为您处理”)。
2. 如果某个字段在文本中缺失,请填入 "null"。

>

输入文本:[粘贴你的脏数据]

就这么简单。AI 会瞬间理解你的意图,并输出整齐划一的数据。

---

高阶实战:附源码!10秒清洗一万条数据的“工业级”方案

对于开发者或需要处理海量数据的打工人来说,手动复制粘贴显然不够优雅。

接下来,我将提供一套开箱即用的 Python 脚本。它会自动读取本地的 CSV/Excel 文件,通过并发请求将数据投喂给 Gemini 3.1 Flash,最后将干净的数据存盘。

核心 Python 代码(请直接 Ctrl+C/V)

环境准备:确保你安装了 openaipandas 库(pip install openai pandas)。注意,虽然调用的是 Gemini,但由于我们将使用兼容 OpenAI 格式的 API 平台,所以用 openai 库即可。
import pandas as pd

import json

from openai import OpenAI

import concurrent.futures

================= 核心配置区 =================

填入你在 8848AI 平台获取的 API Key

API_KEY = "sk-你的API_KEY"

8848AI 的接口地址,国内直连免魔法

BASE_URL = "https://api.884819.xyz/v1"

指定模型名称,严格使用 Gemini 3.1 Flash

MODEL_NAME = "Gemini 3.1 Flash"

实例化客户端

client = OpenAI(api_key=API_KEY, base_url=BASE_URL)

==============================================

def clean_data_with_ai(raw_text):

"""调用 Gemini 3.1 Flash 进行单条数据清洗"""

system_prompt = """

你是一个数据清洗器。请从用户输入的文本中提取:姓名、电话(纯数字)、省、市、区、详细地址、诉求。

必须严格输出合法的 JSON 格式,不要任何 Markdown 标记(如

json),不要多余废话。

缺失字段用 "null" 表示。

"""

try:

response = client.chat.completions.create(

model=MODEL_NAME,

messages=[

{"role": "system", "content": system_prompt},

{"role": "user", "content": raw_text}

],

temperature=0.1, # 降低温度,保证输出的稳定性

)

# 获取返回内容并解析 JSON

result_text = response.choices[0].message.content.strip()

return json.loads(result_text)

except Exception as e:

print(f"处理失败: {raw_text[:10]}... 错误: {e}")

return None

def batch_process(input_csv, output_csv):

"""多线程批量处理"""

# 读取脏数据(假设脏数据在 'raw_text' 列)

df = pd.read_csv(input_csv)

raw_texts = df['raw_text'].tolist()

results = []

print(f"开始清洗,共 {len(raw_texts)} 条数据...")

# 使用线程池加速处理,设置 max_workers 控制并发量

with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:

# map 会保持输入输出的顺序

processed_data = list(executor.map(clean_data_with_ai, raw_texts))

for data in processed_data:

if data:

results.append(data)

else:

# 失败的记录留空或打标记

results.append({"姓名":"error", "电话":"error"})

# 将清洗后的 JSON 列表转换为 DataFrame 并保存

result_df = pd.DataFrame(results)

final_df = pd.concat([df, result_df], axis=1)

final_df.to_csv(output_csv, index=False, encoding='utf-8-sig')

print(f"清洗完成!已保存至 {output_csv}")

运行脚本

if __name__ == "__main__":

# 请确保同目录下有一个 input.csv 文件,包含 'raw_text' 列

# batch_process("input.csv", "output_csv")

print("代码准备就绪,请修改文件路径后运行。")

``

降维打击的直观对比

| 维度 | 人工处理 | 传统 Python 正则 | Gemini 3.1 Flash + 并发 | | :--- | :--- | :--- | :--- | | 耗时(1万条) | 约 3 天(头晕眼花) | 半天写代码 + 运行几分钟 | 不到 10 秒 | | 准确率 | 易疲劳出错 | 遇到特殊格式直接报错 | 99% 以上,极高容错 | | 成本 | 几百元人工费 | 程序员时薪 | 几分钱 API 费用 |

---

避坑指南:保证 100% 成功率的 3 个隐藏技巧

代码虽然拿到了,但在实际生产环境中,想要让 AI 乖乖听话,还需要注意以下三个细节:

1. 强制 JSON 格式输出:AI 默认是个“话痨”,喜欢在结果前后加“好的,这是您要的格式”。在 System Prompt 中加入 不要任何 Markdown 标记,不要多余废话,并将 temperature(温度值)调低到 0.1,可以最大程度限制它的发散思维,保证程序在 json.loads() 时不报错。

2. 异常捕获机制(Try-Except):网络波动或极个别极其诡异的文本可能导致某次请求失败。代码中必须加上 try-except 块,即使一条失败了,也不会导致整个上万条的清洗任务中断。

3. 控制并发量:在上面的代码中,max_workers=10 是关键。不要一上来就开 100 个线程,否则极容易触发 API 的速率限制(Rate Limit)。循序渐进,找到最适合的并发甜点。

---

解决网络与支付的“最后一公里”

看到这里,很多同学可能已经打开电脑准备跑代码了。但肯定有人会问:

“博主,国内直连调不通 Google 的 API 怎么办?没有海外双币信用卡怎么绑卡?”

别因为网络和账号问题耽误了下班时间!在这个效率至上的时代,工具的获取门槛越低越好。这里给大家推荐一个我一直在用的国内聚合 API 开发者平台:[8848AI (api.884819.xyz)](https://api.884819.xyz)

它完美解决了国内开发者的痛点:

1. 极简注册,开箱即用:不需要繁琐的邮箱验证,用户名+密码即可注册。平台内置了 AI 对话功能,注册后直接就能在网页上测试 Prompt。

2. 零门槛,送福利注册即送 5 元体验额度,足够你把今天这篇文章里的代码跑上几十遍。没有月租,没有订阅套路,完全按量付费,用多少充多少。

3. 国内网络直连:无需任何魔法配置,在上面的 Python 代码中,你只需要把 API 接口地址修改为 https://api.884819.xyz/v1`,填入生成的 Key 就能直接跑通。

4. 模型矩阵全覆盖:不仅有今天演示的极速 Gemini 3.1 Flash,还有旗舰级的 Claude Opus 4.6Gemini 3.1 Pro 等顶尖模型。

5. 国产开源全免费:最良心的是,平台上接入的国产顶尖模型如 Deepseek R1/V3、通义千问 Qwen3、Kimi K2.5、GLM-5完全免费调用!

你只需要花 30 秒在 [api.884819.xyz](https://api.884819.xyz) 注册一个账号,把 API Key 填入我给你的代码里,就能瞬间拥有秒洗万条数据的超能力了!

---

写在最后

技术从来不应该成为门槛,而是普通人放大效率的杠杆。当你掌握了用 AI 代替人工进行枯燥的数据清洗时,你已经领先了身边 90% 还在死磕 Excel 公式的人。

今天,我们用 Gemini 3.1 Flash 把一团乱麻的数据洗成了干净的表格,完美完成了数据处理的“第一步”。

但是,拿到干净的数据只是开始。

拿着这些结构化数据,你能做的事情还有很多。下一期,我将教大家如何把这些清洗好的数据,再次喂给 8848AI 平台上的最强逻辑模型(比如 Claude Opus 4.6 或免费的 Deepseek R1),让它直接为你生成一份带有代码、能直接渲染出精美图表(柱状图、饼图)、洞察深刻的《商业数据分析报告》!

关注我,我们下期见!让你在老板面前的汇报,永远比别人惊艳一步。

* 本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI教程 #数据清洗 #Gemini #Python实战 #人工智能 #8848AI #AI学习 #Prompt技巧