配置 Sweetviz 无需转换即可分析对象类型列

问题描述 投票:0回答:1

考虑以下简短的数据框示例:

df =  pd.DataFrame({'column1': [2, 4, 8, 0],
                   'column2': [2, 0, 0, 0],
                   'column3': ["test", 2, 1, 8]})

df.dtypes 显示列的数据类型为:

column1     int64
column2     int64
column3    object

现在我想在这个数据集上运行 sweetviz 以获取有关列及其数据的报告:

report = sv.analyze(df)
report.show_notebook()

问题是,Sweetviz 似乎意识到我的 column3 主要是数字,即使它是对象类型。现在它不生成报告,而是给出以下建议:

     Convert series [column3] to a numerical value (if makes sense):
     One way to do this is:
     df['column3'] = pd.to_numeric(df['column3'], errors='coerce')

不幸的是,这不是一个选项,因为我希望报告也突出显示数据中误用的列,所以我想将该列视为对象,即使只有一小部分值不是数字。

我已经尝试过 sweetviz 允许的参数:

feature_config = sv.FeatureConfig(force_text=['column3'])
report = sv.analyze(df)
report.show_notebook()

例如,我希望使用此配置的 sweetviz 将 column3 视为文本并忽略在 sweetviz 中实现的类型检测。

不幸的是,我得到了相同的建议,将列转换为数字并将字符串值转换为 NaN。

我还尝试了column3skip、force_cat、force_num的其他可能参数。 force_cat、force_num 根本没有帮助导致相同的结果。 Skip 将第 3 列排除在报告中,这也不是解决方案。

有什么方法可以强制sweetviz保留对象类型的column3并对其进行分析吗?

python pandas dataframe
1个回答
0
投票

object
是不明确的,你可以有一个对象列,并且其中只有整数。

我建议显式转换为类别或字符串:

import sweetviz as sv

report = sv.analyze(df.astype({'column3': 'category'}))
report.show_notebook()
import sweetviz as sv

report = sv.analyze(df.astype({'column3': 'str'}))
report.show_notebook()
© www.soinside.com 2019 - 2024. All rights reserved.