fg-data-profiling:一行代码搞定数据探索
fg-data-profiling:一行代码搞定数据探索
fg-data-profiling 在 GitHub 上拿到 13,576 Star,月下载量过百万。它的前身是知名的 pandas-profiling,近期完成了从 ydata-profiling 到 fg-data-profiling 的品牌更名。
这个工具解决了一个高频痛点:数据分析师拿到一张陌生表,想知道数据质量怎么样、分布是否有偏、哪些列存在缺失、变量之间相关性如何。以前要写十几行 matplotlib 和 pandas 代码,现在一行就够了。
1、能做什么
用过 pandas 的人都熟悉 df.describe(),几行基础统计量,够用但远不够全面。fg-data-profiling 可以理解为 df.describe() 的超级加强版。
只需要一行 ProfileReport(df),它会自动扫描整张 DataFrame:每列的数据类型自动判定、缺失值数量和比例、分布直方图、相关性热力图、重复行检测。时间序列数据还能跑自相关分析和季节性检测,文本列会做编码和脚本识别,图像文件能查尺寸和 EXIF 元数据。

2、核心功能清单
类型推断:自动识别 Categorical、Numerical、Date、URL 等列类型,不用手动指定 dtypes。
告警系统:自动排查缺失数据、偏度异常、零值占比过高、常量列、高相关性、均匀分布等常见数据质量问题。
单变量分析:均值、中位数、众数、分位数等统计量加上交互式分布直方图。
多变量分析:相关性矩阵、缺失数据模式分析、变量两两交互的可视化支持。
时间序列:自相关和偏自相关(ACF/PACF)图、季节性检测。
文本分析:大写、小写、分隔符统计,拉丁文、西里尔文等脚本和 ASCII、Cyrillic 等编码块识别。
文件与图像:文件大小、创建日期、图像尺寸、截断检测、EXIF 元数据。
数据集对比:两份 DataFrame 扔进去,差异报告自动生成,适合对比预处理前后的数据变化。

输出格式方面,HTML 报告方便分享给业务方,JSON 格式对接自动化 pipeline,Jupyter Notebook widget 模式直接在笔记本里交互式浏览。Spark 数据集也支持,大数据 profiling 可以跑在集群上。
3、报告包含什么
生成的 HTML 报告有三个固定板块。Overview 展示数据集全局信息:记录总数、变量数、整体缺失率和重复率、内存占用。Alerts 是自动生成的数据质量告警列表,按严重程度排序,告诉你哪些列需要关注。Reproduction 记录分析参数:时间戳、版本号、配置文件,方便后续复现。
4、安装使用
pip install fg-data-profiling
基础用法:
from data_profiling import ProfileReport
import pandas as pd
df = pd.read_csv("your_data.csv")
profile = ProfileReport(df, title="数据分析报告")
profile.to_file("report.html")
命令行模式也支持,直接对标准 CSV 生成报告文件:
data_profiling --title "项目数据分析" data.csv report.html
项目已从 ydata-profiling 更名为 fg-data-profiling,import 路径从 ydata_profiling 变更为 data_profiling。如果你在旧项目里用过,记得更新依赖和 import 语句。
5、适用场景
数据分析师接到"帮我看看这份数据有什么问题"的需求,用它能在一个 HTML 报告里覆盖 80% 的初步探索工作,不用在 notebook 里反复写 df.info()、df.describe()、sns.heatmap()。
数据工程师搭数据质量监控 pipeline,JSON 格式的输出可以直接接入 Airflow、Kedro 等调度工具,每次数据入库自动生成 profile 存档。
Jupyter Notebook 重度用户可以直接用 widget 模式,交互式浏览报告内容,不需要跳出 notebook 环境。
做时间序列分析的人,自相关和季节性检测是内置功能,不需要额外引入 statsmodels 自己画 ACF 图。
浙公网安备 33010602011771号