1. 背景
那么可能首先得唠一唠这个库,我记得最早还是叫pandas-profiling
后来貌似在 23 年 4 月份更名为ydata-profiling
,具体情况不知道
大概是之前做某个东西的时候,需要改一下这个库,给的需求的是:
-
汉化翻译,报告结构到图片坐标再到鼠标悬停的提示,都搞成中文
-
优化结构,增加分析项目,扩大数据展示规模
-
提升速度,大幅砍掉变量交互信息的计算,跳过变量类型推断
那,接下来就按照上面的展开吧
2. 汉化
首先是汉化翻译,这一块主要是更改HTML
模板
它这个模式,感觉就是jinja2
那种,把数据填充到预设的模板里面
文件的大概路径是在:
ydata-profiling-develop\src\ydata_profiling\report\presentation\flavours\html\templates
这里面有一堆乱七八遭的东西
一部分单词在这里,还有一部分在其他地方,可以通过VS Code
根据关键词快速搜索:
后面遇到什么奇奇怪怪的,没有被翻译到的单词,都可以通过这种方式来定位,然后再进行翻译
3. 改版
3.1. 旧有
这一块主要是调整文档的结构,一些地方可以通过调整设置来进行更改,可以参考这个6
主要是更改Yaml
文件里面的设置,或者直接新建一个,然后使用这个新的配置文件
配置文件的使用在这里:
D:\Software\Projects\ydata-profiling-develop\src\ydata_profiling\profile_report.py
ProfileReport
类初始化的时候会传入一个config
参数作为配置文件的路径
看起来似乎默认使用的是这个文件:
D:\Software\Projects\ydata-profiling-develop\src\ydata_profiling\config_minimal.yaml
3.2. 新增
如果要增加一些版面的话,就得看一下它的结构了
我的感觉大概是,首先是这个文件:
D:\Software\Projects\ydata-profiling-develop\src\ydata_profiling\profile_report.py
毕竟被调用的类就在这里面写着,然后这里面的某一个主部分是是report
函数,大概是由它返回整个报告:
@property
def report(self) -> Root:
if self._report is None:
self._report = get_report_structure(self.config, self.description_set)
return self._report
在这里面调用了get_report_structure
来形成结构,传入的self.config
参数是配置文件,而self.description_set
就是这个数据集的描述数据,使用这些数据就可以生成一份分析报告
所以如果要增加模块的话,首先要确保self.description_set
里面有新模块的数据,也就是说新模块的计算过程要放在生成self.description_set
的地方,也就是这里
D:\Software\Projects\ydata-profiling-develop\src\ydata_profiling\model\describe.py
除此之外,还要对新模块的展示创建代码,主要是在get_report_structure
部分,看那里面是如何把数据填充到HTML
里面的,当然新模块对应的HTML
文件也是需要新建的。
4. 优化
类型推断什么的,其实是可以在YAML
设置文件调整的,比如说:
# infer dtypes
infer_dtypes: false
要砍掉一些模块的话,其实和上面调整版本的部分差不多:
-
首先要删去计算过程,也就是
self.description_set
的生成过程那里,注释掉相关的代码 -
然后是删去展示结构,也就是
get_report_structure
部分
5. 安装
改完乱七八遭的东西之后,就可以安装了,官方文档给的是:
pip install -e .
记得我之前的操作好像还是:
python setup.py build
python setup.py install
pandas_profiling报错,使用新版ydata_profiling_pandas profiling包换名字了-CSDN博客 ↩︎
GitHub - ydataai/ydata-profiling at 35cb5b9c9bb7919ada09b11b7bc7248cab5804f4 ↩︎
数据集分析工具pandas-profiling进阶:个性化定制配置文件与参数_pandas_profiling如何改bins-CSDN博客 ↩︎
python setup.py install/build 与 python setup.py develop的区别 (python setup.py build_ext --inplace)-CSDN博客 ↩︎