【问题标题】:How to check a column of a csv file and add data from another column to a list?如何检查 csv 文件的列并将另一列中的数据添加到列表中?
【发布时间】:2020-11-11 07:54:00
【问题描述】:

如果问题不是很清楚,我深表歉意。我对阅读/分析 csv 文件非常陌生,我的任务是通过检查最后一列并从另一列添加其值来创建一个列表。

我需要从第 2 列收集值并根据第 4 列的值将它们添加到列表中。

第 4 列有三个不同的“物种”(iris-setosa、iris-virginica、iris-versicolor),每个都与第 2 列中的 50 个值相关联。我只需要关注 iris-setosa 和 iris-virginica。

文件已经排序,所以我可以打印一些我期望的东西,但是我很难找到正确的方法来做这件事,以便我以后可以关联数据。

这就是我目前所拥有的......

任何指导或帮助将不胜感激。

import csv
def makeDataList(dataName):
    inFile = open("Iris.csv", 'r')
    dataList = []

    csvReader = csv.reader(inFile)    
    titles = next(csvReader)      

    colNum = 0
    while colNum < len(titles) and titles[colNum] != dataName:
        colNum = colNum + 1

    if colNum == len(titles):        
        print("Error:", dataName, "not found.")
    else:
        dataList = [float(line[colNum]) for line in csvReader]
            
    return dataList


setosaList = makeDataList("PetalLengthCm")
print("setosa petal length: ")
for i in range(50):
    print(setosaList[i],end=" ")

print()

virginicaList = makeDataList("PetalLengthCm")
print("Virginica petal length: ")
for i in range(100,150):
    print(virginicaList[i],end=" ")

输出:

setosa petal length: 
1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 1.4 1.1 1.2 1.5 1.3 1.4 1.7 1.5 1.7 1.5 1.0 1.7 1.9 1.6 1.6 1.5 1.4 1.6 1.6 1.5 1.5 1.4 1.5 1.2 1.3 1.5 1.3 1.5 1.3 1.3 1.3 1.6 1.9 1.4 1.6 1.4 1.5 1.4 
Virginica petal length: 
6.0 5.1 5.9 5.6 5.8 6.6 4.5 6.3 5.8 6.1 5.1 5.3 5.5 5.0 5.1 5.3 5.5 6.7 6.9 5.0 5.7 4.9 6.7 4.9 5.7 6.0 4.8 4.9 5.6 5.8 6.1 6.4 5.6 5.1 5.6 6.1 5.6 5.5 4.8 5.4 5.6 5.1 5.1 5.9 5.7 5.2 5.0 5.2 5.4 5.1

预期输出:

setosa petal length: [1.4, 1.4, 1.3, 1.5, 1.4, 1.7,...]
Virginica petal length: [6.0, 5.1, 5.9, 5.6, 5.8, 6.6,...]

明文文件:

SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species         
5.1           3.5          1.4           0.2          Iris-setosa     
4.9           3.0          1.4           0.2          Iris-setosa     
4.7           3.2          1.3           0.2          Iris-setosa     
4.6           3.1          1.5           0.2          Iris-setosa     
5             3.6          1.4           0.2          Iris-setosa     
5.4           3.9          1.7           0.4          Iris-setosa     
4.6           3.4          1.4           0.3          Iris-setosa     
5             3.4          1.5           0.2          Iris-setosa     
4.4           2.9          1.4           0.2          Iris-setosa     
4.9           3.1          1.5           0.1          Iris-setosa     
5.4           3.7          1.5           0.2          Iris-setosa     
4.8           3.4          1.6           0.2          Iris-setosa     
4.8           3            1.4           0.1          Iris-setosa     
4.3           3            1.1           0.1          Iris-setosa     
5.8           4            1.2           0.2          Iris-setosa     
5.7           4.4          1.5           0.4          Iris-setosa     
5.4           3.9          1.3           0.4          Iris-setosa     
5.1           3.5          1.4           0.3          Iris-setosa     
5.7           3.8          1.7           0.3          Iris-setosa     
5.1           3.8          1.5           0.3          Iris-setosa     
5.4           3.4          1.7           0.2          Iris-setosa     
5.1           3.7          1.5           0.4          Iris-setosa     
4.6           3.6          1             0.2          Iris-setosa     
5.1           3.3          1.7           0.5          Iris-setosa     
4.8           3.4          1.9           0.2          Iris-setosa     
5             3            1.6           0.2          Iris-setosa     
5             3.4          1.6           0.4          Iris-setosa     
5.2           3.5          1.5           0.2          Iris-setosa     
5.2           3.4          1.4           0.2          Iris-setosa     
4.7           3.2          1.6           0.2          Iris-setosa     
4.8           3.1          1.6           0.2          Iris-setosa     
5.4           3.4          1.5           0.4          Iris-setosa     
5.2           4.1          1.5           0.1          Iris-setosa     
5.5           4.2          1.4           0.2          Iris-setosa     
4.9           3.1          1.5           0.1          Iris-setosa     
5             3.2          1.2           0.2          Iris-setosa     
5.5           3.5          1.3           0.2          Iris-setosa     
4.9           3.1          1.5           0.1          Iris-setosa     
4.4           3            1.3           0.2          Iris-setosa     
5.1           3.4          1.5           0.2          Iris-setosa     
5             3.5          1.3           0.3          Iris-setosa     
4.5           2.3          1.3           0.3          Iris-setosa     
4.4           3.2          1.3           0.2          Iris-setosa     
5             3.5          1.6           0.6          Iris-setosa     
5.1           3.8          1.9           0.4          Iris-setosa     
4.8           3            1.4           0.3          Iris-setosa     
5.1           3.8          1.6           0.2          Iris-setosa     
4.6           3.2          1.4           0.2          Iris-setosa     
5.3           3.7          1.5           0.2          Iris-setosa     
5             3.3          1.4           0.2          Iris-setosa     
7             3.2          4.7           1.4          Iris-versicolor 
6.4           3.2          4.5           1.5          Iris-versicolor 
6.9           3.1          4.9           1.5          Iris-versicolor 
5.5           2.3          4             1.3          Iris-versicolor 
6.5           2.8          4.6           1.5          Iris-versicolor 
5.7           2.8          4.5           1.3          Iris-versicolor 
6.3           3.3          4.7           1.6          Iris-versicolor 
4.9           2.4          3.3           1            Iris-versicolor 
6.6           2.9          4.6           1.3          Iris-versicolor 
5.2           2.7          3.9           1.4          Iris-versicolor 
5             2            3.5           1            Iris-versicolor 
5.9           3            4.2           1.5          Iris-versicolor 
6             2.2          4             1            Iris-versicolor 
6.1           2.9          4.7           1.4          Iris-versicolor 
5.6           2.9          3.6           1.3          Iris-versicolor 
6.7           3.1          4.4           1.4          Iris-versicolor 
5.6           3            4.5           1.5          Iris-versicolor 
5.8           2.7          4.1           1            Iris-versicolor 
6.2           2.2          4.5           1.5          Iris-versicolor 
5.6           2.5          3.9           1.1          Iris-versicolor 
5.9           3.2          4.8           1.8          Iris-versicolor 
6.1           2.8          4             1.3          Iris-versicolor 
6.3           2.5          4.9           1.5          Iris-versicolor 
6.1           2.8          4.7           1.2          Iris-versicolor 
6.4           2.9          4.3           1.3          Iris-versicolor 
6.6           3            4.4           1.4          Iris-versicolor 
6.8           2.8          4.8           1.4          Iris-versicolor 
6.7           3            5             1.7          Iris-versicolor 
6             2.9          4.5           1.5          Iris-versicolor 
5.7           2.6          3.5           1            Iris-versicolor 
5.5           2.4          3.8           1.1          Iris-versicolor 
5.5           2.4          3.7           1            Iris-versicolor 
5.8           2.7          3.9           1.2          Iris-versicolor 
6             2.7          5.1           1.6          Iris-versicolor 
5.4           3            4.5           1.5          Iris-versicolor 
6             3.4          4.5           1.6          Iris-versicolor 
6.7           3.1          4.7           1.5          Iris-versicolor 
6.3           2.3          4.4           1.3          Iris-versicolor 
5.6           3            4.1           1.3          Iris-versicolor 
5.5           2.5          4             1.3          Iris-versicolor 
5.5           2.6          4.4           1.2          Iris-versicolor 
6.1           3            4.6           1.4          Iris-versicolor 
5.8           2.6          4             1.2          Iris-versicolor 
5             2.3          3.3           1            Iris-versicolor 
5.6           2.7          4.2           1.3          Iris-versicolor 
5.7           3            4.2           1.2          Iris-versicolor 
5.7           2.9          4.2           1.3          Iris-versicolor 
6.2           2.9          4.3           1.3          Iris-versicolor 
5.1           2.5          3             1.1          Iris-versicolor 
5.7           2.8          4.1           1.3          Iris-versicolor 
6.3           3.3          6             2.5          Iris-virginica  
5.8           2.7          5.1           1.9          Iris-virginica  
7.1           3            5.9           2.1          Iris-virginica  
6.3           2.9          5.6           1.8          Iris-virginica  
6.5           3            5.8           2.2          Iris-virginica  
7.6           3            6.6           2.1          Iris-virginica  
4.9           2.5          4.5           1.7          Iris-virginica  
7.3           2.9          6.3           1.8          Iris-virginica  
6.7           2.5          5.8           1.8          Iris-virginica  
7.2           3.6          6.1           2.5          Iris-virginica  
6.5           3.2          5.1           2            Iris-virginica  
6.4           2.7          5.3           1.9          Iris-virginica  
6.8           3            5.5           2.1          Iris-virginica  
5.7           2.5          5             2            Iris-virginica  
5.8           2.8          5.1           2.4          Iris-virginica  
6.4           3.2          5.3           2.3          Iris-virginica  
6.5           3            5.5           1.8          Iris-virginica  
7.7           3.8          6.7           2.2          Iris-virginica  
7.7           2.6          6.9           2.3          Iris-virginica  
6             2.2          5             1.5          Iris-virginica  
6.9           3.2          5.7           2.3          Iris-virginica  
5.6           2.8          4.9           2            Iris-virginica  
7.7           2.8          6.7           2            Iris-virginica  
6.3           2.7          4.9           1.8          Iris-virginica  
6.7           3.3          5.7           2.1          Iris-virginica  
7.2           3.2          6             1.8          Iris-virginica  
6.2           2.8          4.8           1.8          Iris-virginica  
6.1           3            4.9           1.8          Iris-virginica  
6.4           2.8          5.6           2.1          Iris-virginica  
7.2           3            5.8           1.6          Iris-virginica  
7.4           2.8          6.1           1.9          Iris-virginica  
7.9           3.8          6.4           2            Iris-virginica  
6.4           2.8          5.6           2.2          Iris-virginica  
6.3           2.8          5.1           1.5          Iris-virginica  
6.1           2.6          5.6           1.4          Iris-virginica  
7.7           3            6.1           2.3          Iris-virginica  
6.3           3.4          5.6           2.4          Iris-virginica  
6.4           3.1          5.5           1.8          Iris-virginica  
6             3            4.8           1.8          Iris-virginica  
6.9           3.1          5.4           2.1          Iris-virginica  
6.7           3.1          5.6           2.4          Iris-virginica  
6.9           3.1          5.1           2.3          Iris-virginica  
5.8           2.7          5.1           1.9          Iris-virginica  
6.8           3.2          5.9           2.3          Iris-virginica  
6.7           3.3          5.7           2.5          Iris-virginica  
6.7           3            5.2           2.3          Iris-virginica  
6.3           2.5          5             1.9          Iris-virginica  
6.5           3            5.2           2            Iris-virginica  
6.2           3.4          5.4           2.3          Iris-virginica  
5.9           3            5.1           1.8          Iris-virginica  

【问题讨论】:

  • edit您的问题,并用纯文本中该部分的实际内容替换csv文件部分内容的图像。
  • 您好!我尝试用纯文本复制它,然后添加了整个内容。
  • 这是数据的真实样子还是每行的列之间是否有逗号(或可能是制表符)?也不清楚你到底在问什么——你的问题是什么。您所说的“正确的方法,以便我以后可以关联数据”是什么意思?你现在的做法有什么问题?

标签: python python-3.x


【解决方案1】:

您想使用包 pandas (pip install pandas)。这有很多处理数据的功能,包括从 csv 文件中读取数据。 要读入数据,您可以使用

import pandas as  pd
iris_data = pd.read_csv("Iris.csv")

然后您可以使用iris_data["column_name"] 访问每一列。要获取物种为 iris-setosa 或 iris-virginica 的所有萼片长度,您可以使用

setosa_petal_length = iris_data["PetalLengthCm"][iris_data["species"]=="Iris-setosa"]
virginica_petal_length = iris_data["PetalLengthCm"][iris_data["species"]=="Iris-virginica"]

那里有很多关于 pandas 的入门教程,但 this one 是从 pandas 网站链接到的,或者您可以点击“入门”here

【讨论】:

    【解决方案2】:

    我会在这里使用熊猫。 但我注意到,您在数据中的间距已关闭。第一个间距是 11 个空格,然后是 10 个空格。这会搞砸一些事情。经典的 csv 只会用逗号分隔每个值或名称。比 pandas 会直接正确读取它。

    然后您可以尝试导入文件,然后手动设置字段:

    import pandas as pd
    fields=['SepalLengthCm','SepalWidthCm','PetalLengthCm','PetalWidthCm','Species']
    
    df=pd.read_csv('./test.csv', header=None, names=fields,sep='          ') #  Here the separators are not the same
    

    稍后您可以使用数据框,例如获取一列的所有值。

    newdf = df.set_index('Locality').T #Transpose the dataframe to make your species callable
    
    df.loc['Iris-setosa'].values.totlist() # GEt the values of all the string you are looking for. 
    

    由于分隔符关闭,我无法对此进行全面测试。我想你仍然需要调整它。但是red into pandas,你可以为所欲为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多