将数据帧导出到 arff 文件 python

exporting dataframe to arff file python

我正在尝试将 pandas 数据帧导出到 .arff 文件以在 Weka 中使用它。我已经看到模块 liac-arff can be used for that purpose. Going on the documentation here 似乎我必须使用 arff.dump(obj,fp) 虽然,我正在努力处理 obj (字典)我猜我必须自己创建它。你如何建议我正确地做到这一点?在一个大数据集(3 000 000 行和 95 列)中,是否有任何示例可以提供给我使用 python (v 2.7) 从 pandas 数据帧导出到 .arff 文件?

首先安装包: $ pip install arff

然后在Python中使用:

import arff
arff.dump('filename.arff'
      , df.values
      , relation='relation name'
      , names=df.columns)

其中 df 的类型为 pandas.DataFrame。瞧。

这就是我最近使用软件包 liac-arff 完成的方法。即使 arff 包更易于使用,它也不允许定义列类型和分类属性的值。

df = pd.DataFrame(...)
attributes = [(c, 'NUMERIC') for c in df.columns.values[:-1]]
attributes += [('target', df[t].unique().astype(str).tolist())]
t = df.columns[-1]
data = [df.loc[i].values[:-1].tolist() + [df[t].loc[i]] for i in range(df.shape[0])]

arff_dic = {
    'attributes': attributes,
    'data': data,
    'relation': 'myRel',
    'description': ''
}

with open("myfile.arff", "w", encoding="utf8") as f:
     arff.dump(arff_dic, f)

target 等分类属性的值必须是 str 类型,如果是数字则为 event。

受@M的回答启发。富兰克林,效果不是很好,但想法就在那里。

import arff

input // your DataFrame.
attributes = [(j, 'NUMERIC') if input[j].dtypes in ['int64', 'float64'] else (j, input[j].unique().astype(str).tolist()) for j in input]


arff_dic = {
  'attributes': attributes,
  'data': input.values,
  'relation': 'myRel',
  'description': ''
}


with open("myfile.arff", "w", encoding="utf8") as f:
  arff.dump(arff_dic, f)

按照上面的代码片段,它会输出一个具有所需格式的 arff 文件。祝大家好运!