繁体   English   中英

从CSV文件获取平均值到列表中

[英]Getting averages into a list from a csv file

import matplotlib
import csv

下面的csv文件是很多年的DBH

f = open("Species.csv")

reader = csv.reader(f)

------初始化------

y1974 = []

y1983 = []

y1987 = []

y1989 = []

y1994 = []

y1999 = []

y2004 = []

y2009 = []

y2014 = []


dbhByYear = [y1974, y1983, y1987, y1989, y1994, y1999, y2004, y2009, y2014]



def average(alist):
    sum = 0
    for item in alist:
        sum += float(item)
    avg = sum / len(alist)
    return avg

这允许用户输入特定种类的树以查看

species = input("Enter abbreviation for species you would like to analyze: ")

这将删除文件中的“ 999”

for row in reader:
    if row[4] == species:
        if row[6]!='999':
            y1974.append(row[6])
        if row[7] != '999':
            y1983.append(row[7])
        if row[9] != '999':
            y1987.append(row[9])
        if row[11] != '999':
           y1989.append(row[11])
        if row[13] != '999':
           y1994.append(row[13])
        if row[15] != '999':
           y1999.append(row[15])
        if row[18]!= '999':
           y2004.append(row[18])
        if row[20] != '999':
           y2009.append(row[20])
        if row[23] != '999':
           y2014.append(row[23])

这些打印出每年的平均DBH

 print(average(y1989))
 print(average(y1994))

这是我用来获取字典的功能

 averages = {}
 averages["y1989"]=average

我的问题是如何创建以年为关键字,以平均DBH为值的字典。

如果有人感到困惑(我敢打赌,人们会对我们正在尝试做的事情感到困惑),请让我知道,我会尽力解决您可能遇到的问题。

好的! 您的最后编辑显示了您出了错的确切位置! average是一个函数,因此将其分配给字典键不会将该函数应用于该字典键,但从本质上讲,是“重命名”该函数(虽然有点掩饰,但与您的问题无关)。

因此,要使其按预期方式工作,您需要将最后一行更改为:

averages["y1989"]=average(y1989)

就像您在上面的打印语句中所做的一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM