【问题标题】:Open an arff file with scipy.io使用 scipy.io 打开一个 arff 文件
【发布时间】:2020-10-20 12:35:29
【问题描述】:

我正在尝试加载 arff 文件并将数据转换为 pandas 数据框。数据可在UCI 获得,但是,当我这样做时:

import numpy as np
import pandas as pd
from scipy.io import arff


dataframe, meta = arff.loadarff('chronic_kidney_disease.arff')

dataframe = pd.DataFrame(dataframe)

dataframe.head()

我收到以下错误:

ValueError:  yes value not in ('yes', 'no')

如何加载 arff 文件并将数据转换为数据帧?

【问题讨论】:

  • 你找到解决办法了吗?
  • 已找到解决方案并在下方发布。
  • @Raj 我提供了完整的代码来轻松读取数据。
  • 谢谢@MaryamBahrami

标签: python pandas arff


【解决方案1】:

如果你想直接从UCI读取数据集,我建议如下:

import pandas as pd

data = []
with open('chronic_kidney_disease_full.arff', "r") as f:
    for line in f:
        line = line.replace('\n', '')
        data.append(line.split(','))


names = ['age', 'bp', 'sg', 'al', 'su', 'rbc', 'pc', 'pcc', 'ba',
         'bgr', 'bu',  'sc', 'sod', 'pot', 'hemo', 'pcv', 'wbcc',
         'rbcc', 'htn', 'dm', 'cad', 'appet', 'pe', 'ane',
         'class', 'no_name']
    
df = pd.DataFrame(data[145:], columns=names)

您还可以在Kaggle 中找到.csv 数据。 Here,你可以下载kidney_disease.csv,也是一样的数据。

【讨论】:

    【解决方案2】:

    数据集'chronic_kidney_disease.arff'存在以下问题。

    1. 它包含选项卡。
    2. 两个元组中有异常。其中一个有额外的空间,另一个有一个额外的“,”。

    要通过 loadarff 读取 arff 文件,请执行以下操作

    1. 将所有选项卡替换为空。任何富文本编辑器都可以通过简单的查找和替换快速完成。我使用 Notepad++ 来做到这一点。
    2. 在文件的第 60 行,值“yes”前面有一个额外的空格。这需要删除。
    3. 在文件的第 399 行,有一个额外的 ','。这也需要删除。

    完成上述更正后,文件通过 loadarff 加载正常。

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 2020-12-19
      • 2020-06-04
      • 2017-06-16
      • 2013-12-09
      • 2012-04-08
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多