将Iris(.data文件)拆分为列表列表

2024-05-28 19:19:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个编程新手,所以如果这个问题太简单,我会提前道歉,但我已经在网上到处找了,我还是不明白

我想和虹膜一起工作,显然我需要先把它分开

def ri(filename):
    linelist=list()
    with open (filename) as f:
        for line in f:
            linelist.append(line)
            return linelist
data=ri("iris.data")
print(data)

这是我第一次使用它,但我遇到的问题是,这段代码给了我一个字符串,但我需要一个数据点列表。虹膜的一个例子是5.7,3.8,1.7,0.3,虹膜刚毛,但它需要像这样=[[5.7],[3.8],[1.7],[0.3],[1]]

我搜索了所有东西,但什么也找不到

提前谢谢

编辑:文件如下所示

5.1,3.5,1.4,0.2,刚毛鸢尾

4.9,3.0,1.4,0.2,刚毛鸢尾

4.7,3.2,1.3,0.2,刚毛鸢尾

4.6,3.1,1.5,0.2,刚毛鸢尾

5.0,3.6,1.4,0.2,刚毛鸢尾

5.4,3.9,1.7,0.4,刚毛鸢尾

4.6,3.4,1.4,0.3,刚毛鸢尾

5.0,3.4,1.5,0.2,刚毛鸢尾

我的工作代码是这样的:但显然不是我想要它做的

def read_iris(filename):    
    f=open("iris.data", "r")
        if f.mode == 'r':
            x =f.readlines()
        return x
data = read_iris("iris.data")
print(data)

>> ['5.1,3.5,1.4,0.2,Iris-setosa\n', '4.9,3.0,1.4,0.2,Iris-setosa\n', '4.7,3.2,1.3,0.2,Iris-setosa\n', '4.6,3.1,1.5,0.2,Iris-setosa\n', '5.0,3.6,1.4,0.2,Iris-setosa\n', '5.4,3.9,1.7,0.4,Iris-setosa\n', '4.6,3.4,1.4,0.3,Iris-setosa\n', '5.0,3.4,1.5,0.2,Iris-setosa\n',

Tags: irisdatareturndeflineopenfilenameprint
2条回答

你考虑过使用pandas吗?如果你使用表格数据,用手来做是没有意义的

import pandas as pd

df = pd.read_csv("iris.data", header=None)

print(df[df.columns[:-1]].values)

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]
 [5.4 3.9 1.7 0.4]
 [4.6 3.4 1.4 0.3]
 [5.  3.4 1.5 0.2]]

要获得想要的结果,可以使用以下脚本:

def ri(filename):
    linelist=list()
    with open (filename) as f:
        for line in f:
            row_list = list()
            for element in line.split(','):
                element_list = list()
                if element.isalpha():
                    element_list.append(element)
                    row_list.append(element_list)
                else:
                    element_list.append(float(element))
                    row_list.append(element_list)
            linelist.append(row_list)
    return linelist

data=ri("iris.data")
print(data)

相关问题 更多 >

    热门问题