关于pandas-profiling的降级之旅
作者:芊欣欲
背景
做EDA分析,想要利用pandas-profling的集成工具,实现一键EDA自动化流程。
而pandas-profiling是python封装好的库,能够使用DataFrame自动生成数据的详细报告并能自动生成网页进行可视化。
但理想和现实总是有差距,这个过程出现了很多error,主要原因都是由pandas-profiling的版本与环境不兼容导致的,谨以此文记入这些error和解决办法供大家参考。
[Pandas-profiling] ImportError: cannot import name ‘ABCIndexClass’ from ‘pandas.core.dtypes.generic’
这是在安装后的第一个报错,发生于import pandas语句。
经过调研,发现该问题是由于pip安装时,会安装pandas-profiling的最新版,但是:
Pandas v1.3 renamed the ABCIndexClass to ABCIndex.
The visions dependency of the pandas-profiling package hasn’t caught up yet, and so throws an error when it can’t find ABCIndexClass.
即pandas已经升级了,但是pandas-profiling并没升级,它们两个中的同一个类有不同的类名对不上,所以出现了这个报错。
解决办法
Downgrading pandas to the 1.2.x series will resolve the issue.
我重新安装了1.2.0版本的pandas-profiling包
module ‘pandas.core.common’ has no attribute ‘is_numeric_dtype’
这个时候import pandas-profiling不会再出现报错了,可是report=ProfilieReport(df)这一步时会出现新的报错。
经过调研,发现该问题是由于:
pandas.core.common.is_numeric_dtype was removed in 0.23.
总的来说还是pandas的版本太高了,有两种解决办法:
- 一种就是降低pandas的等级至0.22
- 另一种就是自己重新配置一下pandas(不建议)。
代码
from pandas_profiling import ProfileReport report=ProfileReport(df) report.to_file(output_file='output.html')
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。