考虑以下简短的 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的原样并进行分析吗?

推荐答案

object是模糊的,您可能有一个对象列,其中只有integer.sweetviz似乎正在进行一些"智能"判断来try 验证/推断dtypes.

我建议明确转换为类别:

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()

Python相关问答推荐

情节生成的饼图文本超出页面边界

添加包含中具有任何值的其他列的计数的列

无法使用equals_html从网址获取全文

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

如何将双框框列中的成对变成两个新列

带条件计算最小值

需要计算60,000个坐标之间的距离

_repr_html_实现自定义__getattr_时未显示

发生异常:TclMessage命令名称无效.!listbox"

用Python解密Java加密文件

如何使用数组的最小条目拆分数组

"使用odbc_connect(raw)连接字符串登录失败;可用于pyodbc"

Streamlit应用程序中的Plotly条形图中未正确显示Y轴刻度

将输入聚合到统一词典中

删除marplotlib条形图上的底边

Polars asof在下一个可用日期加入

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

Cython无法识别Numpy类型

根据客户端是否正在传输响应来更改基于Flask的API的行为

GPT python SDK引入了大量开销/错误超时