考虑以下简短的数据帧示例:
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似乎意识到我的column3主要是数字,尽管它是object类型的。现在它不是生成报告,而是给出以下建议:
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视为文本,并忽略在sweetvi兹中实现的类型检测。
不幸的是,我得到了同样的建议,将列转换为数字,并将字符串值转换为NaN。
我还尝试了column3 skip、force_cat、force_num的其他可能参数。
force_cat、force_num对导致相同结果毫无帮助。
Skip在报告中省略了第3列,这也不是一个解决方案。
有什么方法可以迫使sweetviz保持对象类型column3的原样并对其进行分析?