Data-Analysis-Agent如何读懂你的数据?DataProfiler数据画像模块原理详解
【免费下载链接】Data-Analysis-Agent🚀你的私人数据分析助手。通过对话式交互,自动生成可视化报表与商业洞察,让数据决策变得像聊天一样简单。 🚀 Your personal data analysis assistant. Say goodbye to complex SQL and Excel formulas. An LLM-powered data analysis agent. Chat with your data to instantly generate visualizations and business insights. Making>项目地址: https://gitcode.com/gh_mirrors/vi/Data-Analysis-Agent
Data-Analysis-Agent 是一个 LLM 驱动的私人数据分析助手:上传 Excel/CSV 文件,就能自动推荐图表并生成交互式可视化报表。而它"看懂"你数据的关键,是核心的数据画像模块 DataProfiler(位于 core/data_profiler.py)。这篇文章将详解它如何自动识别字段类型与数据特征,以及画像结果如何驱动智能图表推荐。
上传成功后会立即显示"6 行,3 列"——这正是数据画像的第一步产出
一、DataProfiler 是什么:数据画像的"感知层"
DataProfiler 的定位是Excel/CSV 数据结构感知层,一个独立模块、不与任何图表耦合。它的职责只有一件事:把原始数据"体检"一遍,输出标准的数据画像(profile)字典,供下游的推荐引擎和数据验证器使用。
它支持两种数据入口:
| 入口 | 方法 | 特点 |
|---|---|---|
| 文件路径 | load_file() | 自动识别 CSV 编码,Excel 可指定 sheet |
| DataFrame | load() | 直接接收内存数据,自动复制避免污染 |
针对中文用户最常见的"CSV 乱码"痛点,load_file 实现 会依次尝试utf-8-sig → gbk → gb2312 → latin1四种编码,哪个能读通就用哪个,基本做到了"拿到什么文件都能读"。
二、数据画像的 4 步流水线
1️⃣ 列类型推断:不止 7 种"聪明"分类
核心方法infer_column_type会把每一列归入 7 类之一:
| 类型 | 含义 | 典型例子 |
|---|---|---|
number | 数值 | 销量、金额 |
string | 文本 | 产品名、备注 |
datetime | 日期时间 | 下单日期 |
bool | 布尔 | 是否退货 |
id | 唯一标识 | 订单号、用户ID |
empty | 空列 | 全为空的列 |
mixed | 混合 | 无法归类的列 |
规则上还有几个很实用的细节(见 类型推断源码):
- 纯数字字符串也算数值:一列文本若 80% 以上能转成数字,直接判定为
number——Excel 里存成文本的数字由此"复活"; - 高唯一性文本自动识别为 ID:唯一值占比 >90% 且超过 20 个不同值的列(如订单号)判定为
id,避免被误当成分类维度; - 列名即线索:列名含
date/日期/时间等关键词时,即使是数字类型也推断为时间戳(如20260101)。
2️⃣ 逐列统计:给每列建一份"小档案"
column_stats 方法 为每一列计算:非空/空值数、缺失率、唯一值数;数值列还会给出 min/max/mean/median/sum;文本列则提取 Top 5 高频值和平均长度。这些统计量是后续"数据质量预警"的原料。
3️⃣ 语义列识别:地理、时间、层级、流向
profile() 方法 会扫描列名关键词,额外标记出几组"语义列":
- geo_cols:含
lat/lon/经度/纬度/省/城市/国家等 → 可画地图类图表 - time_cols:含
date/时间/年/月等 → 可画趋势类图表 - has_hierarchy:出现
parent/child/path/层级→ 可画旭日图、树图 - has_flow:同时存在
source和target列 → 可画桑基图、弧图
4️⃣ 输出标准画像
最终 profile 字典包含:行列规模、各类型列清单、can_aggregate(是否有可聚合的数值列)、每列前 3 个示例值、全部列统计。这份字典就是整个系统"读懂数据"的结论,一次计算、全链路复用。
三、画像结果的三大消费者
DataProfiler 的价值在于"一次画像,三处使用":
📌规则推荐引擎:RuleRecommender 直接消费 profile,用确定性规则匹配图表——例如"source+target+数值列 → 桑基图"、"地理列≥2+数值 → 地图"、"时间列+数值 → 折线图"、"仅 1 个数值列 → 直方图"。没有配置 LLM 时也能离线出推荐。
📌LLM 推荐:llm_recommender 构建提示词 时,把行数、数值列、文本列等画像特征填入 prompt,让大模型基于真实数据特征而非猜测来推荐图表,再经白名单校验剔除幻觉结果。
📌数据验证器:DataValidator 基于统计量检测高缺失率、异常值等问题,在生成图表前预警数据质量风险。
基于数据画像,系统自动给出"五星推荐 桑基图"及完整的字段映射理由
四、suggest_mapping:列名到图表角色的自动映射
suggest_mapping 方法 内置了一份中英文"角色线索表":source对应起点/from,lat/lon对应经纬度,省/城市对应地理字段,开盘/收盘/成交量对应 K 线图字段……
拿到上传的数据后,它直接告诉你"这一列适合当 X 轴、那一列适合当 Y 轴、这一列是分组系列",把用户手动拖拽字段的工作省掉——这也是界面上生成图表时可以一键确认映射的原因。
选择推荐图表并确认映射后,一键生成交互式 HTML 图表并支持下载
五、写在最后
DataProfiler 的设计哲学可以概括为三点:
- 独立解耦:画像模块只负责"感知",不与图表实现耦合,新增 40+ 种图表无需改动它;
- 规则兜底 + LLM 增强:离线规则保证可用性,LLM 画像提示词提升推荐精度;
- 面向真实脏数据:编码容错、文本数字识别、ID 判定,处处为中文 Excel 数据"打补丁"。
想动手体验?先阅读 README 完成安装,再配合 charts/registry.py 了解图表注册机制,就能完整走通"上传 → 画像 → 推荐 → 生成"的全流程。🚀
【免费下载链接】Data-Analysis-Agent🚀你的私人数据分析助手。通过对话式交互,自动生成可视化报表与商业洞察,让数据决策变得像聊天一样简单。 🚀 Your personal data analysis assistant. Say goodbye to complex SQL and Excel formulas. An LLM-powered data analysis agent. Chat with your data to instantly generate visualizations and business insights. Making>项目地址: https://gitcode.com/gh_mirrors/vi/Data-Analysis-Agent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考