配置 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

显然,column3 是对象类型,因为它内部有混合类型的值。

现在我想在此示例数据集上运行 sweetviz 以生成有关列及其数据的报告:

import sweetviz as sv
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原样并进行分析吗?有人可以确认这是 Sweetviz 的一个功能来检查列值数据类型吗?

python pandas dataframe object types
1个回答
3
投票

object
是不明确的,你可以有一个对象列,并且其中只有整数。 sweetviz 似乎正在做一些“智能”检查来尝试验证/推断数据类型。

我建议明确转换为类别:

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.