考虑以下简短的 pyramid 示例:
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,以获取有关列及其数据的报告:
import sweetviz as sv
report = sv.analyze(df)
report.show_notebook()
问题是,Sweetviz似乎意识到我的专栏3主要是数字,尽管它是对象类型.现在它不再生成报告,而是给出以下建议:
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')
不幸的是,这不是一个选项,因为我希望报告还突出显示我的数据中被滥用的列,因此我希望将该列视为对象,即使只有一小部分值不是数字.
我try 过sweetviz允许的参数:
feature_config = sv.FeatureConfig(force_text=['column3'])
report = sv.analyze(df)
report.show_notebook()
例如,我希望具有此配置的sweetviz将专栏3视为文本,并忽略sweetviz中实现的类型检测.
不幸的是,我得到了同样的建议,即将列转换为数字并将字符串值转换为NaN.
我还try 了专栏3 skip、force_cat、force_num的其他可能参数. force_cat、force_num根本无助于导致相同的结果. 跳过在报告中遗漏了第3列,这也不是一个解决方案.
有什么方法可以迫使sweetviz保留对象类型列3的原样并进行分析吗?